From: Steven Whitehouse <swhiteho@redhat.com>
To: cluster-devel@redhat.com, linux-kernel@vger.kernel.org
Cc: Bob Peterson <rpeterso@redhat.com>,
Steven Whitehouse <swhiteho@redhat.com>
Subject: [PATCH 06/19] GFS2: new function gfs2_rbm_incr
Date: Mon, 4 Nov 2013 11:09:29 +0000 [thread overview]
Message-ID: <1383563382-8535-7-git-send-email-swhiteho@redhat.com> (raw)
In-Reply-To: <1383563382-8535-1-git-send-email-swhiteho@redhat.com>
From: Bob Peterson <rpeterso@redhat.com>
Since the previous patch eliminated bi in favor of bii, this follow-on
patch needed to be adjusted accordingly. Here is the revised version.
This patch adds a new function, gfs2_rbm_incr, which increments
an rbm structure. This is more efficient than calling gfs2_rbm_to_block,
incrementing, then calling gfs2_rbm_from_block.
Signed-off-by: Bob Peterson <rpeterso@redhat.com>
Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
diff --git a/fs/gfs2/rgrp.c b/fs/gfs2/rgrp.c
index dd3c4d3..285dd36 100644
--- a/fs/gfs2/rgrp.c
+++ b/fs/gfs2/rgrp.c
@@ -274,6 +274,32 @@ static int gfs2_rbm_from_block(struct gfs2_rbm *rbm, u64 block)
}
/**
+ * gfs2_rbm_incr - increment an rbm structure
+ * @rbm: The rbm with rgd already set correctly
+ *
+ * This function takes an existing rbm structure and increments it to the next
+ * viable block offset.
+ *
+ * Returns: If incrementing the offset would cause the rbm to go past the
+ * end of the rgrp, true is returned, otherwise false.
+ *
+ */
+
+static bool gfs2_rbm_incr(struct gfs2_rbm *rbm)
+{
+ if (rbm->offset + 1 < rbm_bi(rbm)->bi_blocks) { /* in the same bitmap */
+ rbm->offset++;
+ return false;
+ }
+ if (rbm->bii == rbm->rgd->rd_length - 1) /* at the last bitmap */
+ return true;
+
+ rbm->offset = 0;
+ rbm->bii++;
+ return false;
+}
+
+/**
* gfs2_unaligned_extlen - Look for free blocks which are not byte aligned
* @rbm: Position to search (value/result)
* @n_unaligned: Number of unaligned blocks to check
@@ -284,7 +310,6 @@ static int gfs2_rbm_from_block(struct gfs2_rbm *rbm, u64 block)
static bool gfs2_unaligned_extlen(struct gfs2_rbm *rbm, u32 n_unaligned, u32 *len)
{
- u64 block;
u32 n;
u8 res;
@@ -295,8 +320,7 @@ static bool gfs2_unaligned_extlen(struct gfs2_rbm *rbm, u32 n_unaligned, u32 *le
(*len)--;
if (*len == 0)
return true;
- block = gfs2_rbm_to_block(rbm);
- if (gfs2_rbm_from_block(rbm, block + 1))
+ if (gfs2_rbm_incr(rbm))
return true;
}
--
1.7.4.4
next prev parent reply other threads:[~2013-11-04 11:36 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-04 11:09 GFS2: Pre-pull patch posting (merge window) Steven Whitehouse
2013-11-04 11:09 ` [PATCH 01/19] GFS2: d_splice_alias() can't return error Steven Whitehouse
2013-11-04 11:09 ` [PATCH 02/19] GFS2: optimize rbm_from_block wrt bi_start Steven Whitehouse
2013-11-04 11:09 ` [PATCH 03/19] GFS2: introduce bi_blocks for optimization Steven Whitehouse
2013-11-04 11:09 ` [PATCH 04/19] GFS2: Do not reset flags on active reservations Steven Whitehouse
2013-11-04 11:09 ` [PATCH 05/19] GFS2: Introduce rbm field bii Steven Whitehouse
2013-11-04 11:09 ` Steven Whitehouse [this message]
2013-11-04 11:09 ` [PATCH 07/19] GFS2: fix dentry leaks Steven Whitehouse
2013-11-04 11:09 ` [PATCH 08/19] GFS2: Clean up reservation removal Steven Whitehouse
2013-11-04 11:09 ` [PATCH 09/19] GFS2: Add allocation parameters structure Steven Whitehouse
2013-11-04 11:09 ` [PATCH 10/19] GFS2: Speed up starting point selection for block allocation Steven Whitehouse
2013-11-04 11:09 ` [PATCH 11/19] GFS2: Move gfs2_icbit_munge into quota.c Steven Whitehouse
2013-11-04 11:09 ` [PATCH 12/19] GFS2: Remove obsolete quota tunable Steven Whitehouse
2013-11-04 11:09 ` [PATCH 13/19] GFS2: Make two similar quota code fragments into a function Steven Whitehouse
2013-11-04 11:09 ` [PATCH 14/19] GFS2: Inline qd_trylock into gfs2_quota_unlock Steven Whitehouse
2013-11-04 11:09 ` [PATCH 15/19] GFS2: Protect quota sync generation Steven Whitehouse
2013-11-04 11:09 ` [PATCH 16/19] GFS2: Use lockref for glocks Steven Whitehouse
2013-11-04 11:22 ` [PATCH 17/19] GFS2: Use reflink for quota data cache Steven Whitehouse
2013-11-04 11:22 ` [PATCH 18/19] GFS2: Rename quota qd_lru_lock qd_lock Steven Whitehouse
2013-11-04 11:22 ` [PATCH 19/19] GFS2: Use generic list_lru for quota Steven Whitehouse
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=1383563382-8535-7-git-send-email-swhiteho@redhat.com \
--to=swhiteho@redhat.com \
--cc=cluster-devel@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=rpeterso@redhat.com \
/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
Powered by JetHome