Re: ac4 ext3 recovery failure

Alexander Viro (viro@math.psu.edu)
Fri, 3 Aug 2001 16:03:22 -0400 (EDT)


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.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/