From: Yongqiang Yang <xiaoqiangnk@gmail.com>
To: linux-ext4@vger.kernel.org
Cc: aedilger@gmail.com, Yongqiang Yang <xiaoqiangnk@gmail.com>
Subject: [PATCH 11/12] ext4: simplify parameters of add_new_gdb()
Date: Mon, 18 Jul 2011 10:52:34 +0800 [thread overview]
Message-ID: <1310957555-15617-12-git-send-email-xiaoqiangnk@gmail.com> (raw)
In-Reply-To: <1310957555-15617-1-git-send-email-xiaoqiangnk@gmail.com>
add_new_gdb() only needs the no. of a group, there is no need to pass
a pointer to struct ext4_new_group_data to add_new_gdb().
Signed-off-by: Yongqiang Yang <xiaoqiangnk@gmail.com>
---
fs/ext4/resize.c | 33 +++++++++++++++++++--------------
1 files changed, 19 insertions(+), 14 deletions(-)
diff --git a/fs/ext4/resize.c b/fs/ext4/resize.c
index e452bee..52d0426 100644
--- a/fs/ext4/resize.c
+++ b/fs/ext4/resize.c
@@ -404,15 +404,15 @@ static int verify_reserved_gdb(struct super_block *sb,
* fail once we start modifying the data on disk, because JBD has no rollback.
*/
static int add_new_gdb(handle_t *handle, struct inode *inode,
- struct ext4_new_group_data *input,
- struct buffer_head **primary)
+ ext4_group_t group)
{
struct super_block *sb = inode->i_sb;
struct ext4_super_block *es = EXT4_SB(sb)->s_es;
- unsigned long gdb_num = input->group / EXT4_DESC_PER_BLOCK(sb);
+ unsigned long gdb_num = group / EXT4_DESC_PER_BLOCK(sb);
ext4_fsblk_t gdblock = EXT4_SB(sb)->s_sbh->b_blocknr + 1 + gdb_num;
struct buffer_head **o_group_desc, **n_group_desc;
struct buffer_head *dind;
+ struct buffer_head *gdb_bh;
int gdbackups;
struct ext4_iloc iloc;
__le32 *data;
@@ -435,11 +435,12 @@ static int add_new_gdb(handle_t *handle, struct inode *inode,
return -EPERM;
}
- *primary = sb_bread(sb, gdblock);
- if (!*primary)
+ gdb_bh = sb_bread(sb, gdblock);
+ if (!gdb_bh)
return -EIO;
- if ((gdbackups = verify_reserved_gdb(sb, *primary)) < 0) {
+ gdbackups = verify_reserved_gdb(sb, gdb_bh);
+ if (gdbackups < 0) {
err = gdbackups;
goto exit_bh;
}
@@ -454,7 +455,7 @@ static int add_new_gdb(handle_t *handle, struct inode *inode,
data = (__le32 *)dind->b_data;
if (le32_to_cpu(data[gdb_num % EXT4_ADDR_PER_BLOCK(sb)]) != gdblock) {
ext4_warning(sb, "new group %u GDT block %llu not reserved",
- input->group, gdblock);
+ group, gdblock);
err = -EINVAL;
goto exit_dind;
}
@@ -463,7 +464,7 @@ static int add_new_gdb(handle_t *handle, struct inode *inode,
if (unlikely(err))
goto exit_dind;
- err = ext4_journal_get_write_access(handle, *primary);
+ err = ext4_journal_get_write_access(handle, gdb_bh);
if (unlikely(err))
goto exit_sbh;
@@ -502,8 +503,8 @@ static int add_new_gdb(handle_t *handle, struct inode *inode,
}
inode->i_blocks -= (gdbackups + 1) * sb->s_blocksize >> 9;
ext4_mark_iloc_dirty(handle, inode, &iloc);
- memset((*primary)->b_data, 0, sb->s_blocksize);
- err = ext4_handle_dirty_metadata(handle, NULL, *primary);
+ memset(gdb_bh->b_data, 0, sb->s_blocksize);
+ err = ext4_handle_dirty_metadata(handle, NULL, gdb_bh);
if (unlikely(err)) {
ext4_std_error(sb, err);
goto exit_inode;
@@ -513,7 +514,7 @@ static int add_new_gdb(handle_t *handle, struct inode *inode,
o_group_desc = EXT4_SB(sb)->s_group_desc;
memcpy(n_group_desc, o_group_desc,
EXT4_SB(sb)->s_gdb_count * sizeof(struct buffer_head *));
- n_group_desc[gdb_num] = *primary;
+ n_group_desc[gdb_num] = gdb_bh;
EXT4_SB(sb)->s_group_desc = n_group_desc;
EXT4_SB(sb)->s_gdb_count++;
kfree(o_group_desc);
@@ -535,7 +536,7 @@ exit_sbh:
exit_dind:
brelse(dind);
exit_bh:
- brelse(*primary);
+ brelse(gdb_bh);
ext4_debug("leaving with error %d\n", err);
return err;
@@ -843,8 +844,12 @@ int ext4_group_add(struct super_block *sb, struct ext4_new_group_data *input)
if (reserved_gdb && ext4_bg_num_gdb(sb, input->group) &&
(err = reserve_backup_gdb(handle, inode, input)))
goto exit_journal;
- } else if ((err = add_new_gdb(handle, inode, input, &primary)))
- goto exit_journal;
+ } else {
+ err = add_new_gdb(handle, inode, input->group);
+ if (err)
+ goto exit_journal;
+ primary = sbi->s_group_desc[gdb_num];
+ }
/*
* OK, now we've set up the new group. Time to make it active.
--
1.7.5.1
next prev parent reply other threads:[~2011-07-18 2:57 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-07-18 2:52 prevent parallel resizers and fix some error handling in resize Yongqiang Yang
2011-07-18 2:52 ` [PATCH 01/12] ext4: prevent parallel resizers by atomic bit ops Yongqiang Yang
2011-07-18 2:52 ` [PATCH 02/12] ext4: prevent a fs with errors from being resized Yongqiang Yang
2011-07-18 2:52 ` [PATCH 03/12] ext4: prevent a fs without journal " Yongqiang Yang
2011-07-18 3:17 ` Tao Ma
2011-07-18 3:28 ` Yongqiang Yang
2011-07-18 3:44 ` Yongqiang Yang
2011-07-18 7:00 ` Andreas Dilger
2011-07-18 2:52 ` [PATCH 04/12] ext4: rename ext4_add_groupblocks() to ext4_group_add_blocks() Yongqiang Yang
2011-07-18 6:32 ` Amir Goldstein
2011-07-18 10:15 ` Yongqiang Yang
2011-07-18 2:52 ` [PATCH 05/12] ext4: let ext4_group_add_blocks return an error code Yongqiang Yang
2011-07-18 6:19 ` Andreas Dilger
2011-07-18 6:47 ` Amir Goldstein
2011-07-18 6:48 ` Amir Goldstein
2011-07-18 12:55 ` Yongqiang Yang
2011-07-18 2:52 ` [PATCH 06/12] ext4: let ext4_group_add_blocks() handle 0 blocks quickly Yongqiang Yang
2011-07-18 2:52 ` [PATCH 07/12] ext4: fix a typo in ext4_group_extend() Yongqiang Yang
2011-07-18 2:52 ` [PATCH 08/12] ext4: let setup_new_group_blocks set multi-bits each time Yongqiang Yang
2011-07-18 6:26 ` Andreas Dilger
2011-07-18 6:56 ` Amir Goldstein
2011-07-18 2:52 ` [PATCH 09/12] ext4: simplify journal handling in ext4_setup_new_group_blocks Yongqiang Yang
2011-07-18 3:09 ` Tao Ma
2011-07-18 3:21 ` Yongqiang Yang
2011-07-18 3:40 ` Tao Ma
2011-07-18 3:46 ` Yongqiang Yang
2011-07-18 2:52 ` [PATCH 10/12] ext4: remove lock_buffer in bclean() and setup_new_group_blocks Yongqiang Yang
2011-07-18 2:52 ` Yongqiang Yang [this message]
2011-07-18 6:46 ` [PATCH 11/12] ext4: simplify parameters of add_new_gdb() Andreas Dilger
2011-07-18 2:52 ` [PATCH 12/12] ext4: simplify parameters of reserve_backup_gdb() Yongqiang Yang
2011-07-18 7:12 ` Amir Goldstein
2011-07-18 6:16 ` prevent parallel resizers and fix some error handling in resize Amir Goldstein
2011-07-18 10:16 ` Yongqiang Yang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1310957555-15617-12-git-send-email-xiaoqiangnk@gmail.com \
--to=xiaoqiangnk@gmail.com \
--cc=aedilger@gmail.com \
--cc=linux-ext4@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).