boot2 - Fix ufs inode cache corruption when ESC'ing out of boot2
authorMatthew Dillon <dillon@apollo.backplane.com>
Mon, 15 Feb 2010 21:43:27 +0000 (13:43 -0800)
committerMatthew Dillon <dillon@apollo.backplane.com>
Mon, 15 Feb 2010 21:43:27 +0000 (13:43 -0800)
* Increase boot2_dmadat->secbuf[] from 512 to 2K to cover the
  disklabel64.

* ufs_init() needs to reset its inode cache

Submitted-by: Johannes Hofmann <johannes.hofmann@gmx.de>
sys/boot/common/boot2.h
sys/boot/common/ufsread.c

index ddd9299..622ef50 100644 (file)
@@ -65,8 +65,12 @@ struct boot2_fsapi {
        ssize_t (*fsread)(boot2_ino_t, void *, size_t);
 };
 
+/*
+ * secbuf needs to be big enough for the label reads
+ * (32 and 64 bit disklabels).
+ */
 struct boot2_dmadat {
-       char    secbuf[DEV_BSIZE];
+       char    secbuf[DEV_BSIZE*4];
        /* extended by *fsread() modules */
 };
 
index 6b94600..8e4c5c5 100644 (file)
@@ -166,6 +166,7 @@ boot2_ufs_init(void)
        struct fs *fs;
        size_t n;
 
+       inomap = 0;
        fs = (struct fs *)fsdmadat->sbbuf;
 
        for (n = 0; sblock_try[n] != -1; n++) {