diff options
Diffstat (limited to 'fs/xfs/xfs_fsops.c')
-rw-r--r-- | fs/xfs/xfs_fsops.c | 27 |
1 files changed, 16 insertions, 11 deletions
diff --git a/fs/xfs/xfs_fsops.c b/fs/xfs/xfs_fsops.c index 2d0b3e1da9e6..a13919a6a364 100644 --- a/fs/xfs/xfs_fsops.c +++ b/fs/xfs/xfs_fsops.c | |||
@@ -45,6 +45,7 @@ | |||
45 | #include "xfs_rtalloc.h" | 45 | #include "xfs_rtalloc.h" |
46 | #include "xfs_rw.h" | 46 | #include "xfs_rw.h" |
47 | #include "xfs_filestream.h" | 47 | #include "xfs_filestream.h" |
48 | #include "xfs_trace.h" | ||
48 | 49 | ||
49 | /* | 50 | /* |
50 | * File system operations | 51 | * File system operations |
@@ -201,8 +202,8 @@ xfs_growfs_data_private( | |||
201 | * AG freelist header block | 202 | * AG freelist header block |
202 | */ | 203 | */ |
203 | bp = xfs_buf_get(mp->m_ddev_targp, | 204 | bp = xfs_buf_get(mp->m_ddev_targp, |
204 | XFS_AG_DADDR(mp, agno, XFS_AGF_DADDR(mp)), | 205 | XFS_AG_DADDR(mp, agno, XFS_AGF_DADDR(mp)), |
205 | XFS_FSS_TO_BB(mp, 1), 0); | 206 | XFS_FSS_TO_BB(mp, 1), XBF_LOCK | XBF_MAPPED); |
206 | agf = XFS_BUF_TO_AGF(bp); | 207 | agf = XFS_BUF_TO_AGF(bp); |
207 | memset(agf, 0, mp->m_sb.sb_sectsize); | 208 | memset(agf, 0, mp->m_sb.sb_sectsize); |
208 | agf->agf_magicnum = cpu_to_be32(XFS_AGF_MAGIC); | 209 | agf->agf_magicnum = cpu_to_be32(XFS_AGF_MAGIC); |
@@ -233,8 +234,8 @@ xfs_growfs_data_private( | |||
233 | * AG inode header block | 234 | * AG inode header block |
234 | */ | 235 | */ |
235 | bp = xfs_buf_get(mp->m_ddev_targp, | 236 | bp = xfs_buf_get(mp->m_ddev_targp, |
236 | XFS_AG_DADDR(mp, agno, XFS_AGI_DADDR(mp)), | 237 | XFS_AG_DADDR(mp, agno, XFS_AGI_DADDR(mp)), |
237 | XFS_FSS_TO_BB(mp, 1), 0); | 238 | XFS_FSS_TO_BB(mp, 1), XBF_LOCK | XBF_MAPPED); |
238 | agi = XFS_BUF_TO_AGI(bp); | 239 | agi = XFS_BUF_TO_AGI(bp); |
239 | memset(agi, 0, mp->m_sb.sb_sectsize); | 240 | memset(agi, 0, mp->m_sb.sb_sectsize); |
240 | agi->agi_magicnum = cpu_to_be32(XFS_AGI_MAGIC); | 241 | agi->agi_magicnum = cpu_to_be32(XFS_AGI_MAGIC); |
@@ -257,8 +258,9 @@ xfs_growfs_data_private( | |||
257 | * BNO btree root block | 258 | * BNO btree root block |
258 | */ | 259 | */ |
259 | bp = xfs_buf_get(mp->m_ddev_targp, | 260 | bp = xfs_buf_get(mp->m_ddev_targp, |
260 | XFS_AGB_TO_DADDR(mp, agno, XFS_BNO_BLOCK(mp)), | 261 | XFS_AGB_TO_DADDR(mp, agno, XFS_BNO_BLOCK(mp)), |
261 | BTOBB(mp->m_sb.sb_blocksize), 0); | 262 | BTOBB(mp->m_sb.sb_blocksize), |
263 | XBF_LOCK | XBF_MAPPED); | ||
262 | block = XFS_BUF_TO_BLOCK(bp); | 264 | block = XFS_BUF_TO_BLOCK(bp); |
263 | memset(block, 0, mp->m_sb.sb_blocksize); | 265 | memset(block, 0, mp->m_sb.sb_blocksize); |
264 | block->bb_magic = cpu_to_be32(XFS_ABTB_MAGIC); | 266 | block->bb_magic = cpu_to_be32(XFS_ABTB_MAGIC); |
@@ -278,8 +280,9 @@ xfs_growfs_data_private( | |||
278 | * CNT btree root block | 280 | * CNT btree root block |
279 | */ | 281 | */ |
280 | bp = xfs_buf_get(mp->m_ddev_targp, | 282 | bp = xfs_buf_get(mp->m_ddev_targp, |
281 | XFS_AGB_TO_DADDR(mp, agno, XFS_CNT_BLOCK(mp)), | 283 | XFS_AGB_TO_DADDR(mp, agno, XFS_CNT_BLOCK(mp)), |
282 | BTOBB(mp->m_sb.sb_blocksize), 0); | 284 | BTOBB(mp->m_sb.sb_blocksize), |
285 | XBF_LOCK | XBF_MAPPED); | ||
283 | block = XFS_BUF_TO_BLOCK(bp); | 286 | block = XFS_BUF_TO_BLOCK(bp); |
284 | memset(block, 0, mp->m_sb.sb_blocksize); | 287 | memset(block, 0, mp->m_sb.sb_blocksize); |
285 | block->bb_magic = cpu_to_be32(XFS_ABTC_MAGIC); | 288 | block->bb_magic = cpu_to_be32(XFS_ABTC_MAGIC); |
@@ -300,8 +303,9 @@ xfs_growfs_data_private( | |||
300 | * INO btree root block | 303 | * INO btree root block |
301 | */ | 304 | */ |
302 | bp = xfs_buf_get(mp->m_ddev_targp, | 305 | bp = xfs_buf_get(mp->m_ddev_targp, |
303 | XFS_AGB_TO_DADDR(mp, agno, XFS_IBT_BLOCK(mp)), | 306 | XFS_AGB_TO_DADDR(mp, agno, XFS_IBT_BLOCK(mp)), |
304 | BTOBB(mp->m_sb.sb_blocksize), 0); | 307 | BTOBB(mp->m_sb.sb_blocksize), |
308 | XBF_LOCK | XBF_MAPPED); | ||
305 | block = XFS_BUF_TO_BLOCK(bp); | 309 | block = XFS_BUF_TO_BLOCK(bp); |
306 | memset(block, 0, mp->m_sb.sb_blocksize); | 310 | memset(block, 0, mp->m_sb.sb_blocksize); |
307 | block->bb_magic = cpu_to_be32(XFS_IBT_MAGIC); | 311 | block->bb_magic = cpu_to_be32(XFS_IBT_MAGIC); |
@@ -344,6 +348,7 @@ xfs_growfs_data_private( | |||
344 | be32_add_cpu(&agf->agf_length, new); | 348 | be32_add_cpu(&agf->agf_length, new); |
345 | ASSERT(be32_to_cpu(agf->agf_length) == | 349 | ASSERT(be32_to_cpu(agf->agf_length) == |
346 | be32_to_cpu(agi->agi_length)); | 350 | be32_to_cpu(agi->agi_length)); |
351 | |||
347 | xfs_alloc_log_agf(tp, bp, XFS_AGF_LENGTH); | 352 | xfs_alloc_log_agf(tp, bp, XFS_AGF_LENGTH); |
348 | /* | 353 | /* |
349 | * Free the new space. | 354 | * Free the new space. |
@@ -611,7 +616,7 @@ xfs_fs_log_dummy( | |||
611 | xfs_inode_t *ip; | 616 | xfs_inode_t *ip; |
612 | int error; | 617 | int error; |
613 | 618 | ||
614 | tp = _xfs_trans_alloc(mp, XFS_TRANS_DUMMY1); | 619 | tp = _xfs_trans_alloc(mp, XFS_TRANS_DUMMY1, KM_SLEEP); |
615 | error = xfs_trans_reserve(tp, 0, XFS_ICHANGE_LOG_RES(mp), 0, 0, 0); | 620 | error = xfs_trans_reserve(tp, 0, XFS_ICHANGE_LOG_RES(mp), 0, 0, 0); |
616 | if (error) { | 621 | if (error) { |
617 | xfs_trans_cancel(tp, 0); | 622 | xfs_trans_cancel(tp, 0); |