2012-12-02 01:40:44

by Cong Ding

[permalink] [raw]
Subject: [PATCH] fs:ext3: remove lock_buffer in bclean() and setup_new_group_blocks

it's not necessary to lock the buffers because no one touches them
beyond the file system.

Signed-off-by: Cong Ding <[email protected]>
---
fs/ext3/resize.c | 4 ----
1 files changed, 0 insertions(+), 4 deletions(-)

diff --git a/fs/ext3/resize.c b/fs/ext3/resize.c
index 0f814f3..f76fcd6 100644
--- a/fs/ext3/resize.c
+++ b/fs/ext3/resize.c
@@ -122,10 +122,8 @@ static struct buffer_head *bclean(handle_t *handle, struct super_block *sb,
brelse(bh);
bh = ERR_PTR(err);
} else {
- lock_buffer(bh);
memset(bh->b_data, 0, sb->s_blocksize);
set_buffer_uptodate(bh);
- unlock_buffer(bh);
}

return bh;
@@ -242,10 +240,8 @@ static int setup_new_group_blocks(struct super_block *sb,
brelse(gdb);
goto exit_bh;
}
- lock_buffer(gdb);
memcpy(gdb->b_data, sbi->s_group_desc[i]->b_data, gdb->b_size);
set_buffer_uptodate(gdb);
- unlock_buffer(gdb);
err = ext3_journal_dirty_metadata(handle, gdb);
if (err) {
brelse(gdb);
--
1.7.4.5



2012-12-05 14:41:09

by Jan Kara

[permalink] [raw]
Subject: Re: [PATCH] fs:ext3: remove lock_buffer in bclean() and setup_new_group_blocks

On Sun 02-12-12 01:40:28, Cong Ding wrote:
> it's not necessary to lock the buffers because no one touches them
> beyond the file system.
Although I agree those locks are not strictly necessary, I prefer to keep
them because the general rula is buffer contents should be changed under
buffer lock unless we have a good reason to do otherwise. And here the cost
of additional lock is really marginal...

Honza

>
> Signed-off-by: Cong Ding <[email protected]>
> ---
> fs/ext3/resize.c | 4 ----
> 1 files changed, 0 insertions(+), 4 deletions(-)
>
> diff --git a/fs/ext3/resize.c b/fs/ext3/resize.c
> index 0f814f3..f76fcd6 100644
> --- a/fs/ext3/resize.c
> +++ b/fs/ext3/resize.c
> @@ -122,10 +122,8 @@ static struct buffer_head *bclean(handle_t *handle, struct super_block *sb,
> brelse(bh);
> bh = ERR_PTR(err);
> } else {
> - lock_buffer(bh);
> memset(bh->b_data, 0, sb->s_blocksize);
> set_buffer_uptodate(bh);
> - unlock_buffer(bh);
> }
>
> return bh;
> @@ -242,10 +240,8 @@ static int setup_new_group_blocks(struct super_block *sb,
> brelse(gdb);
> goto exit_bh;
> }
> - lock_buffer(gdb);
> memcpy(gdb->b_data, sbi->s_group_desc[i]->b_data, gdb->b_size);
> set_buffer_uptodate(gdb);
> - unlock_buffer(gdb);
> err = ext3_journal_dirty_metadata(handle, gdb);
> if (err) {
> brelse(gdb);
> --
> 1.7.4.5
>
--
Jan Kara <[email protected]>
SUSE Labs, CR