All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yongqiang Yang <xiaoqiangnk@gmail.com>
To: linux-ext4@vger.kernel.org
Cc: aedilger@gmail.com, tytso@mit.edu,
	Yongqiang Yang <xiaoqiangnk@gmail.com>
Subject: [PATCH 01/13] ext4: add a function which extends a group without checking parameters
Date: Thu, 11 Aug 2011 11:28:16 +0800	[thread overview]
Message-ID: <1313033308-882-2-git-send-email-xiaoqiangnk@gmail.com> (raw)
In-Reply-To: <1313033308-882-1-git-send-email-xiaoqiangnk@gmail.com>

This patch added a function named __ext4_group_extend() whose code
is copied from ext4_group_extend().  __ext4_group_extend() assumes
the parameter is valid and has been checked by caller.

__ext4_group_extend() will be used by new resize implementation. It
can also be used by ext4_group_extend(), but this patch series does
not do this.

Signed-off-by: Yongqiang Yang <xiaoqiangnk@gmail.com>
---
 fs/ext4/resize.c |   53 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 53 insertions(+), 0 deletions(-)

diff --git a/fs/ext4/resize.c b/fs/ext4/resize.c
index 707d3f1..6ffbdb6 100644
--- a/fs/ext4/resize.c
+++ b/fs/ext4/resize.c
@@ -969,6 +969,59 @@ exit_put:
 } /* ext4_group_add */
 
 /*
+ * extend a group without checking assuming that checking has been done.
+ */
+static int __ext4_group_extend(struct super_block *sb,
+			       ext4_fsblk_t o_blocks_count, ext4_grpblk_t add)
+{
+	struct ext4_super_block *es = EXT4_SB(sb)->s_es;
+	handle_t *handle;
+	int err = 0, err2;
+
+	/* We will update the superblock, one block bitmap, and
+	 * one group descriptor via ext4_ext4_group_add_blocks().
+	 */
+	handle = ext4_journal_start_sb(sb, 3);
+	if (IS_ERR(handle)) {
+		err = PTR_ERR(handle);
+		ext4_warning(sb, "error %d on journal start", err);
+		goto out;
+	}
+
+	err = ext4_journal_get_write_access(handle, EXT4_SB(sb)->s_sbh);
+	if (err) {
+		ext4_warning(sb, "error %d on journal write access", err);
+		ext4_journal_stop(handle);
+		goto out;
+	}
+
+	ext4_blocks_count_set(es, o_blocks_count + add);
+	ext4_debug("freeing blocks %llu through %llu\n", o_blocks_count,
+		   o_blocks_count + add);
+	/* We add the blocks to the bitmap and set the group need init bit */
+	err = ext4_group_add_blocks(handle, sb, o_blocks_count, add);
+	if (err)
+		goto exit_journal;
+	ext4_handle_dirty_super(handle, sb);
+	ext4_debug("freed blocks %llu through %llu\n", o_blocks_count,
+		   o_blocks_count + add);
+exit_journal:
+	err2 = ext4_journal_stop(handle);
+	if (err2 && !err)
+		err = err2;
+
+	if (!err) {
+		if (test_opt(sb, DEBUG))
+			printk(KERN_DEBUG "EXT4-fs: extended group to %llu "
+			       "blocks\n", ext4_blocks_count(es));
+		update_backups(sb, EXT4_SB(sb)->s_sbh->b_blocknr, (char *)es,
+			       sizeof(struct ext4_super_block));
+	}
+out:
+	return err;
+}
+
+/*
  * Extend the filesystem to the new number of blocks specified.  This entry
  * point is only used to extend the current filesystem to the end of the last
  * existing group.  It can be accessed via ioctl, or by "remount,resize=<size>"
-- 
1.7.5.1


  reply	other threads:[~2011-08-11  3:35 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-08-11  3:28 New resize interface implementation Yongqiang Yang
2011-08-11  3:28 ` Yongqiang Yang [this message]
2011-08-11  5:47   ` [PATCH 01/13] ext4: add a function which extends a group without checking parameters Andreas Dilger
2011-08-11  6:27     ` Yongqiang Yang
2011-08-21 17:07       ` Ted Ts'o
2011-08-22  2:51         ` Andreas Dilger
2011-08-11  3:28 ` [PATCH 02/13] ext4: add a function which adds a new desc to a fs Yongqiang Yang
2011-08-11  5:49   ` Andreas Dilger
2011-08-11  3:28 ` [PATCH 03/13] ext4: add a function which sets up a new group desc Yongqiang Yang
2011-08-11  6:42   ` Andreas Dilger
2011-08-12  8:49     ` Yongqiang Yang
2011-08-11  3:28 ` [PATCH 04/13] ext4: add a function which updates super block Yongqiang Yang
2011-08-11  3:28 ` [PATCH 05/13] ext4: add a structure which will be used by 64bit-resize interface Yongqiang Yang
2011-08-11 10:57   ` Steven Liu
2011-08-11  3:28 ` [PATCH 06/13] ext4: add a function which sets up group blocks of a flex groups Yongqiang Yang
2011-08-11  3:28 ` [PATCH 07/13] ext4: add a function which adds several group descriptors Yongqiang Yang
2011-08-11  3:28 ` [PATCH 08/13] ext4: add a function which sets up a flex groups each time Yongqiang Yang
2011-08-11  3:28 ` [PATCH 09/13] ext4: enable ext4_update_super() to handle a flex groups Yongqiang Yang
2011-08-11  3:28 ` [PATCH 10/13] ext4: pass verify_reserved_gdb() the number of group decriptors Yongqiang Yang
2011-08-11  3:28 ` [PATCH 11/13] ext4: add a new function which allocates bitmaps and inode tables Yongqiang Yang
2011-08-11  3:28 ` [PATCH 12/13] ext4: add a new function which adds a flex group to a fs Yongqiang Yang
2011-08-11  3:28 ` [PATCH 13/13] ext4: add new online resize interface Yongqiang Yang
     [not found] ` <CAKgsxVQAwEetdyGcOciA8+wi_eLA7Fmq60kfDvEK1WzgYxdUMQ@mail.gmail.com>
2011-08-17  7:28   ` New resize interface implementation Yongqiang Yang
     [not found]     ` <CAKgsxVSfrCt6tyxDdczLYFu0YeGXfuEAA=o_5T4TOkeNXSG8iA@mail.gmail.com>
2011-08-26 20:06       ` Justin Maggard
2011-09-01 12:30         ` Amir Goldstein

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=1313033308-882-2-git-send-email-xiaoqiangnk@gmail.com \
    --to=xiaoqiangnk@gmail.com \
    --cc=aedilger@gmail.com \
    --cc=linux-ext4@vger.kernel.org \
    --cc=tytso@mit.edu \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.