linux-ext4.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Theodore Ts'o <tytso@mit.edu>
To: Ext4 Developers List <linux-ext4@vger.kernel.org>
Cc: Theodore Ts'o <tytso@mit.edu>
Subject: [PATCH 07/19] ext4: convert block group-relative offsets to use clusters
Date: Tue,  3 May 2011 18:24:37 -0400	[thread overview]
Message-ID: <1304461490-11056-8-git-send-email-tytso@mit.edu> (raw)
In-Reply-To: <1304461490-11056-1-git-send-email-tytso@mit.edu>

Certain parts of the ext4 code base, primarily in mballoc.c, use a
block group number and offset from the beginning of the block group.
This offset is invariably used to index into the allocation bitmap, so
change the offset to be denominated in units of clusters.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
---
 fs/ext4/balloc.c  |    6 ++++--
 fs/ext4/mballoc.h |    3 ++-
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/fs/ext4/balloc.c b/fs/ext4/balloc.c
index 332854c..a0a86ce 100644
--- a/fs/ext4/balloc.c
+++ b/fs/ext4/balloc.c
@@ -28,7 +28,8 @@
  */
 
 /*
- * Calculate the block group number and offset, given a block number
+ * Calculate the block group number and offset into the block/cluster
+ * allocation bitmap, given a block number
  */
 void ext4_get_group_no_and_offset(struct super_block *sb, ext4_fsblk_t blocknr,
 		ext4_group_t *blockgrpp, ext4_grpblk_t *offsetp)
@@ -37,7 +38,8 @@ void ext4_get_group_no_and_offset(struct super_block *sb, ext4_fsblk_t blocknr,
 	ext4_grpblk_t offset;
 
 	blocknr = blocknr - le32_to_cpu(es->s_first_data_block);
-	offset = do_div(blocknr, EXT4_BLOCKS_PER_GROUP(sb));
+	offset = do_div(blocknr, EXT4_BLOCKS_PER_GROUP(sb)) >>
+		EXT4_SB(sb)->s_cluster_bits;
 	if (offsetp)
 		*offsetp = offset;
 	if (blockgrpp)
diff --git a/fs/ext4/mballoc.h b/fs/ext4/mballoc.h
index 22bd4d7..1a75182 100644
--- a/fs/ext4/mballoc.h
+++ b/fs/ext4/mballoc.h
@@ -223,6 +223,7 @@ struct ext4_buddy {
 static inline ext4_fsblk_t ext4_grp_offs_to_block(struct super_block *sb,
 					struct ext4_free_extent *fex)
 {
-	return ext4_group_first_block_no(sb, fex->fe_group) + fex->fe_start;
+	return ext4_group_first_block_no(sb, fex->fe_group) +
+		(fex->fe_start << EXT4_SB(sb)->s_cluster_bits);
 }
 #endif
-- 
1.7.3.1


  parent reply	other threads:[~2011-05-03 22:24 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-05-03 22:24 [PATCH 00/19] V2 Bigalloc patches Theodore Ts'o
2011-05-03 22:24 ` [PATCH 01/19] ext4: read-only support for bigalloc file systems Theodore Ts'o
2011-05-03 22:24 ` [PATCH 02/19] ext4: enforce bigalloc restrictions (e.g., no online resizing, etc.) Theodore Ts'o
2011-05-03 22:24 ` [PATCH 03/19] ext4: convert instances of EXT4_BLOCKS_PER_GROUP to EXT4_CLUSTERS_PER_GROUP Theodore Ts'o
2011-05-03 22:24 ` [PATCH 04/19] ext4: factor out block group accounting into functions Theodore Ts'o
2011-05-03 22:24 ` [PATCH 05/19] ext4: split out ext4_free_blocks_after_init() Theodore Ts'o
2011-05-03 22:24 ` [PATCH 06/19] ext4: bigalloc changes to block bitmap initialization functions Theodore Ts'o
2011-05-03 22:24 ` Theodore Ts'o [this message]
2011-05-03 22:24 ` [PATCH 08/19] ext4: teach mballoc preallocation code about bigalloc clusters Theodore Ts'o
2011-05-03 22:24 ` [PATCH 09/19] ext4: teach ext4_free_blocks() about bigalloc and clusters Theodore Ts'o
2011-05-03 22:24 ` [PATCH 10/19] ext4: teach ext4_ext_map_blocks() about the bigalloc feature Theodore Ts'o
2011-05-03 22:24 ` [PATCH 11/19] ext4: teach ext4_ext_truncate() " Theodore Ts'o
2011-05-03 22:24 ` [PATCH 12/19] ext4: convert s_freeblocks_counter to s_freeclusters_counter Theodore Ts'o
2011-05-03 22:24 ` [PATCH 13/19] ext4: convert the free_blocks field in s_flex_groups to be free_clusters Theodore Ts'o
2011-05-03 22:24 ` [PATCH 14/19] ext4: teach ext4_statfs() to deal with clusters if bigalloc is enabled Theodore Ts'o
2011-05-03 22:24 ` [PATCH 15/19] ext4: tune mballoc's default group prealloc size for bigalloc file systems Theodore Ts'o
2011-05-03 22:24 ` [PATCH 16/19] ext4: enable mounting bigalloc as read/write Theodore Ts'o
2011-05-03 22:24 ` [PATCH 17/19] ext4: Rename ext4_free_blks_{count,set}() to refer to clusters Theodore Ts'o
2011-05-03 22:24 ` [PATCH 18/19] ext4: rename ext4_count_free_blocks() to ext4_count_free_clusters() Theodore Ts'o
2011-05-03 22:24 ` [PATCH 19/19] ext4: rename ext4_free_blocks_after_init() to ext4_free_clusters_after_init() Theodore Ts'o
2011-05-03 22:24 ` [E2FSPROGS PATCH] Interim patches for e2fsprogs Theodore Ts'o

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=1304461490-11056-8-git-send-email-tytso@mit.edu \
    --to=tytso@mit.edu \
    --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).