summaryrefslogtreecommitdiffstats
path: root/fs/xfs/xfs_btree.c
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-06-17 11:54:25 -0700
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-06-17 11:54:25 -0700
commit0e496b8e84410c96d1ffc86f0b37b0328a4234da (patch)
treed8a2aeeaee03eb4f305ba4dc5ab9395c4ee31321 /fs/xfs/xfs_btree.c
parent214da6728acac285cac0e8e9b6c4c13838b8e1b0 (diff)
parent7d132055814ef17a6c7b69f342244c410a5e000f (diff)
downloadlinux-0e496b8e84410c96d1ffc86f0b37b0328a4234da.tar.bz2
Merge 3.10-rc6 into char-misc-next
We want the fixes in here.
Diffstat (limited to 'fs/xfs/xfs_btree.c')
-rw-r--r--fs/xfs/xfs_btree.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/fs/xfs/xfs_btree.c b/fs/xfs/xfs_btree.c
index 8804b8a3c310..0903960410a2 100644
--- a/fs/xfs/xfs_btree.c
+++ b/fs/xfs/xfs_btree.c
@@ -2544,7 +2544,17 @@ xfs_btree_new_iroot(
if (error)
goto error0;
+ /*
+ * we can't just memcpy() the root in for CRC enabled btree blocks.
+ * In that case have to also ensure the blkno remains correct
+ */
memcpy(cblock, block, xfs_btree_block_len(cur));
+ if (cur->bc_flags & XFS_BTREE_CRC_BLOCKS) {
+ if (cur->bc_flags & XFS_BTREE_LONG_PTRS)
+ cblock->bb_u.l.bb_blkno = cpu_to_be64(cbp->b_bn);
+ else
+ cblock->bb_u.s.bb_blkno = cpu_to_be64(cbp->b_bn);
+ }
be16_add_cpu(&block->bb_level, 1);
xfs_btree_set_numrecs(block, 1);