Re: [PATCH] blockdev: fix for racing mount/umount

From: Linus Torvalds
Date: Tue Mar 15 2005 - 11:01:32 EST




On Tue, 15 Mar 2005, Jeff Mahoney wrote:
>
> This patch is another take at fixing the race between mount and umount
> resetting the blocksize and causing buffer errors, infinite loops in
> __getblk_slow, and possibly other undiscovered effects.

Ok. I had to go back and look up the original problem, and having looked
at this a bit more, I wonder whether the real problem is not that we do
that silly "set blocksize back to the original one" at umount time in the
first place.

(It happens very indirectly, though the "->kill_sb()" fn pointer, which
ends up doing kill_block_super on a regular block device).

Maybe we should just get rid of it entirely? There's really no point to
it.

Instead, to make things repeatable, we'd always just set the blocksize to
its default value at the first open. We already do that anyway, don't we?

Wouldn't that approach also just fix things? And then the fix would
literally be to just remove the set_blocksize() call in kill_block_super.
At that point, we know that the only people who set the block size are
either
- a first opener
- somebody who got exclusive access (ie a filesystem that sets it at
mount-time)

(Yeah, it's a bit more complex than that one-liner, since somebody would
need to back me up on not being totally tripping on some 'shrooms. But Al
can probably do that trivially)

Or maybe I misunderstood the problem. Jeff?

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