]> git.ipfire.org Git - thirdparty/e2fsprogs.git/commitdiff
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 78be211fe2216f1887aa972a878d9f6f4ee6ec82..d6df0eca3324e963f28ee3a464139090090c80b4 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 3e7609b20e05daedf5f69a2327e8b6cb781fb959..8d464043a2e3586da9732ed013b548fc5de0909d 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 f2ce518d796d7eeb9ceb6793fa488a9aa65ae226..3d8f435374255e4bfe84ef29b674f40373bb6e41 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 a1179d271c9e92494e57b007832d6546def4261c..d0de254b06c2e2949fbfe8d472a91ae9242cfb34 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;
 }