Whamcloud - gitweb
Avoid some potential inode cache coherency problem caused by using the
authorTheodore Ts'o <tytso@mit.edu>
Fri, 24 Dec 2004 02:49:05 +0000 (21:49 -0500)
committerTheodore Ts'o <tytso@mit.edu>
Fri, 24 Dec 2004 02:49:05 +0000 (21:49 -0500)
byte-swapping options to e2fsck.  This was the cause of some hard to
reproduce problems that had been reported in the past, and which the
resize_inode changes tickled in a much more repeatable fashion.

e2fsck/ChangeLog
e2fsck/swapfs.c
lib/ext2fs/ChangeLog
lib/ext2fs/inode.c

index 78be211..d6df0ec 100644 (file)
@@ -1,3 +1,9 @@
+2004-12-23  Theodore Ts'o  <tytso@mit.edu>
+
+       * swapfs.c (swap_inodes): Since swap_inodes bypasses the inode
+               cache for speed reasons, we must flush it to avoid cache
+               coherency problems.
+
 2004-12-16  Theodore Ts'o  <tytso@mit.edu>
 
        * super.c (check_super_block): If the resize_inode feature is not
index 3e7609b..8d46404 100644 (file)
@@ -182,6 +182,7 @@ static void swap_inodes(e2fsck_t ctx)
        ext2fs_free_mem(&buf);
        ext2fs_free_mem(&block_buf);
        e2fsck_use_inode_shortcuts(ctx, 0);
+       ext2fs_flush_icache(fs);
 }
 
 #if defined(__powerpc__) && defined(EXT2FS_ENABLE_SWAPFS)
index f2ce518..3d8f435 100644 (file)
@@ -1,5 +1,8 @@
 2004-12-23  Theodore Ts'o  <tytso@mit.edu>
 
+       * inode.c (ext2fs_flush_icache): When flushing the icache, clear
+               the last-read block information as well.
+
        * ext2fs.h (BMAP_SET), bmap.c (ext2fs_bmap): Add support for new
                flag, BMAP_SET, which allows the caller to set a
                particular logical->physical block mapping.
index a1179d2..d0de254 100644 (file)
@@ -63,6 +63,7 @@ errcode_t ext2fs_flush_icache(ext2_filsys fs)
        for (i=0; i < fs->icache->cache_size; i++)
                fs->icache->cache[i].ino = 0;
 
+       fs->icache->buffer_blk = 0;
        return 0;
 }