> 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/