Re: [PATCH] Introduce freeze_super and thaw_super for the fsfreezeioctl

From: Nigel Cunningham
Date: Tue Mar 23 2010 - 19:52:23 EST


Hi.

On 24/03/10 10:18, Al Viro wrote:
On Wed, Mar 24, 2010 at 09:31:51AM +1100, Nigel Cunningham wrote:
/**
* freeze_filesystems - lock all filesystems and force them into a
consistent
* state
* @which: What combination of fuse& non-fuse to freeze.
*/
void freeze_filesystems(int which)
{
struct super_block *sb;

lockdep_off();

/*
* Freeze in reverse order so filesystems dependant upon others are
* frozen in the right order (eg. loopback on ext3).
*/

[snip the horror]

a) traversing superblock list without any locking whatsoever
b) accessing superblock fields<....>
c)<.........................> without making sure that it's not
going to disappear
d) calling freeze_bdev() without any warranties that its argument
is not going to be freed under you
e) layering violations all over the place
etc.

I've stayed away from TuxOnIce flamefests and I've no idea how representative
that snippet is, but if it *does* match the general code quality in there...
Ouch.

Locking isn't necessary because of the freezing.

Regards,

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