Re: [PATCH] logfs: kill BKL

Frederic Weisbecker
2010-05-19T12:51:50Z

On Tue, Apr 27, 2010 at 10:30:06PM +0200, Arnd Bergmann wrote:
> logfs does not need the BKL, so use ->unlocked_ioctl instead
> of ->ioctl in file operations.
> ---
> On Tuesday 27 April 2010 22:12:52 Frederic Weisbecker wrote:
> >
> > I've applied this series in bkl/ioctl, it passed allyesconfig in sparc.
> > I will apply the others from you and John tomorrow or so (and will enjoy
> > my part as well). Jörn, please queue this patch if you want to, as you prefer,
> > we can host it as well if necessary.
>
> I believe that this is the one that Jörn would prefer to go in. I hope I
> got it right by editing the patch.

Jörn, any news about this patch? If you're fine with it,
could you queue it for .35 ?

Thanks.

>
> diff --git a/fs/logfs/dir.c b/fs/logfs/dir.c
> index 2396a85..a801b5e 100644
> --- a/fs/logfs/dir.c
> +++ b/fs/logfs/dir.c
> @@ -821,7 +821,7 @@ const struct inode_operations logfs_dir_iops = {
> };
> const struct file_operations logfs_dir_fops = {
> .fsync = logfs_fsync,
> - .ioctl = logfs_ioctl,
> + .unlocked_ioctl = logfs_ioctl,
> .readdir = logfs_readdir,
> .read = generic_read_dir,
> };
> diff --git a/fs/logfs/file.c b/fs/logfs/file.c
> index 370f367..1dbc342 100644
> --- a/fs/logfs/file.c
> +++ b/fs/logfs/file.c
> @@ -171,9 +172,9 @@ static int logfs_releasepage(struct page *page, gfp_t only_xfs_uses_this)
> }
>
>
> -int logfs_ioctl(struct inode *inode, struct file *file, unsigned int cmd,
> - unsigned long arg)
> +long logfs_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
> {
> + struct inode *inode = file->f_path.dentry->d_inode;
> struct logfs_inode *li = logfs_inode(inode);
> unsigned int oldflags, flags;
> int err;
> @@ -243,7 +255,7 @@ const struct file_operations logfs_reg_fops = {
> .aio_read = generic_file_aio_read,
> .aio_write = generic_file_aio_write,
> .fsync = logfs_fsync,
> - .ioctl = logfs_ioctl,
> + .unlocked_ioctl = logfs_ioctl,
> .llseek = generic_file_llseek,
> .mmap = generic_file_readonly_mmap,
> .open = generic_file_open,
> diff --git a/fs/logfs/logfs.h b/fs/logfs/logfs.h
> index 0a3df1a..8432c51 100644
> --- a/fs/logfs/logfs.h
> +++ b/fs/logfs/logfs.h
> @@ -501,8 +501,8 @@ extern const struct inode_operations logfs_reg_iops;
> extern const struct file_operations logfs_reg_fops;
> extern const struct address_space_operations logfs_reg_aops;
> int logfs_readpage(struct file *file, struct page *page);
> -int logfs_ioctl(struct inode *inode, struct file *file, unsigned int cmd,
> - unsigned long arg);
> +long logfs_ioctl(struct file *file, unsigned int cmd,
> + unsigned long arg);
> int logfs_fsync(struct file *file, struct dentry *dentry, int datasync);
>
> /* gc.c */