2009-11-03 15:47:07

by Phillip Lougher

[permalink] [raw]
Subject: BKL: Remove BKL from Squashfs


BKL is only used in fill_super/put_super. It is safe to remove it.

Signed-off-by: Phillip Lougher <[email protected]>
---
fs/squashfs/super.c | 11 -----------
1 files changed, 0 insertions(+), 11 deletions(-)

diff --git a/fs/squashfs/super.c b/fs/squashfs/super.c
index 23cea83..7c25056 100644
--- a/fs/squashfs/super.c
+++ b/fs/squashfs/super.c
@@ -30,7 +30,6 @@
#include <linux/fs.h>
#include <linux/vfs.h>
#include <linux/slab.h>
-#include <linux/smp_lock.h>
#include <linux/mutex.h>
#include <linux/pagemap.h>
#include <linux/init.h>
@@ -78,14 +77,11 @@ static int squashfs_fill_super(struct super_block *sb, void *data, int silent)
u64 lookup_table_start;
int err;

- lock_kernel();
-
TRACE("Entered squashfs_fill_superblock\n");

sb->s_fs_info = kzalloc(sizeof(*msblk), GFP_KERNEL);
if (sb->s_fs_info == NULL) {
ERROR("Failed to allocate squashfs_sb_info\n");
- unlock_kernel();
return -ENOMEM;
}
msblk = sb->s_fs_info;
@@ -289,7 +285,6 @@ allocate_root:

TRACE("Leaving squashfs_fill_super\n");
kfree(sblk);
- unlock_kernel();
return 0;

failed_mount:
@@ -303,14 +298,12 @@ failed_mount:
kfree(sb->s_fs_info);
sb->s_fs_info = NULL;
kfree(sblk);
- unlock_kernel();
return err;

failure:
kfree(msblk->stream.workspace);
kfree(sb->s_fs_info);
sb->s_fs_info = NULL;
- unlock_kernel();
return -ENOMEM;
}

@@ -345,8 +338,6 @@ static int squashfs_remount(struct super_block *sb, int *flags, char *data)

static void squashfs_put_super(struct super_block *sb)
{
- lock_kernel();
-
if (sb->s_fs_info) {
struct squashfs_sb_info *sbi = sb->s_fs_info;
squashfs_cache_delete(sbi->block_cache);
@@ -359,8 +350,6 @@ static void squashfs_put_super(struct super_block *sb)
kfree(sb->s_fs_info);
sb->s_fs_info = NULL;
}
-
- unlock_kernel();
}


--
1.5.2.5


2009-11-10 20:15:39

by Andrew Morton

[permalink] [raw]
Subject: Re: BKL: Remove BKL from Squashfs

On Tue, 03 Nov 2009 15:15:16 +0000
Phillip Lougher <[email protected]> wrote:

>
> BKL is only used in fill_super/put_super. It is safe to remove it.
>

What kernel are you trying to patch here?

Most of your patch is already present in mainline. Against mainline,
this what is left of your patch:

--- a/fs/squashfs/super.c~bkl-remove-bkl-from-squashfs
+++ a/fs/squashfs/super.c
@@ -30,7 +30,6 @@
#include <linux/fs.h>
#include <linux/vfs.h>
#include <linux/slab.h>
-#include <linux/smp_lock.h>
#include <linux/mutex.h>
#include <linux/pagemap.h>
#include <linux/init.h>
@@ -339,8 +338,6 @@ static int squashfs_remount(struct super

static void squashfs_put_super(struct super_block *sb)
{
- lock_kernel();
-
if (sb->s_fs_info) {
struct squashfs_sb_info *sbi = sb->s_fs_info;
squashfs_cache_delete(sbi->block_cache);
@@ -353,8 +350,6 @@ static void squashfs_put_super(struct su
kfree(sb->s_fs_info);
sb->s_fs_info = NULL;
}
-
- unlock_kernel();
}


So someone has decided to remove lots of lock_kernel()'s but chose to
leave the squashfs_put_super() ones behind.

Why did they do that? Your patch effectively asserts that their
decision was incorrect.


So please rethink, update the changelog appropriately and resend.

2009-11-10 21:12:43

by Phillip Lougher

[permalink] [raw]
Subject: Re: BKL: Remove BKL from Squashfs

Andrew Morton wrote:

>
> So someone has decided to remove lots of lock_kernel()'s but chose to
> leave the squashfs_put_super() ones behind.
>
> Why did they do that? Your patch effectively asserts that their
> decision was incorrect.
>


This patch was prompted by Jan Blunck's "Push down BKL to the filesystems" patch
series, where he firstly pushes the BKL down to individual filesystems
(even if they don't need it) , and then successively removes them
(on a one patch per filesystem basis) in later patches.

See http://lwn.net/Articles/359887/

His large patch pushed the BKL down to squashfs_fill_super(). He didn't send a
later patch removing them. The BKL pushdown is unnecessary in squashfs_fill_super(),
because it isn't protecting any shared state. The BKL in squashfs_put_super() is mine.
After reviewing Jan's BKL patches I realised it was unnecessary, and it shouldn't
be there.

The patch should be reviewed in the context that it is intended for Jan's
BKL removal patch series.

Phillip

2009-11-10 22:00:18

by Phillip Lougher

[permalink] [raw]
Subject: Re: BKL: Remove BKL from Squashfs

Phillip Lougher wrote:

> This patch was prompted by Jan Blunck's "Push down BKL to the
> filesystems" patch
> series, where he firstly pushes the BKL down to individual filesystems
> (even if they don't need it) , and then successively removes them
> (on a one patch per filesystem basis) in later patches.
>
> The patch should be reviewed in the context that it is intended for Jan's
> BKL removal patch series.
>

Jan and/or Matthew,

Can you please ACK this patch, and say whether you're going to
add it to your BKL patch series? (I'm happy for it to go through
there, rather than my Squashfs tree).

After reviewing your patches, it seems to me that the BKL isn't
needed in Squashfs. You removed it from 23 filesystems because
it's not protecting any shared state, on that basis it isn't needed
needed in Squashfs either.

Thanks

Phillip

2009-11-11 15:16:13

by Jan Blunck

[permalink] [raw]
Subject: Re: BKL: Remove BKL from Squashfs

On Tue, Nov 10, Phillip Lougher wrote:

> Phillip Lougher wrote:
>
> >This patch was prompted by Jan Blunck's "Push down BKL to the
> >filesystems" patch
> >series, where he firstly pushes the BKL down to individual filesystems
> >(even if they don't need it) , and then successively removes them
> >(on a one patch per filesystem basis) in later patches.
> >
> >The patch should be reviewed in the context that it is intended for Jan's
> >BKL removal patch series.
> >
>
> Jan and/or Matthew,
>
> Can you please ACK this patch, and say whether you're going to
> add it to your BKL patch series? (I'm happy for it to go through
> there, rather than my Squashfs tree).
>
> After reviewing your patches, it seems to me that the BKL isn't
> needed in Squashfs. You removed it from 23 filesystems because
> it's not protecting any shared state, on that basis it isn't needed
> needed in Squashfs either.

Yes, I'll do this through my patch series. I'll rework the series a bit and
will repost it soon.

Thanks,
Jan

--
Jan Blunck <[email protected]>