move sync_supers to end of sync functions
PATCH 1/1 move sync_supers to end of sync functions
Alan, Linus,
the following patch ensures that write_super() or sync_supers() is called _after_ other filesystem I/O is completed. The current order means that a superblock could be dirtied by other filesystem I/O after the superblock has been "synced". This has been part of the ext3 patches for a long time, but should really be done in the stock kernel sources as well.
Cheers, Andreas
========================================================================
fs/buffer.c +3 -3
@@ -310,11 +312,11 @@lock_kernel ();sync_inodes_sb (sb); +DQUOT_SYNC (dev);lock_super (sb);if (sb->s_dirt && sb->s_op && sb->s_op->write_super) sb->s_op->write_super (sb);unlock_super (sb); -DQUOT_SYNC (dev);unlock_kernel ();return sync_buffers (dev,1 );
@@ -325,9 +327,9 @@sync_buffers (dev,0 );lock_kernel (); -sync_supers (dev);sync_inodes (dev);DQUOT_SYNC (dev); +sync_supers (dev);unlock_kernel ();return sync_buffers (dev,1 );
@@ -2608,8 +2693,8 @@static int sync_old_buffers (void ) {lock_kernel (); -sync_supers (0 );sync_unlocked_inodes (); +sync_supers (0 );unlock_kernel ();flush_dirty_buffers (1 );
Signature · 3 lines
Andreas Dilger \ "If a man ate a pound of pasta and a pound of antipasto,
\ would they cancel out, leaving him still hungry?"
http://www-mddsp.enel.ucalgary.ca/People/adilger/ -- Dogbert