| --- linux-3.10.0-327.22.2.el7.a/fs/xfs/libxfs/xfs_alloc.c 2016-07-07 03:57:19.366512544 +0800 | |
| +++ linux-3.10.0-327.22.2.el7.b/fs/xfs/libxfs/xfs_alloc.c 2016-07-07 09:30:32.178766480 +0800 | |
| @@ -309,7 +309,8 @@ xfs_alloc_fixup_trees( | |
| xfs_extlen_t flen, /* length of free extent */ | |
| xfs_agblock_t rbno, /* starting block of returned extent */ | |
| xfs_extlen_t rlen, /* length of returned extent */ | |
| - int flags) /* flags, XFSA_FIXUP_... */ | |
| + int flags, /* flags, XFSA_FIXUP_... */ | |
| + int isfl) | |
| { | |
| int error; /* error code */ | |
| int i; /* operation results */ | |
| @@ -376,15 +377,27 @@ xfs_alloc_fixup_trees( | |
| nfbno1 = rbno + rlen; | |
| nflen1 = flen - rlen; | |
| nfbno2 = NULLAGBLOCK; | |
| + if (isfl) | |
| + xfs_warn(mp, | |
| + "Case 1 Inserting: nfbno1: %d, nflen1: %d, nfbno2: %d, nflen2: %d, fbno: %d, flen: %d, rbno: %d, rlen: %d", | |
| + nfbno1, nflen1, nfbno2, nflen2, fbno, flen, rbno, rlen); | |
| } else if (rbno + rlen == fbno + flen) { | |
| nfbno1 = fbno; | |
| nflen1 = flen - rlen; | |
| nfbno2 = NULLAGBLOCK; | |
| + if (isfl) | |
| + xfs_warn(mp, | |
| + "Case 2 Inserting: nfbno1: %d, nflen1: %d, nfbno2: %d, nflen2: %d, fbno: %d, flen: %d, rbno: %d, rlen: %d", | |
| + nfbno1, nflen1, nfbno2, nflen2, fbno, flen, rbno, rlen); | |
| } else { | |
| nfbno1 = fbno; | |
| nflen1 = rbno - fbno; | |
| nfbno2 = rbno + rlen; | |
| nflen2 = (fbno + flen) - nfbno2; | |
| + if (isfl) | |
| + xfs_warn(mp, | |
| + "Case 3 Inserting: nfbno1: %d, nflen1: %d, nfbno2: %d, nflen2: %d, fbno: %d, flen: %d, rbno: %d, rlen: %d", | |
| + nfbno1, nflen1, nfbno2, nflen2, fbno, flen, rbno, rlen); | |
| } | |
| /* | |
| * Delete the entry from the by-size btree. | |
| @@ -396,19 +409,31 @@ xfs_alloc_fixup_trees( | |
| * Add new by-size btree entry(s). | |
| */ | |
| if (nfbno1 != NULLAGBLOCK) { | |
| + struct xfs_btree_block *cntblock; | |
| if ((error = xfs_alloc_lookup_eq(cnt_cur, nfbno1, nflen1, &i))) | |
| return error; | |
| + cntblock = XFS_BUF_TO_BLOCK(cnt_cur->bc_bufs[0]); | |
| XFS_WANT_CORRUPTED_RETURN(mp, i == 0); | |
| + xfs_warn(mp, | |
| + "B+Tree before insert: isfl: %d, bb_numrec: %d, addr: %llu", isfl, xfs_btree_get_numrecs(cntblock), XFS_BUF_ADDR(cnt_cur->bc_bufs[0])); | |
| if ((error = xfs_btree_insert(cnt_cur, &i))) | |
| return error; | |
| + xfs_warn(mp, | |
| + "B+Tree after insert: isfl: %d, bb_numrec: %d, addr: %llu", isfl, xfs_btree_get_numrecs(cntblock), XFS_BUF_ADDR(cnt_cur->bc_bufs[0])); | |
| XFS_WANT_CORRUPTED_RETURN(mp, i == 1); | |
| } | |
| if (nfbno2 != NULLAGBLOCK) { | |
| + struct xfs_btree_block *cntblock; | |
| + cntblock = XFS_BUF_TO_BLOCK(cnt_cur->bc_bufs[0]); | |
| if ((error = xfs_alloc_lookup_eq(cnt_cur, nfbno2, nflen2, &i))) | |
| return error; | |
| XFS_WANT_CORRUPTED_RETURN(mp, i == 0); | |
| + xfs_warn(mp, | |
| + "B+Tree before insert: isfl: %d, bb_numrec: %d, addr: %llu", isfl, xfs_btree_get_numrecs(cntblock), XFS_BUF_ADDR(cnt_cur->bc_bufs[0])); | |
| if ((error = xfs_btree_insert(cnt_cur, &i))) | |
| return error; | |
| + xfs_warn(mp, | |
| + "B+Tree after insert: isfl: %d, bb_numrec: %d, addr: %llu", isfl, xfs_btree_get_numrecs(cntblock), XFS_BUF_ADDR(cnt_cur->bc_bufs[0])); | |
| XFS_WANT_CORRUPTED_RETURN(mp, i == 1); | |
| } | |
| /* | |
| @@ -730,7 +755,7 @@ xfs_alloc_ag_vextent_exact( | |
| ASSERT(args->agbno + args->len <= | |
| be32_to_cpu(XFS_BUF_TO_AGF(args->agbp)->agf_length)); | |
| error = xfs_alloc_fixup_trees(cnt_cur, bno_cur, fbno, flen, args->agbno, | |
| - args->len, XFSA_FIXUP_BNO_OK); | |
| + args->len, XFSA_FIXUP_BNO_OK, args->isfl); | |
| if (error) { | |
| xfs_btree_del_cursor(cnt_cur, XFS_BTREE_ERROR); | |
| goto error0; | |
| @@ -1028,7 +1053,7 @@ restart: | |
| * Fix up the btree entries. | |
| */ | |
| if ((error = xfs_alloc_fixup_trees(cnt_cur, bno_cur_lt, ltbno, | |
| - ltlen, bnew, blen, XFSA_FIXUP_CNT_OK))) | |
| + ltlen, bnew, blen, XFSA_FIXUP_CNT_OK, args->isfl))) | |
| goto error0; | |
| xfs_btree_del_cursor(cnt_cur, XFS_BTREE_NOERROR); | |
| xfs_btree_del_cursor(bno_cur_lt, XFS_BTREE_NOERROR); | |
| @@ -1219,7 +1244,7 @@ restart: | |
| args->agbno = ltnew; | |
| if ((error = xfs_alloc_fixup_trees(cnt_cur, bno_cur_lt, ltbno, ltlen, | |
| - ltnew, rlen, XFSA_FIXUP_BNO_OK))) | |
| + ltnew, rlen, XFSA_FIXUP_BNO_OK, args->isfl))) | |
| goto error0; | |
| if (j) | |
| @@ -1420,7 +1445,7 @@ restart: | |
| bno_cur = xfs_allocbt_init_cursor(args->mp, args->tp, args->agbp, | |
| args->agno, XFS_BTNUM_BNO); | |
| if ((error = xfs_alloc_fixup_trees(cnt_cur, bno_cur, fbno, flen, | |
| - rbno, rlen, XFSA_FIXUP_CNT_OK))) | |
| + rbno, rlen, XFSA_FIXUP_CNT_OK, args->isfl))) | |
| goto error0; | |
| xfs_btree_del_cursor(cnt_cur, XFS_BTREE_NOERROR); | |
| xfs_btree_del_cursor(bno_cur, XFS_BTREE_NOERROR); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment