[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: ac4 ext3 recovery failure



On Fri, 3 Aug 2001, Andrew Morton wrote:

> Ah.  Thanks.  Linus doesn't seem to have fsync_no_super(), so some
> compatibility hacks will be needed there.

Merge with fs/super.c fixes (happens in -ac)

> Why does fsync_no_super() exist?  I assume some locking changes
> somewhere?

It's fsync_dev() without touching fs structures.

fsync_super() - we hold a superblock, sync its in-core structures and
sync the device
fsync_dev() - we have a device, find superblock, grab it and sync (see above).
We need exclusion against read_super() and umount here - code in Linus'
tree is oopsable exactly because it lacks that.
fsync_no_super() - we have a device, sync it without even looking for fs
in-core stuff.

Notice that fsync_dev() in the wrong moment can seriously screw vanilla
2.4. In -ac4 it got the required exclusion, but that means the need to
use the fsync_super() or fsync_no_super() if you are in the exclusion
area. That had been done to the stuff common with Linus' tree, so there's
not much to fix. AFAICS jbd/recovery.c is the only place not covered.





[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]