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

2 messages, 2 authors, 2008-01-28 · open the first message on its own page

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

From: Andrew Morton <akpm@linux-foundation.org>
Date: 2008-01-28 05:33:47

On Sun, 27 Jan 2008 03:17:09 +0100 (CET) Andi Kleen [off-list ref] 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.

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.

I'm going to work on getting a unified devel tree operating: one which
contains everyone's latest stuff and is updated daily.  Basically it'll be
-mm without a couple of the quilt trees.  People can then prepare patches
against that, as it seems that most can't be bothered patching against -mm,
let alone building and testing it.  More later.
quoted hunk
+		/* AK: not sure the BKL is needed, but this might prevent
+		 * races against umount */
+		lock_kernel();
 		err = ext3_group_extend(sb, EXT3_SB(sb)->s_es, n_blocks_count);
 		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();
 
 		return err;
 	}
@@ -245,11 +249,14 @@ flags_err:
 		if (copy_from_user(&input, (struct ext3_new_group_input __user *)arg,
 				sizeof(input)))
 			return -EFAULT;
-
+		/* 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?

(gets even more rejects, drops all the fasync patches too)

It's all reached the stage of stupid.

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

From: Andi Kleen <hidden>
Date: 2008-01-28 06:02:15

On Monday 28 January 2008 06:33, Andrew Morton wrote:
On Sun, 27 Jan 2008 03:17:09 +0100 (CET) Andi Kleen [off-list ref] wrote:
quoted
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.
quoted
+		/* 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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help