diff options
Diffstat (limited to 'fs/xfs/xfs_alloc.c')
-rw-r--r-- | fs/xfs/xfs_alloc.c | 101 |
1 files changed, 51 insertions, 50 deletions
diff --git a/fs/xfs/xfs_alloc.c b/fs/xfs/xfs_alloc.c index 8e9a40aa0cd3..012a649a19c3 100644 --- a/fs/xfs/xfs_alloc.c +++ b/fs/xfs/xfs_alloc.c | |||
@@ -55,17 +55,17 @@ xfs_alloc_search_busy(xfs_trans_t *tp, | |||
55 | ktrace_t *xfs_alloc_trace_buf; | 55 | ktrace_t *xfs_alloc_trace_buf; |
56 | 56 | ||
57 | #define TRACE_ALLOC(s,a) \ | 57 | #define TRACE_ALLOC(s,a) \ |
58 | xfs_alloc_trace_alloc(fname, s, a, __LINE__) | 58 | xfs_alloc_trace_alloc(__FUNCTION__, s, a, __LINE__) |
59 | #define TRACE_FREE(s,a,b,x,f) \ | 59 | #define TRACE_FREE(s,a,b,x,f) \ |
60 | xfs_alloc_trace_free(fname, s, mp, a, b, x, f, __LINE__) | 60 | xfs_alloc_trace_free(__FUNCTION__, s, mp, a, b, x, f, __LINE__) |
61 | #define TRACE_MODAGF(s,a,f) \ | 61 | #define TRACE_MODAGF(s,a,f) \ |
62 | xfs_alloc_trace_modagf(fname, s, mp, a, f, __LINE__) | 62 | xfs_alloc_trace_modagf(__FUNCTION__, s, mp, a, f, __LINE__) |
63 | #define TRACE_BUSY(fname,s,ag,agb,l,sl,tp) \ | 63 | #define TRACE_BUSY(__FUNCTION__,s,ag,agb,l,sl,tp) \ |
64 | xfs_alloc_trace_busy(fname, s, mp, ag, agb, l, sl, tp, XFS_ALLOC_KTRACE_BUSY, __LINE__) | 64 | xfs_alloc_trace_busy(__FUNCTION__, s, mp, ag, agb, l, sl, tp, XFS_ALLOC_KTRACE_BUSY, __LINE__) |
65 | #define TRACE_UNBUSY(fname,s,ag,sl,tp) \ | 65 | #define TRACE_UNBUSY(__FUNCTION__,s,ag,sl,tp) \ |
66 | xfs_alloc_trace_busy(fname, s, mp, ag, -1, -1, sl, tp, XFS_ALLOC_KTRACE_UNBUSY, __LINE__) | 66 | xfs_alloc_trace_busy(__FUNCTION__, s, mp, ag, -1, -1, sl, tp, XFS_ALLOC_KTRACE_UNBUSY, __LINE__) |
67 | #define TRACE_BUSYSEARCH(fname,s,ag,agb,l,sl,tp) \ | 67 | #define TRACE_BUSYSEARCH(__FUNCTION__,s,ag,agb,l,sl,tp) \ |
68 | xfs_alloc_trace_busy(fname, s, mp, ag, agb, l, sl, tp, XFS_ALLOC_KTRACE_BUSYSEARCH, __LINE__) | 68 | xfs_alloc_trace_busy(__FUNCTION__, s, mp, ag, agb, l, sl, tp, XFS_ALLOC_KTRACE_BUSYSEARCH, __LINE__) |
69 | #else | 69 | #else |
70 | #define TRACE_ALLOC(s,a) | 70 | #define TRACE_ALLOC(s,a) |
71 | #define TRACE_FREE(s,a,b,x,f) | 71 | #define TRACE_FREE(s,a,b,x,f) |
@@ -420,7 +420,7 @@ xfs_alloc_read_agfl( | |||
420 | */ | 420 | */ |
421 | STATIC void | 421 | STATIC void |
422 | xfs_alloc_trace_alloc( | 422 | xfs_alloc_trace_alloc( |
423 | char *name, /* function tag string */ | 423 | const char *name, /* function tag string */ |
424 | char *str, /* additional string */ | 424 | char *str, /* additional string */ |
425 | xfs_alloc_arg_t *args, /* allocation argument structure */ | 425 | xfs_alloc_arg_t *args, /* allocation argument structure */ |
426 | int line) /* source line number */ | 426 | int line) /* source line number */ |
@@ -453,7 +453,7 @@ xfs_alloc_trace_alloc( | |||
453 | */ | 453 | */ |
454 | STATIC void | 454 | STATIC void |
455 | xfs_alloc_trace_free( | 455 | xfs_alloc_trace_free( |
456 | char *name, /* function tag string */ | 456 | const char *name, /* function tag string */ |
457 | char *str, /* additional string */ | 457 | char *str, /* additional string */ |
458 | xfs_mount_t *mp, /* file system mount point */ | 458 | xfs_mount_t *mp, /* file system mount point */ |
459 | xfs_agnumber_t agno, /* allocation group number */ | 459 | xfs_agnumber_t agno, /* allocation group number */ |
@@ -479,7 +479,7 @@ xfs_alloc_trace_free( | |||
479 | */ | 479 | */ |
480 | STATIC void | 480 | STATIC void |
481 | xfs_alloc_trace_modagf( | 481 | xfs_alloc_trace_modagf( |
482 | char *name, /* function tag string */ | 482 | const char *name, /* function tag string */ |
483 | char *str, /* additional string */ | 483 | char *str, /* additional string */ |
484 | xfs_mount_t *mp, /* file system mount point */ | 484 | xfs_mount_t *mp, /* file system mount point */ |
485 | xfs_agf_t *agf, /* new agf value */ | 485 | xfs_agf_t *agf, /* new agf value */ |
@@ -507,7 +507,7 @@ xfs_alloc_trace_modagf( | |||
507 | 507 | ||
508 | STATIC void | 508 | STATIC void |
509 | xfs_alloc_trace_busy( | 509 | xfs_alloc_trace_busy( |
510 | char *name, /* function tag string */ | 510 | const char *name, /* function tag string */ |
511 | char *str, /* additional string */ | 511 | char *str, /* additional string */ |
512 | xfs_mount_t *mp, /* file system mount point */ | 512 | xfs_mount_t *mp, /* file system mount point */ |
513 | xfs_agnumber_t agno, /* allocation group number */ | 513 | xfs_agnumber_t agno, /* allocation group number */ |
@@ -549,9 +549,6 @@ xfs_alloc_ag_vextent( | |||
549 | xfs_alloc_arg_t *args) /* argument structure for allocation */ | 549 | xfs_alloc_arg_t *args) /* argument structure for allocation */ |
550 | { | 550 | { |
551 | int error=0; | 551 | int error=0; |
552 | #ifdef XFS_ALLOC_TRACE | ||
553 | static char fname[] = "xfs_alloc_ag_vextent"; | ||
554 | #endif | ||
555 | 552 | ||
556 | ASSERT(args->minlen > 0); | 553 | ASSERT(args->minlen > 0); |
557 | ASSERT(args->maxlen > 0); | 554 | ASSERT(args->maxlen > 0); |
@@ -635,9 +632,6 @@ xfs_alloc_ag_vextent_exact( | |||
635 | xfs_agblock_t fbno; /* start block of found extent */ | 632 | xfs_agblock_t fbno; /* start block of found extent */ |
636 | xfs_agblock_t fend; /* end block of found extent */ | 633 | xfs_agblock_t fend; /* end block of found extent */ |
637 | xfs_extlen_t flen; /* length of found extent */ | 634 | xfs_extlen_t flen; /* length of found extent */ |
638 | #ifdef XFS_ALLOC_TRACE | ||
639 | static char fname[] = "xfs_alloc_ag_vextent_exact"; | ||
640 | #endif | ||
641 | int i; /* success/failure of operation */ | 635 | int i; /* success/failure of operation */ |
642 | xfs_agblock_t maxend; /* end of maximal extent */ | 636 | xfs_agblock_t maxend; /* end of maximal extent */ |
643 | xfs_agblock_t minend; /* end of minimal extent */ | 637 | xfs_agblock_t minend; /* end of minimal extent */ |
@@ -737,9 +731,6 @@ xfs_alloc_ag_vextent_near( | |||
737 | xfs_btree_cur_t *bno_cur_gt; /* cursor for bno btree, right side */ | 731 | xfs_btree_cur_t *bno_cur_gt; /* cursor for bno btree, right side */ |
738 | xfs_btree_cur_t *bno_cur_lt; /* cursor for bno btree, left side */ | 732 | xfs_btree_cur_t *bno_cur_lt; /* cursor for bno btree, left side */ |
739 | xfs_btree_cur_t *cnt_cur; /* cursor for count btree */ | 733 | xfs_btree_cur_t *cnt_cur; /* cursor for count btree */ |
740 | #ifdef XFS_ALLOC_TRACE | ||
741 | static char fname[] = "xfs_alloc_ag_vextent_near"; | ||
742 | #endif | ||
743 | xfs_agblock_t gtbno; /* start bno of right side entry */ | 734 | xfs_agblock_t gtbno; /* start bno of right side entry */ |
744 | xfs_agblock_t gtbnoa; /* aligned ... */ | 735 | xfs_agblock_t gtbnoa; /* aligned ... */ |
745 | xfs_extlen_t gtdiff; /* difference to right side entry */ | 736 | xfs_extlen_t gtdiff; /* difference to right side entry */ |
@@ -1270,9 +1261,6 @@ xfs_alloc_ag_vextent_size( | |||
1270 | int error; /* error result */ | 1261 | int error; /* error result */ |
1271 | xfs_agblock_t fbno; /* start of found freespace */ | 1262 | xfs_agblock_t fbno; /* start of found freespace */ |
1272 | xfs_extlen_t flen; /* length of found freespace */ | 1263 | xfs_extlen_t flen; /* length of found freespace */ |
1273 | #ifdef XFS_ALLOC_TRACE | ||
1274 | static char fname[] = "xfs_alloc_ag_vextent_size"; | ||
1275 | #endif | ||
1276 | int i; /* temp status variable */ | 1264 | int i; /* temp status variable */ |
1277 | xfs_agblock_t rbno; /* returned block number */ | 1265 | xfs_agblock_t rbno; /* returned block number */ |
1278 | xfs_extlen_t rlen; /* length of returned extent */ | 1266 | xfs_extlen_t rlen; /* length of returned extent */ |
@@ -1427,9 +1415,6 @@ xfs_alloc_ag_vextent_small( | |||
1427 | int error; | 1415 | int error; |
1428 | xfs_agblock_t fbno; | 1416 | xfs_agblock_t fbno; |
1429 | xfs_extlen_t flen; | 1417 | xfs_extlen_t flen; |
1430 | #ifdef XFS_ALLOC_TRACE | ||
1431 | static char fname[] = "xfs_alloc_ag_vextent_small"; | ||
1432 | #endif | ||
1433 | int i; | 1418 | int i; |
1434 | 1419 | ||
1435 | if ((error = xfs_alloc_decrement(ccur, 0, &i))) | 1420 | if ((error = xfs_alloc_decrement(ccur, 0, &i))) |
@@ -1447,7 +1432,8 @@ xfs_alloc_ag_vextent_small( | |||
1447 | else if (args->minlen == 1 && args->alignment == 1 && !args->isfl && | 1432 | else if (args->minlen == 1 && args->alignment == 1 && !args->isfl && |
1448 | (be32_to_cpu(XFS_BUF_TO_AGF(args->agbp)->agf_flcount) | 1433 | (be32_to_cpu(XFS_BUF_TO_AGF(args->agbp)->agf_flcount) |
1449 | > args->minleft)) { | 1434 | > args->minleft)) { |
1450 | if ((error = xfs_alloc_get_freelist(args->tp, args->agbp, &fbno))) | 1435 | error = xfs_alloc_get_freelist(args->tp, args->agbp, &fbno, 0); |
1436 | if (error) | ||
1451 | goto error0; | 1437 | goto error0; |
1452 | if (fbno != NULLAGBLOCK) { | 1438 | if (fbno != NULLAGBLOCK) { |
1453 | if (args->userdata) { | 1439 | if (args->userdata) { |
@@ -1515,9 +1501,6 @@ xfs_free_ag_extent( | |||
1515 | xfs_btree_cur_t *bno_cur; /* cursor for by-block btree */ | 1501 | xfs_btree_cur_t *bno_cur; /* cursor for by-block btree */ |
1516 | xfs_btree_cur_t *cnt_cur; /* cursor for by-size btree */ | 1502 | xfs_btree_cur_t *cnt_cur; /* cursor for by-size btree */ |
1517 | int error; /* error return value */ | 1503 | int error; /* error return value */ |
1518 | #ifdef XFS_ALLOC_TRACE | ||
1519 | static char fname[] = "xfs_free_ag_extent"; | ||
1520 | #endif | ||
1521 | xfs_agblock_t gtbno; /* start of right neighbor block */ | 1504 | xfs_agblock_t gtbno; /* start of right neighbor block */ |
1522 | xfs_extlen_t gtlen; /* length of right neighbor block */ | 1505 | xfs_extlen_t gtlen; /* length of right neighbor block */ |
1523 | int haveleft; /* have a left neighbor block */ | 1506 | int haveleft; /* have a left neighbor block */ |
@@ -1923,7 +1906,8 @@ xfs_alloc_fix_freelist( | |||
1923 | while (be32_to_cpu(agf->agf_flcount) > need) { | 1906 | while (be32_to_cpu(agf->agf_flcount) > need) { |
1924 | xfs_buf_t *bp; | 1907 | xfs_buf_t *bp; |
1925 | 1908 | ||
1926 | if ((error = xfs_alloc_get_freelist(tp, agbp, &bno))) | 1909 | error = xfs_alloc_get_freelist(tp, agbp, &bno, 0); |
1910 | if (error) | ||
1927 | return error; | 1911 | return error; |
1928 | if ((error = xfs_free_ag_extent(tp, agbp, args->agno, bno, 1, 1))) | 1912 | if ((error = xfs_free_ag_extent(tp, agbp, args->agno, bno, 1, 1))) |
1929 | return error; | 1913 | return error; |
@@ -1973,8 +1957,9 @@ xfs_alloc_fix_freelist( | |||
1973 | * Put each allocated block on the list. | 1957 | * Put each allocated block on the list. |
1974 | */ | 1958 | */ |
1975 | for (bno = targs.agbno; bno < targs.agbno + targs.len; bno++) { | 1959 | for (bno = targs.agbno; bno < targs.agbno + targs.len; bno++) { |
1976 | if ((error = xfs_alloc_put_freelist(tp, agbp, agflbp, | 1960 | error = xfs_alloc_put_freelist(tp, agbp, |
1977 | bno))) | 1961 | agflbp, bno, 0); |
1962 | if (error) | ||
1978 | return error; | 1963 | return error; |
1979 | } | 1964 | } |
1980 | } | 1965 | } |
@@ -1991,16 +1976,15 @@ int /* error */ | |||
1991 | xfs_alloc_get_freelist( | 1976 | xfs_alloc_get_freelist( |
1992 | xfs_trans_t *tp, /* transaction pointer */ | 1977 | xfs_trans_t *tp, /* transaction pointer */ |
1993 | xfs_buf_t *agbp, /* buffer containing the agf structure */ | 1978 | xfs_buf_t *agbp, /* buffer containing the agf structure */ |
1994 | xfs_agblock_t *bnop) /* block address retrieved from freelist */ | 1979 | xfs_agblock_t *bnop, /* block address retrieved from freelist */ |
1980 | int btreeblk) /* destination is a AGF btree */ | ||
1995 | { | 1981 | { |
1996 | xfs_agf_t *agf; /* a.g. freespace structure */ | 1982 | xfs_agf_t *agf; /* a.g. freespace structure */ |
1997 | xfs_agfl_t *agfl; /* a.g. freelist structure */ | 1983 | xfs_agfl_t *agfl; /* a.g. freelist structure */ |
1998 | xfs_buf_t *agflbp;/* buffer for a.g. freelist structure */ | 1984 | xfs_buf_t *agflbp;/* buffer for a.g. freelist structure */ |
1999 | xfs_agblock_t bno; /* block number returned */ | 1985 | xfs_agblock_t bno; /* block number returned */ |
2000 | int error; | 1986 | int error; |
2001 | #ifdef XFS_ALLOC_TRACE | 1987 | int logflags; |
2002 | static char fname[] = "xfs_alloc_get_freelist"; | ||
2003 | #endif | ||
2004 | xfs_mount_t *mp; /* mount structure */ | 1988 | xfs_mount_t *mp; /* mount structure */ |
2005 | xfs_perag_t *pag; /* per allocation group data */ | 1989 | xfs_perag_t *pag; /* per allocation group data */ |
2006 | 1990 | ||
@@ -2032,8 +2016,16 @@ xfs_alloc_get_freelist( | |||
2032 | be32_add(&agf->agf_flcount, -1); | 2016 | be32_add(&agf->agf_flcount, -1); |
2033 | xfs_trans_agflist_delta(tp, -1); | 2017 | xfs_trans_agflist_delta(tp, -1); |
2034 | pag->pagf_flcount--; | 2018 | pag->pagf_flcount--; |
2035 | TRACE_MODAGF(NULL, agf, XFS_AGF_FLFIRST | XFS_AGF_FLCOUNT); | 2019 | |
2036 | xfs_alloc_log_agf(tp, agbp, XFS_AGF_FLFIRST | XFS_AGF_FLCOUNT); | 2020 | logflags = XFS_AGF_FLFIRST | XFS_AGF_FLCOUNT; |
2021 | if (btreeblk) { | ||
2022 | be32_add(&agf->agf_btreeblks, 1); | ||
2023 | pag->pagf_btreeblks++; | ||
2024 | logflags |= XFS_AGF_BTREEBLKS; | ||
2025 | } | ||
2026 | |||
2027 | TRACE_MODAGF(NULL, agf, logflags); | ||
2028 | xfs_alloc_log_agf(tp, agbp, logflags); | ||
2037 | *bnop = bno; | 2029 | *bnop = bno; |
2038 | 2030 | ||
2039 | /* | 2031 | /* |
@@ -2071,6 +2063,7 @@ xfs_alloc_log_agf( | |||
2071 | offsetof(xfs_agf_t, agf_flcount), | 2063 | offsetof(xfs_agf_t, agf_flcount), |
2072 | offsetof(xfs_agf_t, agf_freeblks), | 2064 | offsetof(xfs_agf_t, agf_freeblks), |
2073 | offsetof(xfs_agf_t, agf_longest), | 2065 | offsetof(xfs_agf_t, agf_longest), |
2066 | offsetof(xfs_agf_t, agf_btreeblks), | ||
2074 | sizeof(xfs_agf_t) | 2067 | sizeof(xfs_agf_t) |
2075 | }; | 2068 | }; |
2076 | 2069 | ||
@@ -2106,15 +2099,14 @@ xfs_alloc_put_freelist( | |||
2106 | xfs_trans_t *tp, /* transaction pointer */ | 2099 | xfs_trans_t *tp, /* transaction pointer */ |
2107 | xfs_buf_t *agbp, /* buffer for a.g. freelist header */ | 2100 | xfs_buf_t *agbp, /* buffer for a.g. freelist header */ |
2108 | xfs_buf_t *agflbp,/* buffer for a.g. free block array */ | 2101 | xfs_buf_t *agflbp,/* buffer for a.g. free block array */ |
2109 | xfs_agblock_t bno) /* block being freed */ | 2102 | xfs_agblock_t bno, /* block being freed */ |
2103 | int btreeblk) /* block came from a AGF btree */ | ||
2110 | { | 2104 | { |
2111 | xfs_agf_t *agf; /* a.g. freespace structure */ | 2105 | xfs_agf_t *agf; /* a.g. freespace structure */ |
2112 | xfs_agfl_t *agfl; /* a.g. free block array */ | 2106 | xfs_agfl_t *agfl; /* a.g. free block array */ |
2113 | __be32 *blockp;/* pointer to array entry */ | 2107 | __be32 *blockp;/* pointer to array entry */ |
2114 | int error; | 2108 | int error; |
2115 | #ifdef XFS_ALLOC_TRACE | 2109 | int logflags; |
2116 | static char fname[] = "xfs_alloc_put_freelist"; | ||
2117 | #endif | ||
2118 | xfs_mount_t *mp; /* mount structure */ | 2110 | xfs_mount_t *mp; /* mount structure */ |
2119 | xfs_perag_t *pag; /* per allocation group data */ | 2111 | xfs_perag_t *pag; /* per allocation group data */ |
2120 | 2112 | ||
@@ -2132,11 +2124,22 @@ xfs_alloc_put_freelist( | |||
2132 | be32_add(&agf->agf_flcount, 1); | 2124 | be32_add(&agf->agf_flcount, 1); |
2133 | xfs_trans_agflist_delta(tp, 1); | 2125 | xfs_trans_agflist_delta(tp, 1); |
2134 | pag->pagf_flcount++; | 2126 | pag->pagf_flcount++; |
2127 | |||
2128 | logflags = XFS_AGF_FLLAST | XFS_AGF_FLCOUNT; | ||
2129 | if (btreeblk) { | ||
2130 | be32_add(&agf->agf_btreeblks, -1); | ||
2131 | pag->pagf_btreeblks--; | ||
2132 | logflags |= XFS_AGF_BTREEBLKS; | ||
2133 | } | ||
2134 | |||
2135 | TRACE_MODAGF(NULL, agf, logflags); | ||
2136 | xfs_alloc_log_agf(tp, agbp, logflags); | ||
2137 | |||
2135 | ASSERT(be32_to_cpu(agf->agf_flcount) <= XFS_AGFL_SIZE(mp)); | 2138 | ASSERT(be32_to_cpu(agf->agf_flcount) <= XFS_AGFL_SIZE(mp)); |
2136 | blockp = &agfl->agfl_bno[be32_to_cpu(agf->agf_fllast)]; | 2139 | blockp = &agfl->agfl_bno[be32_to_cpu(agf->agf_fllast)]; |
2137 | *blockp = cpu_to_be32(bno); | 2140 | *blockp = cpu_to_be32(bno); |
2138 | TRACE_MODAGF(NULL, agf, XFS_AGF_FLLAST | XFS_AGF_FLCOUNT); | 2141 | TRACE_MODAGF(NULL, agf, logflags); |
2139 | xfs_alloc_log_agf(tp, agbp, XFS_AGF_FLLAST | XFS_AGF_FLCOUNT); | 2142 | xfs_alloc_log_agf(tp, agbp, logflags); |
2140 | xfs_trans_log_buf(tp, agflbp, | 2143 | xfs_trans_log_buf(tp, agflbp, |
2141 | (int)((xfs_caddr_t)blockp - (xfs_caddr_t)agfl), | 2144 | (int)((xfs_caddr_t)blockp - (xfs_caddr_t)agfl), |
2142 | (int)((xfs_caddr_t)blockp - (xfs_caddr_t)agfl + | 2145 | (int)((xfs_caddr_t)blockp - (xfs_caddr_t)agfl + |
@@ -2196,6 +2199,7 @@ xfs_alloc_read_agf( | |||
2196 | pag = &mp->m_perag[agno]; | 2199 | pag = &mp->m_perag[agno]; |
2197 | if (!pag->pagf_init) { | 2200 | if (!pag->pagf_init) { |
2198 | pag->pagf_freeblks = be32_to_cpu(agf->agf_freeblks); | 2201 | pag->pagf_freeblks = be32_to_cpu(agf->agf_freeblks); |
2202 | pag->pagf_btreeblks = be32_to_cpu(agf->agf_btreeblks); | ||
2199 | pag->pagf_flcount = be32_to_cpu(agf->agf_flcount); | 2203 | pag->pagf_flcount = be32_to_cpu(agf->agf_flcount); |
2200 | pag->pagf_longest = be32_to_cpu(agf->agf_longest); | 2204 | pag->pagf_longest = be32_to_cpu(agf->agf_longest); |
2201 | pag->pagf_levels[XFS_BTNUM_BNOi] = | 2205 | pag->pagf_levels[XFS_BTNUM_BNOi] = |
@@ -2235,9 +2239,6 @@ xfs_alloc_vextent( | |||
2235 | xfs_agblock_t agsize; /* allocation group size */ | 2239 | xfs_agblock_t agsize; /* allocation group size */ |
2236 | int error; | 2240 | int error; |
2237 | int flags; /* XFS_ALLOC_FLAG_... locking flags */ | 2241 | int flags; /* XFS_ALLOC_FLAG_... locking flags */ |
2238 | #ifdef XFS_ALLOC_TRACE | ||
2239 | static char fname[] = "xfs_alloc_vextent"; | ||
2240 | #endif | ||
2241 | xfs_extlen_t minleft;/* minimum left value, temp copy */ | 2242 | xfs_extlen_t minleft;/* minimum left value, temp copy */ |
2242 | xfs_mount_t *mp; /* mount structure pointer */ | 2243 | xfs_mount_t *mp; /* mount structure pointer */ |
2243 | xfs_agnumber_t sagno; /* starting allocation group number */ | 2244 | xfs_agnumber_t sagno; /* starting allocation group number */ |