From: Dave Chinner <david@fromorbit.com>
To: xfs@oss.sgi.com
Subject: [PATCH 18/48] xfs: add buffer types to directory and attribute buffers
Date: Fri, 7 Jun 2013 10:25:41 +1000 [thread overview]
Message-ID: <1370564771-4929-19-git-send-email-david@fromorbit.com> (raw)
In-Reply-To: <1370564771-4929-1-git-send-email-david@fromorbit.com>
From: Dave Chinner <dchinner@redhat.com>
Add buffer types to the buffer log items so that log recovery can
validate the buffers and calculate CRCs correctly after the buffers
are recovered.
Signed-off-by: Dave Chinner <dchinner@redhat.com>
---
include/xfs_attr_remote.h | 2 ++
include/xfs_buf_item.h | 18 +++++++++++++++++-
include/xfs_da_btree.h | 2 ++
include/xfs_trans.h | 2 ++
libxfs/xfs.h | 1 +
libxfs/xfs_attr_leaf.c | 9 ++++++++-
libxfs/xfs_da_btree.c | 46 ++++++++++++++++++++++++++++++++++++++++++---
libxfs/xfs_dir2_block.c | 12 +++++++++---
libxfs/xfs_dir2_data.c | 8 +++++++-
libxfs/xfs_dir2_leaf.c | 24 +++++++++++++++++++----
libxfs/xfs_dir2_node.c | 17 ++++++++++++++---
libxfs/xfs_dir2_priv.h | 2 ++
12 files changed, 127 insertions(+), 16 deletions(-)
diff --git a/include/xfs_attr_remote.h b/include/xfs_attr_remote.h
index 9e71edf..28f6f10 100644
--- a/include/xfs_attr_remote.h
+++ b/include/xfs_attr_remote.h
@@ -43,6 +43,8 @@ struct xfs_attr3_rmt_hdr {
((bufsize) - (xfs_sb_version_hascrc(&(mp)->m_sb) ? \
sizeof(struct xfs_attr3_rmt_hdr) : 0))
+extern const struct xfs_buf_ops xfs_attr3_rmt_buf_ops;
+
int xfs_attr_rmtval_get(struct xfs_da_args *args);
int xfs_attr_rmtval_set(struct xfs_da_args *args);
int xfs_attr_rmtval_remove(struct xfs_da_args *args);
diff --git a/include/xfs_buf_item.h b/include/xfs_buf_item.h
index 09cab4e..640adcf 100644
--- a/include/xfs_buf_item.h
+++ b/include/xfs_buf_item.h
@@ -50,6 +50,14 @@ extern kmem_zone_t *xfs_buf_item_zone;
#define XFS_BLF_AGI_BUF (1<<8)
#define XFS_BLF_DINO_BUF (1<<9)
#define XFS_BLF_SYMLINK_BUF (1<<10)
+#define XFS_BLF_DIR_BLOCK_BUF (1<<11)
+#define XFS_BLF_DIR_DATA_BUF (1<<12)
+#define XFS_BLF_DIR_FREE_BUF (1<<13)
+#define XFS_BLF_DIR_LEAF1_BUF (1<<14)
+#define XFS_BLF_DIR_LEAFN_BUF (1<<15)
+#define XFS_BLF_DA_NODE_BUF (1<<16)
+#define XFS_BLF_ATTR_LEAF_BUF (1<<17)
+#define XFS_BLF_ATTR_RMT_BUF (1<<18)
#define XFS_BLF_TYPE_MASK \
(XFS_BLF_UDQUOT_BUF | \
@@ -60,7 +68,15 @@ extern kmem_zone_t *xfs_buf_item_zone;
XFS_BLF_AGFL_BUF | \
XFS_BLF_AGI_BUF | \
XFS_BLF_DINO_BUF | \
- XFS_BLF_SYMLINK_BUF)
+ XFS_BLF_SYMLINK_BUF | \
+ XFS_BLF_DIR_BLOCK_BUF | \
+ XFS_BLF_DIR_DATA_BUF | \
+ XFS_BLF_DIR_FREE_BUF | \
+ XFS_BLF_DIR_LEAF1_BUF | \
+ XFS_BLF_DIR_LEAFN_BUF | \
+ XFS_BLF_DA_NODE_BUF | \
+ XFS_BLF_ATTR_LEAF_BUF | \
+ XFS_BLF_ATTR_RMT_BUF)
#define XFS_BLF_CHUNK 128
#define XFS_BLF_SHIFT 7
diff --git a/include/xfs_da_btree.h b/include/xfs_da_btree.h
index 0e8182c..6fb3371 100644
--- a/include/xfs_da_btree.h
+++ b/include/xfs_da_btree.h
@@ -301,6 +301,8 @@ int xfs_da3_node_read(struct xfs_trans *tp, struct xfs_inode *dp,
xfs_dablk_t bno, xfs_daddr_t mappedbno,
struct xfs_buf **bpp, int which_fork);
+extern const struct xfs_buf_ops xfs_da3_node_buf_ops;
+
/*
* Utility routines.
*/
diff --git a/include/xfs_trans.h b/include/xfs_trans.h
index a9bd826..9e145e9 100644
--- a/include/xfs_trans.h
+++ b/include/xfs_trans.h
@@ -502,6 +502,8 @@ void xfs_trans_dquot_buf(xfs_trans_t *, struct xfs_buf *, uint);
void xfs_trans_inode_alloc_buf(xfs_trans_t *, struct xfs_buf *);
void xfs_trans_buf_set_type(struct xfs_trans *, struct xfs_buf *,
uint);
+void xfs_trans_buf_copy_type(struct xfs_buf *dst_bp,
+ struct xfs_buf *src_bp);
void xfs_trans_ichgtime(struct xfs_trans *, struct xfs_inode *, int);
void xfs_trans_ijoin(struct xfs_trans *, struct xfs_inode *, uint);
void xfs_trans_log_buf(xfs_trans_t *, struct xfs_buf *, uint, uint);
diff --git a/libxfs/xfs.h b/libxfs/xfs.h
index c69dc4a..6bec18e 100644
--- a/libxfs/xfs.h
+++ b/libxfs/xfs.h
@@ -255,6 +255,7 @@ roundup_pow_of_two(uint v)
#define xfs_trans_agflist_delta(tp, d)
#define xfs_trans_agbtree_delta(tp, d)
#define xfs_trans_buf_set_type(tp, bp, t)
+#define xfs_trans_buf_copy_type(dbp, sbp)
#define xfs_buf_readahead(a,b,c,ops) ((void) 0) /* no readahead */
#define xfs_buf_readahead_map(a,b,c,ops) ((void) 0) /* no readahead */
diff --git a/libxfs/xfs_attr_leaf.c b/libxfs/xfs_attr_leaf.c
index 9de2244..7724781 100644
--- a/libxfs/xfs_attr_leaf.c
+++ b/libxfs/xfs_attr_leaf.c
@@ -236,8 +236,13 @@ xfs_attr3_leaf_read(
xfs_daddr_t mappedbno,
struct xfs_buf **bpp)
{
- return xfs_da_read_buf(tp, dp, bno, mappedbno, bpp,
+ int err;
+
+ err = xfs_da_read_buf(tp, dp, bno, mappedbno, bpp,
XFS_ATTR_FORK, &xfs_attr3_leaf_buf_ops);
+ if (!err && tp)
+ xfs_trans_buf_set_type(tp, *bpp, XFS_BLF_ATTR_LEAF_BUF);
+ return err;
}
/*========================================================================
@@ -867,6 +872,7 @@ xfs_attr3_leaf_to_node(
goto out;
/* copy leaf to new buffer, update identifiers */
+ xfs_trans_buf_set_type(args->trans, bp2, XFS_BLF_ATTR_LEAF_BUF);
bp2->b_ops = bp1->b_ops;
memcpy(bp2->b_addr, bp1->b_addr, XFS_LBSIZE(mp));
if (xfs_sb_version_hascrc(&mp->m_sb)) {
@@ -929,6 +935,7 @@ xfs_attr3_leaf_create(
if (error)
return error;
bp->b_ops = &xfs_attr3_leaf_buf_ops;
+ xfs_trans_buf_set_type(args->trans, bp, XFS_BLF_ATTR_LEAF_BUF);
leaf = bp->b_addr;
memset(leaf, 0, XFS_LBSIZE(mp));
diff --git a/libxfs/xfs_da_btree.c b/libxfs/xfs_da_btree.c
index 5db94db..ef443ae 100644
--- a/libxfs/xfs_da_btree.c
+++ b/libxfs/xfs_da_btree.c
@@ -270,7 +270,6 @@ const struct xfs_buf_ops xfs_da3_node_buf_ops = {
.verify_write = xfs_da3_node_write_verify,
};
-
int
xfs_da3_node_read(
struct xfs_trans *tp,
@@ -280,8 +279,35 @@ xfs_da3_node_read(
struct xfs_buf **bpp,
int which_fork)
{
- return xfs_da_read_buf(tp, dp, bno, mappedbno, bpp,
+ int err;
+
+ err = xfs_da_read_buf(tp, dp, bno, mappedbno, bpp,
which_fork, &xfs_da3_node_buf_ops);
+ if (!err && tp) {
+ struct xfs_da_blkinfo *info = (*bpp)->b_addr;
+ int type;
+
+ switch (be16_to_cpu(info->magic)) {
+ case XFS_DA3_NODE_MAGIC:
+ case XFS_DA_NODE_MAGIC:
+ type = XFS_BLF_DA_NODE_BUF;
+ break;
+ case XFS_ATTR_LEAF_MAGIC:
+ case XFS_ATTR3_LEAF_MAGIC:
+ type = XFS_BLF_ATTR_LEAF_BUF;
+ break;
+ case XFS_DIR2_LEAFN_MAGIC:
+ case XFS_DIR3_LEAFN_MAGIC:
+ type = XFS_BLF_DIR_LEAFN_BUF;
+ break;
+ default:
+ type = 0;
+ ASSERT(0);
+ break;
+ }
+ xfs_trans_buf_set_type(tp, *bpp, type);
+ }
+ return err;
}
/*========================================================================
@@ -312,6 +338,8 @@ xfs_da3_node_create(
error = xfs_da_get_buf(tp, args->dp, blkno, -1, &bp, whichfork);
if (error)
return(error);
+ bp->b_ops = &xfs_da3_node_buf_ops;
+ xfs_trans_buf_set_type(tp, bp, XFS_BLF_DA_NODE_BUF);
node = bp->b_addr;
if (xfs_sb_version_hascrc(&mp->m_sb)) {
@@ -330,7 +358,6 @@ xfs_da3_node_create(
xfs_trans_log_buf(tp, bp,
XFS_DA_LOGRANGE(node, &node->hdr, xfs_da3_node_hdr_size(node)));
- bp->b_ops = &xfs_da3_node_buf_ops;
*bpp = bp;
return(0);
}
@@ -541,6 +568,12 @@ xfs_da3_root_split(
btree = xfs_da3_node_tree_p(oldroot);
size = (int)((char *)&btree[nodehdr.count] - (char *)oldroot);
level = nodehdr.level;
+
+ /*
+ * we are about to copy oldroot to bp, so set up the type
+ * of bp while we know exactly what it will be.
+ */
+ xfs_trans_buf_set_type(tp, bp, XFS_BLF_DA_NODE_BUF);
} else {
struct xfs_dir3_icleaf_hdr leafhdr;
struct xfs_dir2_leaf_entry *ents;
@@ -553,6 +586,12 @@ xfs_da3_root_split(
leafhdr.magic == XFS_DIR3_LEAFN_MAGIC);
size = (int)((char *)&ents[leafhdr.count] - (char *)leaf);
level = 0;
+
+ /*
+ * we are about to copy oldroot to bp, so set up the type
+ * of bp while we know exactly what it will be.
+ */
+ xfs_trans_buf_set_type(tp, bp, XFS_BLF_DIR_LEAFN_BUF);
}
/*
@@ -1068,6 +1107,7 @@ xfs_da3_root_join(
*/
memcpy(root_blk->bp->b_addr, bp->b_addr, state->blocksize);
root_blk->bp->b_ops = bp->b_ops;
+ xfs_trans_buf_copy_type(root_blk->bp, bp);
if (oldroothdr.magic == XFS_DA3_NODE_MAGIC) {
struct xfs_da3_blkinfo *da3 = root_blk->bp->b_addr;
da3->blkno = cpu_to_be64(root_blk->bp->b_bn);
diff --git a/libxfs/xfs_dir2_block.c b/libxfs/xfs_dir2_block.c
index b98b749..574e414 100644
--- a/libxfs/xfs_dir2_block.c
+++ b/libxfs/xfs_dir2_block.c
@@ -114,20 +114,26 @@ xfs_dir3_block_read(
struct xfs_buf **bpp)
{
struct xfs_mount *mp = dp->i_mount;
+ int err;
- return xfs_da_read_buf(tp, dp, mp->m_dirdatablk, -1, bpp,
+ err = xfs_da_read_buf(tp, dp, mp->m_dirdatablk, -1, bpp,
XFS_DATA_FORK, &xfs_dir3_block_buf_ops);
+ if (!err && tp)
+ xfs_trans_buf_set_type(tp, *bpp, XFS_BLF_DIR_BLOCK_BUF);
+ return err;
}
static void
xfs_dir3_block_init(
struct xfs_mount *mp,
+ struct xfs_trans *tp,
struct xfs_buf *bp,
struct xfs_inode *dp)
{
struct xfs_dir3_blk_hdr *hdr3 = bp->b_addr;
bp->b_ops = &xfs_dir3_block_buf_ops;
+ xfs_trans_buf_set_type(tp, bp, XFS_BLF_DIR_BLOCK_BUF);
if (xfs_sb_version_hascrc(&mp->m_sb)) {
memset(hdr3, 0, sizeof(*hdr3));
@@ -964,7 +970,7 @@ xfs_dir2_leaf_to_block(
/*
* Start converting it to block form.
*/
- xfs_dir3_block_init(mp, dbp, dp);
+ xfs_dir3_block_init(mp, tp, dbp, dp);
needlog = 1;
needscan = 0;
@@ -1093,7 +1099,7 @@ xfs_dir2_sf_to_block(
kmem_free(sfp);
return error;
}
- xfs_dir3_block_init(mp, bp, dp);
+ xfs_dir3_block_init(mp, tp, bp, dp);
hdr = bp->b_addr;
/*
diff --git a/libxfs/xfs_dir2_data.c b/libxfs/xfs_dir2_data.c
index 69841df..9752ae3 100644
--- a/libxfs/xfs_dir2_data.c
+++ b/libxfs/xfs_dir2_data.c
@@ -283,8 +283,13 @@ xfs_dir3_data_read(
xfs_daddr_t mapped_bno,
struct xfs_buf **bpp)
{
- return xfs_da_read_buf(tp, dp, bno, mapped_bno, bpp,
+ int err;
+
+ err = xfs_da_read_buf(tp, dp, bno, mapped_bno, bpp,
XFS_DATA_FORK, &xfs_dir3_data_buf_ops);
+ if (!err && tp)
+ xfs_trans_buf_set_type(tp, *bpp, XFS_BLF_DIR_DATA_BUF);
+ return err;
}
int
@@ -553,6 +558,7 @@ xfs_dir3_data_init(
if (error)
return error;
bp->b_ops = &xfs_dir3_data_buf_ops;
+ xfs_trans_buf_set_type(tp, bp, XFS_BLF_DIR_DATA_BUF);
/*
* Initialize the header.
diff --git a/libxfs/xfs_dir2_leaf.c b/libxfs/xfs_dir2_leaf.c
index f00b23c..3d1ec23 100644
--- a/libxfs/xfs_dir2_leaf.c
+++ b/libxfs/xfs_dir2_leaf.c
@@ -279,8 +279,13 @@ xfs_dir3_leaf_read(
xfs_daddr_t mappedbno,
struct xfs_buf **bpp)
{
- return xfs_da_read_buf(tp, dp, fbno, mappedbno, bpp,
+ int err;
+
+ err = xfs_da_read_buf(tp, dp, fbno, mappedbno, bpp,
XFS_DATA_FORK, &xfs_dir3_leaf1_buf_ops);
+ if (!err && tp)
+ xfs_trans_buf_set_type(tp, *bpp, XFS_BLF_DIR_LEAF1_BUF);
+ return err;
}
int
@@ -291,8 +296,13 @@ xfs_dir3_leafn_read(
xfs_daddr_t mappedbno,
struct xfs_buf **bpp)
{
- return xfs_da_read_buf(tp, dp, fbno, mappedbno, bpp,
+ int err;
+
+ err = xfs_da_read_buf(tp, dp, fbno, mappedbno, bpp,
XFS_DATA_FORK, &xfs_dir3_leafn_buf_ops);
+ if (!err && tp)
+ xfs_trans_buf_set_type(tp, *bpp, XFS_BLF_DIR_LEAFN_BUF);
+ return err;
}
/*
@@ -301,6 +311,7 @@ xfs_dir3_leafn_read(
static void
xfs_dir3_leaf_init(
struct xfs_mount *mp,
+ struct xfs_trans *tp,
struct xfs_buf *bp,
xfs_ino_t owner,
__uint16_t type)
@@ -335,8 +346,11 @@ xfs_dir3_leaf_init(
ltp = xfs_dir2_leaf_tail_p(mp, leaf);
ltp->bestcount = 0;
bp->b_ops = &xfs_dir3_leaf1_buf_ops;
- } else
+ xfs_trans_buf_set_type(tp, bp, XFS_BLF_DIR_LEAF1_BUF);
+ } else {
bp->b_ops = &xfs_dir3_leafn_buf_ops;
+ xfs_trans_buf_set_type(tp, bp, XFS_BLF_DIR_LEAFN_BUF);
+ }
}
int
@@ -361,7 +375,7 @@ xfs_dir3_leaf_get_buf(
if (error)
return error;
- xfs_dir3_leaf_init(mp, bp, dp->i_ino, magic);
+ xfs_dir3_leaf_init(mp, tp, bp, dp->i_ino, magic);
xfs_dir3_leaf_log_header(tp, bp);
if (magic == XFS_DIR2_LEAF1_MAGIC)
xfs_dir3_leaf_log_tail(tp, bp);
@@ -456,6 +470,7 @@ xfs_dir2_block_to_leaf(
* Fix up the block header, make it a data block.
*/
dbp->b_ops = &xfs_dir3_data_buf_ops;
+ xfs_trans_buf_set_type(tp, dbp, XFS_BLF_DIR_DATA_BUF);
if (hdr->magic == cpu_to_be32(XFS_DIR2_BLOCK_MAGIC))
hdr->magic = cpu_to_be32(XFS_DIR2_DATA_MAGIC);
else
@@ -1776,6 +1791,7 @@ xfs_dir2_node_to_leaf(
xfs_dir3_leaf_compact(args, &leafhdr, lbp);
lbp->b_ops = &xfs_dir3_leaf1_buf_ops;
+ xfs_trans_buf_set_type(tp, lbp, XFS_BLF_DIR_LEAF1_BUF);
leafhdr.magic = (leafhdr.magic == XFS_DIR2_LEAFN_MAGIC)
? XFS_DIR2_LEAF1_MAGIC
: XFS_DIR3_LEAF1_MAGIC;
diff --git a/libxfs/xfs_dir2_node.c b/libxfs/xfs_dir2_node.c
index 9e75553..a88049b 100644
--- a/libxfs/xfs_dir2_node.c
+++ b/libxfs/xfs_dir2_node.c
@@ -130,7 +130,7 @@ xfs_dir3_free_write_verify(
xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), XFS_DIR3_FREE_CRC_OFF);
}
-static const struct xfs_buf_ops xfs_dir3_free_buf_ops = {
+const struct xfs_buf_ops xfs_dir3_free_buf_ops = {
.verify_read = xfs_dir3_free_read_verify,
.verify_write = xfs_dir3_free_write_verify,
};
@@ -144,8 +144,15 @@ __xfs_dir3_free_read(
xfs_daddr_t mappedbno,
struct xfs_buf **bpp)
{
- return xfs_da_read_buf(tp, dp, fbno, mappedbno, bpp,
+ int err;
+
+ err = xfs_da_read_buf(tp, dp, fbno, mappedbno, bpp,
XFS_DATA_FORK, &xfs_dir3_free_buf_ops);
+
+ /* try read returns without an error or *bpp if it lands in a hole */
+ if (!err && tp && *bpp)
+ xfs_trans_buf_set_type(tp, *bpp, XFS_BLF_DIR_FREE_BUF);
+ return err;
}
int
@@ -232,7 +239,8 @@ xfs_dir3_free_get_buf(
if (error)
return error;
- bp->b_ops = &xfs_dir3_free_buf_ops;;
+ xfs_trans_buf_set_type(tp, bp, XFS_BLF_DIR_FREE_BUF);
+ bp->b_ops = &xfs_dir3_free_buf_ops;
/*
* Initialize the new block to be empty, and remember
@@ -380,6 +388,7 @@ xfs_dir2_leaf_to_node(
else
leaf->hdr.info.magic = cpu_to_be16(XFS_DIR3_LEAFN_MAGIC);
lbp->b_ops = &xfs_dir3_leafn_buf_ops;
+ xfs_trans_buf_set_type(tp, lbp, XFS_BLF_DIR_LEAFN_BUF);
xfs_dir3_leaf_log_header(tp, lbp);
xfs_dir3_leaf_check(mp, lbp);
return 0;
@@ -795,6 +804,7 @@ xfs_dir2_leafn_lookup_for_entry(
(char *)curbp->b_addr);
state->extrablk.magic = XFS_DIR2_DATA_MAGIC;
curbp->b_ops = &xfs_dir3_data_buf_ops;
+ xfs_trans_buf_set_type(tp, curbp, XFS_BLF_DIR_DATA_BUF);
if (cmp == XFS_CMP_EXACT)
return XFS_ERROR(EEXIST);
}
@@ -809,6 +819,7 @@ xfs_dir2_leafn_lookup_for_entry(
state->extrablk.blkno = curdb;
state->extrablk.magic = XFS_DIR2_DATA_MAGIC;
curbp->b_ops = &xfs_dir3_data_buf_ops;
+ xfs_trans_buf_set_type(tp, curbp, XFS_BLF_DIR_DATA_BUF);
} else {
/* If the curbp is not the CI match block, drop it */
if (state->extrablk.bp != curbp)
diff --git a/libxfs/xfs_dir2_priv.h b/libxfs/xfs_dir2_priv.h
index 932565d..7cf573c 100644
--- a/libxfs/xfs_dir2_priv.h
+++ b/libxfs/xfs_dir2_priv.h
@@ -49,6 +49,7 @@ extern int xfs_dir2_leaf_to_block(struct xfs_da_args *args,
#endif
extern const struct xfs_buf_ops xfs_dir3_data_buf_ops;
+extern const struct xfs_buf_ops xfs_dir3_free_buf_ops;
extern int __xfs_dir3_data_check(struct xfs_inode *dp, struct xfs_buf *bp);
extern int xfs_dir3_data_read(struct xfs_trans *tp, struct xfs_inode *dp,
@@ -77,6 +78,7 @@ extern void xfs_dir2_data_use_free(struct xfs_trans *tp, struct xfs_buf *bp,
xfs_dir2_data_aoff_t len, int *needlogp, int *needscanp);
/* xfs_dir2_leaf.c */
+extern const struct xfs_buf_ops xfs_dir3_leaf1_buf_ops;
extern const struct xfs_buf_ops xfs_dir3_leafn_buf_ops;
extern int xfs_dir3_leafn_read(struct xfs_trans *tp, struct xfs_inode *dp,
--
1.7.10.4
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
next prev parent reply other threads:[~2013-06-07 0:26 UTC|newest]
Thread overview: 165+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-07 0:25 [PATCH 00/48] xfsprogs: CRC support Dave Chinner
2013-06-07 0:25 ` [PATCH 01/48] mkfs: fix realtime device initialisation Dave Chinner
2013-06-07 0:25 ` [PATCH 02/48] logprint: fix wrapped log dump issue Dave Chinner
2013-07-22 21:44 ` Ben Myers
2013-06-07 0:25 ` [PATCH 03/48] libxfs: add crc format changes to generic btrees Dave Chinner
2013-07-23 18:26 ` Ben Myers
2013-07-25 0:48 ` Dave Chinner
2013-07-25 17:15 ` Ben Myers
2013-07-26 0:39 ` Dave Chinner
2013-07-26 15:22 ` Ben Myers
2013-08-06 15:23 ` [PATCH 03a/48] xfs: don't verify bmbt reads twice Ben Myers
2013-06-07 0:25 ` [PATCH 04/48] xfsprogs: add crc format chagnes to ag headers Dave Chinner
2013-07-23 18:52 ` Ben Myers
2013-08-06 15:42 ` Ben Myers
2013-06-07 0:25 ` [PATCH 05/48] xfsprogs: Support new AGFL format Dave Chinner
2013-07-23 19:10 ` Ben Myers
2013-06-07 0:25 ` [PATCH 06/48] libxfs: change quota buffer formats Dave Chinner
2013-07-23 19:17 ` Ben Myers
2013-06-07 0:25 ` [PATCH 07/48] libxfs: add version 3 inode support Dave Chinner
2013-07-23 22:30 ` Ben Myers
2013-07-25 0:52 ` Dave Chinner
2013-08-06 16:23 ` Ben Myers
2013-06-07 0:25 ` [PATCH 08/48] libxfs: add support for crc headers on remote symlinks Dave Chinner
2013-07-24 20:07 ` Ben Myers
2013-06-07 0:25 ` [PATCH 09/48] xfs: add CRC checks to block format directory blocks Dave Chinner
2013-07-24 20:53 ` Ben Myers
2013-07-25 0:57 ` Dave Chinner
2013-06-07 0:25 ` [PATCH 10/48] xfs: add CRC checking to dir2 free blocks Dave Chinner
2013-07-24 21:29 ` Ben Myers
2013-06-07 0:25 ` [PATCH 11/48] xfs: add CRC checking to dir2 data blocks Dave Chinner
2013-07-24 22:23 ` Ben Myers
2013-06-07 0:25 ` [PATCH 12/48] xfs: add CRC checking to dir2 leaf blocks Dave Chinner
2013-07-24 23:00 ` Ben Myers
2013-07-25 16:33 ` Ben Myers
2013-06-07 0:25 ` [PATCH 13/48] xfs: shortform directory offsets change for dir3 format Dave Chinner
2013-07-25 17:28 ` Ben Myers
2013-06-07 0:25 ` [PATCH 14/48] xfs: add CRCs to dir2/da node blocks Dave Chinner
2013-07-25 18:58 ` Ben Myers
2013-06-07 0:25 ` [PATCH 15/48] xfs: add CRCs to attr leaf blocks Dave Chinner
2013-07-25 19:53 ` Ben Myers
2013-06-07 0:25 ` [PATCH 16/48] xfs: split remote attribute code out Dave Chinner
2013-07-25 20:27 ` Ben Myers
2013-06-07 0:25 ` [PATCH 17/48] xfs: add CRC protection to remote attributes Dave Chinner
2013-07-25 20:34 ` Ben Myers
2013-06-07 0:25 ` Dave Chinner [this message]
2013-07-25 20:54 ` [PATCH 18/48] xfs: add buffer types to directory and attribute buffers Ben Myers
2013-06-07 0:25 ` [PATCH 19/48] xfs: buffer type overruns blf_flags field Dave Chinner
2013-07-25 21:08 ` Ben Myers
2013-06-07 0:25 ` [PATCH 20/48] xfs: add CRC checks to the superblock Dave Chinner
2013-07-25 21:48 ` Ben Myers
2013-06-07 0:25 ` [PATCH 21/48] xfs: implement extended feature masks Dave Chinner
2013-07-25 22:08 ` Ben Myers
2013-07-26 0:19 ` Dave Chinner
2013-06-07 0:25 ` [PATCH 22/48] xfsprogs: Add verifiers to libxfs buffer interfaces Dave Chinner
2013-07-26 21:58 ` Ben Myers
2013-07-30 23:59 ` Dave Chinner
2013-06-07 0:25 ` [PATCH 23/48] xfsprogs: introduce CRC support into mkfs.xfs Dave Chinner
2013-07-30 21:08 ` Ben Myers
2013-06-07 0:25 ` [PATCH 24/48] xfsprogs: add crc format support to repair Dave Chinner
2013-08-01 16:21 ` Ben Myers
2013-06-07 0:25 ` [PATCH 25/48] xfs_repair: update for dir/attr crc format changes Dave Chinner
2013-08-01 18:44 ` Ben Myers
2013-06-07 0:25 ` [PATCH 26/48] xfsprogs: disable xfs_check for CRC enabled filesystems Dave Chinner
2013-08-01 19:01 ` Ben Myers
2013-06-07 0:25 ` [PATCH 27/48] xfs_db: disable modification for CRC enabled filessytems Dave Chinner
2013-08-01 19:11 ` Ben Myers
2013-06-07 0:25 ` [PATCH 28/48] libxfs: determine inode size from version number, not struct xfs_dinode Dave Chinner
2013-08-01 21:32 ` Ben Myers
2013-06-07 0:25 ` [PATCH 29/48] xfsdb: support version 5 superblock in versionnum command Dave Chinner
2013-08-01 21:44 ` Ben Myers
2013-06-07 0:25 ` [PATCH 30/48] xfsprogs: add crc format support to db Dave Chinner
2013-08-01 22:42 ` Ben Myers
2013-06-07 0:25 ` [PATCH 31/48] xfs_repair: always use incore header for directory block checks Dave Chinner
2013-08-01 22:46 ` Ben Myers
2013-06-07 0:25 ` [PATCH 32/48] xfs_db: convert directory parsing to use libxfs structure Dave Chinner
2013-08-05 14:52 ` Ben Myers
2013-06-07 0:25 ` [PATCH 33/48] xfs_db: factor some common dir2 field parsing code Dave Chinner
2013-08-05 15:17 ` Ben Myers
2013-06-07 0:25 ` [PATCH 34/48] xfs_db: update field printing for dir crc format changes Dave Chinner
2013-08-05 18:17 ` Ben Myers
2013-06-07 0:25 ` [PATCH 35/48] xfs_repair: convert directory parsing to use libxfs structure Dave Chinner
2013-08-05 18:32 ` Ben Myers
2013-06-07 0:25 ` [PATCH 36/48] xfs_repair: make directory freespace table CRC format aware Dave Chinner
2013-08-05 18:39 ` Ben Myers
2013-06-07 0:26 ` [PATCH 37/48] xfs_db: add CRC information to dquot output Dave Chinner
2013-08-05 18:42 ` Ben Myers
2013-06-07 0:26 ` [PATCH 38/48] xfs_db: add CRC support for attribute fork structures Dave Chinner
2013-08-05 20:02 ` Ben Myers
2013-06-07 0:26 ` [PATCH 39/48] mkfs.xfs: validate options for CRCs up front Dave Chinner
2013-06-20 21:17 ` Geoffrey Wehrman
2013-06-20 23:05 ` Dave Chinner
2013-06-21 13:44 ` Geoffrey Wehrman
2013-08-05 20:33 ` Ben Myers
2013-06-07 0:26 ` [PATCH 40/48] xfsprogs: support CRC enabled filesystem detection Dave Chinner
2013-08-05 20:43 ` Ben Myers
2013-06-07 0:26 ` [PATCH 41/48] xfs_mdrestore: recalculate sb CRC before writing Dave Chinner
2013-08-05 20:48 ` Ben Myers
2013-06-07 0:26 ` [PATCH 42/48] xfs_metadump: requires some object CRC recalculation Dave Chinner
2013-08-05 20:57 ` Ben Myers
2013-06-07 0:26 ` [PATCH 43/48] xfs_repair: drop buffer reference on symlink error Dave Chinner
2013-08-05 21:00 ` Ben Myers
2013-06-07 0:26 ` [PATCH 44/48] xfs_db: add support for CRC format remote symlinks Dave Chinner
2013-08-05 21:11 ` Ben Myers
2013-06-07 0:26 ` [PATCH 45/48] xfs_repair: fix btree block magic number mapping Dave Chinner
2013-08-05 21:16 ` Ben Myers
2013-06-07 0:26 ` [PATCH 46/48] libxfs: fix dir3 freespace block corruption Dave Chinner
2013-08-05 21:22 ` Ben Myers
2013-06-07 0:26 ` [PATCH 47/48] xfs_repair: support CRC enabled remote symlinks Dave Chinner
2013-08-05 21:40 ` Ben Myers
2013-06-07 0:26 ` [PATCH 48/48] xfsprogs: Document XFs specific mount options in xfs(5) Dave Chinner
2013-06-07 1:41 ` Dave Chinner
2013-06-07 6:11 ` [PATCH 00/48] xfsprogs: CRC support Dave Chinner
2013-06-07 21:04 ` Ben Myers
2013-06-10 22:16 ` Chandra Seetharaman
2013-06-10 23:56 ` Dave Chinner
2013-06-11 18:38 ` Ben Myers
2013-06-07 12:24 ` [PATCH 00/12] xfsprogs: add recent kernel CRC fixes Dave Chinner
2013-06-07 12:24 ` [PATCH 01/12] xfs: fix da node magic number mismatches Dave Chinner
2013-08-05 21:43 ` Ben Myers
2013-06-07 12:24 ` [PATCH 02/12] xfs: Remote attr validation fixes and optimisations Dave Chinner
2013-08-05 21:47 ` Ben Myers
2013-06-07 12:24 ` [PATCH 03/12] xfs: xfs_attr_shortform_allfit() does not handle attr3 format Dave Chinner
2013-08-05 21:49 ` Ben Myers
2013-06-07 12:24 ` [PATCH 04/12] xfs: remote attribute lookups require the value length Dave Chinner
2013-08-05 21:52 ` Ben Myers
2013-06-07 12:24 ` [PATCH 05/12] xfs: remote attribute allocation may be contiguous Dave Chinner
2013-08-05 21:54 ` Ben Myers
2013-06-07 12:24 ` [PATCH 06/12] xfs: remote attribute read too short Dave Chinner
2013-08-05 21:57 ` Ben Myers
2013-06-07 12:24 ` [PATCH 07/12] xfs: remote attribute tail zeroing does too much Dave Chinner
2013-08-05 21:59 ` Ben Myers
2013-06-07 12:24 ` [PATCH 08/12] xfs: correctly map remote attr buffers during removal Dave Chinner
2013-08-05 22:07 ` Ben Myers
2013-06-07 12:24 ` [PATCH 09/12] xfs: fully initialise temp leaf in xfs_attr3_leaf_unbalance Dave Chinner
2013-08-05 22:12 ` Ben Myers
2013-06-07 12:24 ` [PATCH 10/12] xfs: fully initialise temp leaf in xfs_attr3_leaf_compact Dave Chinner
2013-08-05 22:16 ` Ben Myers
2013-06-07 12:25 ` [PATCH 11/12] xfs: rework remote attr CRCs Dave Chinner
2013-08-05 22:25 ` Ben Myers
2013-06-07 12:25 ` [PATCH 12/12] xfs: don't emit v5 superblock warnings on write Dave Chinner
2013-08-05 22:28 ` Ben Myers
2013-08-06 21:41 ` [PATCH 00/48] xfsprogs: CRC support Ben Myers
2013-08-08 21:06 ` [PATCH 0/14] xfsprogs: various issues from review Ben Myers
2013-08-08 21:07 ` [PATCH 1/14] libxfs: don't verify bmbt reads twice Ben Myers
2013-08-08 21:08 ` [PATCH 2/14] xfsprogs: XFS_AGF_NUM_BITS should be 13 Ben Myers
2013-08-08 21:13 ` [PATCH 3/14] xfsprogs: pull in the rest of 93848a999cf Ben Myers
2013-08-11 23:26 ` ***** SUSPECTED SPAM ***** " Dave Chinner
2013-08-08 21:16 ` [PATCH 04/14] xfsprogs: fix gpl headers in xfs_symlink Ben Myers
2013-08-08 21:20 ` [PATCH 5/14] xfsprogs: sync commit f5f3d9b016 completely Ben Myers
2013-08-08 22:05 ` Eric Sandeen
2013-08-11 23:23 ` ***** SUSPECTED SPAM ***** " Dave Chinner
2013-08-08 21:24 ` [PATCH 6/14] xfsprogs: cleanup some whitespace Ben Myers
2013-08-11 23:24 ` ***** SUSPECTED SPAM ***** " Dave Chinner
2013-08-08 21:33 ` [PATCH 7/14] xfsprogs: fix issues with commit 75c8b4343abb Ben Myers
2013-08-11 23:31 ` ***** SUSPECTED SPAM ***** " Dave Chinner
2013-08-08 21:53 ` [PATCH 8/14] xfsprogs: fix issues with e0607266f23 Ben Myers
2013-08-08 22:07 ` Eric Sandeen
2013-08-08 22:14 ` Eric Sandeen
2013-08-08 22:28 ` [v2 PATCH " Ben Myers
2013-08-08 23:26 ` Eric Sandeen
2013-08-08 23:34 ` Eric Sandeen
2013-08-09 14:00 ` Ben Myers
2013-08-08 22:00 ` [PATCH 9] xfsprogs: issues with a24374f41c9 Ben Myers
2013-08-08 22:02 ` [PATCH 0/14] xfsprogs: various issues from review Ben Myers
2013-08-11 23:33 ` ***** SUSPECTED SPAM ***** " 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=1370564771-4929-19-git-send-email-david@fromorbit.com \
--to=david@fromorbit.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