LWN.net Logo

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

From:  Andrew Morton <akpm-AT-linux-foundation.org>
To:  Andi Kleen <ak-AT-suse.de>
Subject:  Re: [PATCH] [3/18] BKL-removal: Convert ext3 to use unlocked_ioctl
Date:  Sun, 27 Jan 2008 21:33:47 -0800
Message-ID:  <20080127213347.5bf5c324.akpm@linux-foundation.org>
Cc:  sct-AT-redhat.com, adilger-AT-clusterfs.com, linux-kernel-AT-vger.kernel.org, linux-fsdevel-AT-vger.kernel.org, "linux-ext4-AT-vger.kernel.org" <linux-ext4-AT-vger.kernel.org>

On Sun, 27 Jan 2008 03:17:09 +0100 (CET) Andi Kleen <ak@suse.de> 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.

> +		/* 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.
--
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/


(Log in to post comments)

Copyright © 2008, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds