Avoid some potential inode cache coherency problem caused by using the

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.
This commit is contained in:
Theodore Ts'o 2004-12-23 21:49:05 -05:00
parent 08fd3f36c3
commit 71669d0541
4 changed files with 11 additions and 0 deletions

View 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

View 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)

View 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.

View 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;
}