In e5cc9d560a ("mkfs: set agsize prior to calculating minimum log size"), we set the ag size in the superblock structure so that we can calculate the maximum btree height correctly. The btree heights are used to calculate transaction reservation sizes; these sizes are used to compute the minimum log length; and the minimum log length is checked by the kernel. Unfortunately, I didn't realize that some of the btree sizing functions also depend on the agblklog (log2 of the ag size), so we've been underestimating the minimum log length allowable, which results in mkfs formatting filesystems that the kernel refuses to mount. This can be trivially reproduced by formatting a small (~800M) volume with rmap and reflink turned on. Signed-off-by: Darrick J. Wong <darrick.wong@xxxxxxxxxx> --- mkfs/maxtrres.c | 1 + 1 file changed, 1 insertion(+) diff --git a/mkfs/maxtrres.c b/mkfs/maxtrres.c index fba7818..69ec67a 100644 --- a/mkfs/maxtrres.c +++ b/mkfs/maxtrres.c @@ -54,6 +54,7 @@ max_trans_res( sbp->sb_blocklog = blocklog; sbp->sb_blocksize = 1 << blocklog; sbp->sb_agblocks = agsize; + sbp->sb_agblklog = (uint8_t)libxfs_log2_roundup((unsigned int)agsize); sbp->sb_inodelog = inodelog; sbp->sb_inopblog = blocklog - inodelog; sbp->sb_inodesize = 1 << inodelog; -- To unsubscribe from this list: send the line "unsubscribe linux-xfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html