From: Brian Foster <bfoster@redhat.com>
To: xfs@oss.sgi.com
Subject: [PATCH v6 10/18] xfs: pass inode count through ordered icreate log item
Date: Mon, 2 Mar 2015 08:28:00 -0500 [thread overview]
Message-ID: <1425302888-4962-11-git-send-email-bfoster@redhat.com> (raw)
In-Reply-To: <1425302888-4962-1-git-send-email-bfoster@redhat.com>
v5 superblocks use an ordered log item for logging the initialization of
inode chunks. The icreate log item is currently hardcoded to an inode
count of 64 inodes.
The agbno and extent length are used to initialize the inode chunk from
log recovery. While an incorrect inode count does not lead to bad inode
chunk initialization, we should pass the correct inode count such that log
recovery has enough data to perform meaningful validity checks on the
chunk.
Signed-off-by: Brian Foster <bfoster@redhat.com>
---
fs/xfs/libxfs/xfs_ialloc.c | 7 ++++---
fs/xfs/libxfs/xfs_ialloc.h | 2 +-
fs/xfs/xfs_log_recover.c | 4 ++--
3 files changed, 7 insertions(+), 6 deletions(-)
diff --git a/fs/xfs/libxfs/xfs_ialloc.c b/fs/xfs/libxfs/xfs_ialloc.c
index 85a477a..d79e41c 100644
--- a/fs/xfs/libxfs/xfs_ialloc.c
+++ b/fs/xfs/libxfs/xfs_ialloc.c
@@ -250,6 +250,7 @@ xfs_ialloc_inode_init(
struct xfs_mount *mp,
struct xfs_trans *tp,
struct list_head *buffer_list,
+ int icount,
xfs_agnumber_t agno,
xfs_agblock_t agbno,
xfs_agblock_t length,
@@ -305,7 +306,7 @@ xfs_ialloc_inode_init(
* they track in the AIL as if they were physically logged.
*/
if (tp)
- xfs_icreate_log(tp, agno, agbno, mp->m_ialloc_inos,
+ xfs_icreate_log(tp, agno, agbno, icount,
mp->m_sb.sb_inodesize, length, gen);
} else
version = 2;
@@ -525,8 +526,8 @@ xfs_ialloc_ag_alloc(
* rather than a linear progression to prevent the next generation
* number from being easily guessable.
*/
- error = xfs_ialloc_inode_init(args.mp, tp, NULL, agno, args.agbno,
- args.len, prandom_u32());
+ error = xfs_ialloc_inode_init(args.mp, tp, NULL, newlen, agno,
+ args.agbno, args.len, prandom_u32());
if (error)
return error;
diff --git a/fs/xfs/libxfs/xfs_ialloc.h b/fs/xfs/libxfs/xfs_ialloc.h
index 100007d..4d4b702 100644
--- a/fs/xfs/libxfs/xfs_ialloc.h
+++ b/fs/xfs/libxfs/xfs_ialloc.h
@@ -156,7 +156,7 @@ int xfs_inobt_get_rec(struct xfs_btree_cur *cur,
* Inode chunk initialisation routine
*/
int xfs_ialloc_inode_init(struct xfs_mount *mp, struct xfs_trans *tp,
- struct list_head *buffer_list,
+ struct list_head *buffer_list, int icount,
xfs_agnumber_t agno, xfs_agblock_t agbno,
xfs_agblock_t length, unsigned int gen);
diff --git a/fs/xfs/xfs_log_recover.c b/fs/xfs/xfs_log_recover.c
index 4f5784f..8abfd78 100644
--- a/fs/xfs/xfs_log_recover.c
+++ b/fs/xfs/xfs_log_recover.c
@@ -3091,8 +3091,8 @@ xlog_recover_do_icreate_pass2(
XFS_AGB_TO_DADDR(mp, agno, agbno), length, 0))
return 0;
- xfs_ialloc_inode_init(mp, NULL, buffer_list, agno, agbno, length,
- be32_to_cpu(icl->icl_gen));
+ xfs_ialloc_inode_init(mp, NULL, buffer_list, count, agno, agbno, length,
+ be32_to_cpu(icl->icl_gen));
return 0;
}
--
1.9.3
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
next prev parent reply other threads:[~2015-03-02 13:28 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-03-02 13:27 [PATCH v6 00/18] xfs: sparse inode chunks Brian Foster
2015-03-02 13:27 ` [PATCH v6 01/18] xfs: create individual inode alloc. helper Brian Foster
2015-03-02 13:27 ` [PATCH v6 02/18] xfs: update free inode record logic to support sparse inode records Brian Foster
2015-03-02 13:27 ` [PATCH v6 03/18] xfs: support min/max agbno args in block allocator Brian Foster
2015-03-02 13:27 ` [PATCH v6 04/18] xfs: add sparse inode chunk alignment superblock field Brian Foster
2015-03-02 13:27 ` [PATCH v6 05/18] xfs: use sparse chunk alignment for min. inode allocation requirement Brian Foster
2015-03-02 13:27 ` [PATCH v6 06/18] xfs: sparse inode chunks feature helpers and mount requirements Brian Foster
2015-03-02 13:27 ` [PATCH v6 07/18] xfs: add fs geometry bit for sparse inode chunks Brian Foster
2015-03-02 13:27 ` [PATCH v6 08/18] xfs: introduce inode record hole mask " Brian Foster
2015-03-02 13:27 ` [PATCH v6 09/18] xfs: use actual inode count for sparse records in bulkstat/inumbers Brian Foster
2015-03-02 13:28 ` Brian Foster [this message]
2015-03-02 13:28 ` [PATCH v6 11/18] xfs: handle sparse inode chunks in icreate log recovery Brian Foster
2015-03-02 13:28 ` [PATCH v6 12/18] xfs: helper to convert holemask to inode alloc. bitmap Brian Foster
2015-03-02 13:28 ` [PATCH v6 13/18] xfs: allocate sparse inode chunks on full chunk allocation failure Brian Foster
2015-03-02 13:28 ` [PATCH v6 14/18] xfs: randomly do sparse inode allocations in DEBUG mode Brian Foster
2015-03-02 13:28 ` [PATCH v6 15/18] xfs: filter out sparse regions from individual inode allocation Brian Foster
2015-03-02 13:28 ` [PATCH v6 16/18] xfs: only free allocated regions of inode chunks Brian Foster
2015-03-02 13:28 ` [PATCH v6 17/18] xfs: skip unallocated regions of inode chunks in xfs_ifree_cluster() Brian Foster
2015-03-02 13:28 ` [PATCH v6 18/18] xfs: enable sparse inode chunks for v5 superblocks Brian Foster
2015-05-06 14:19 ` [PATCH v6 00/18] xfs: sparse inode chunks Brian Foster
2015-05-06 22:09 ` Dave Chinner
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=1425302888-4962-11-git-send-email-bfoster@redhat.com \
--to=bfoster@redhat.com \
--cc=xfs@oss.sgi.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