Re: [PATCH] [3/18] BKL-removal: Convert ext3 to use unlocked_ioctl

From: Andi Kleen
Date: Mon Jan 28 2008 - 01:04:15 EST


On Monday 28 January 2008 06:33, Andrew Morton wrote:
> On Sun, 27 Jan 2008 03:17:09 +0100 (CET) Andi Kleen <ak@xxxxxxx> wrote:
> > I checked ext3_ioctl and it looked largely safe to not be used
> > without BKL. So convert it over to unlocked_ioctl.
> >
> > The only case where I wasn't quite sure was for the
> > dynamic fs grow ioctls versus umounting -- I kept the BKL for those.
>
> Please cpoy linux-ext4 on ext2/3/4 material.

Ok I'll resubmit those to tytso/ext4-devel (or perhaps he has already seen
them)

>
> I skippped a lot of these patches because I just got bored of fixing
> rejects. Now is a very optimistic time to be raising patches against
> mainline.

JFS and CIFS are already taken care of by the maintainers. This leaves
remote_llseek which touches a couple of file systems. Could you
perhaps take that one only please? And perhaps Nick's minix
patchkit which looks safe to me and is unlikely to cause conflicts.

> > + /* AK: not sure the BKL is needed, but this might prevent
> > + * races against umount */
> > + lock_kernel();
> > err = ext3_group_add(sb, &input);
> > journal_lock_updates(EXT3_SB(sb)->s_journal);
> > journal_flush(EXT3_SB(sb)->s_journal);
> > journal_unlock_updates(EXT3_SB(sb)->s_journal);
> > + unlock_kernel();
>
> The ext3_ioctl() caller has an open fd against the fs - should be
> sufficient to keep unmount away?

True. I am still conservative because group_add is a lot of code
which I didn't fully check. But with the open fd it's likely safe
to not take the BKL because there is nothing else (except
readdir?) in ext* that takes it.

> It's all reached the stage of stupid.

I'll resubmit ->fasync_unlocked against -mm.

Also I wanted to recheck the ->f_flags locking. I found one bug in those
already and I can extract the bug fix for that one.

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