diff options
Diffstat (limited to 'fs/xfs/xfs_fsops.c')
-rw-r--r-- | fs/xfs/xfs_fsops.c | 30 |
1 files changed, 18 insertions, 12 deletions
diff --git a/fs/xfs/xfs_fsops.c b/fs/xfs/xfs_fsops.c index 84583cf73db3..852b6d32e8d0 100644 --- a/fs/xfs/xfs_fsops.c +++ b/fs/xfs/xfs_fsops.c | |||
@@ -126,7 +126,7 @@ xfs_growfs_data_private( | |||
126 | xfs_extlen_t agsize; | 126 | xfs_extlen_t agsize; |
127 | xfs_extlen_t tmpsize; | 127 | xfs_extlen_t tmpsize; |
128 | xfs_alloc_rec_t *arec; | 128 | xfs_alloc_rec_t *arec; |
129 | xfs_btree_sblock_t *block; | 129 | struct xfs_btree_block *block; |
130 | xfs_buf_t *bp; | 130 | xfs_buf_t *bp; |
131 | int bucket; | 131 | int bucket; |
132 | int dpct; | 132 | int dpct; |
@@ -251,14 +251,14 @@ xfs_growfs_data_private( | |||
251 | bp = xfs_buf_get(mp->m_ddev_targp, | 251 | bp = xfs_buf_get(mp->m_ddev_targp, |
252 | XFS_AGB_TO_DADDR(mp, agno, XFS_BNO_BLOCK(mp)), | 252 | XFS_AGB_TO_DADDR(mp, agno, XFS_BNO_BLOCK(mp)), |
253 | BTOBB(mp->m_sb.sb_blocksize), 0); | 253 | BTOBB(mp->m_sb.sb_blocksize), 0); |
254 | block = XFS_BUF_TO_SBLOCK(bp); | 254 | block = XFS_BUF_TO_BLOCK(bp); |
255 | memset(block, 0, mp->m_sb.sb_blocksize); | 255 | memset(block, 0, mp->m_sb.sb_blocksize); |
256 | block->bb_magic = cpu_to_be32(XFS_ABTB_MAGIC); | 256 | block->bb_magic = cpu_to_be32(XFS_ABTB_MAGIC); |
257 | block->bb_level = 0; | 257 | block->bb_level = 0; |
258 | block->bb_numrecs = cpu_to_be16(1); | 258 | block->bb_numrecs = cpu_to_be16(1); |
259 | block->bb_leftsib = cpu_to_be32(NULLAGBLOCK); | 259 | block->bb_u.s.bb_leftsib = cpu_to_be32(NULLAGBLOCK); |
260 | block->bb_rightsib = cpu_to_be32(NULLAGBLOCK); | 260 | block->bb_u.s.bb_rightsib = cpu_to_be32(NULLAGBLOCK); |
261 | arec = XFS_BTREE_REC_ADDR(xfs_alloc, block, 1); | 261 | arec = XFS_ALLOC_REC_ADDR(mp, block, 1); |
262 | arec->ar_startblock = cpu_to_be32(XFS_PREALLOC_BLOCKS(mp)); | 262 | arec->ar_startblock = cpu_to_be32(XFS_PREALLOC_BLOCKS(mp)); |
263 | arec->ar_blockcount = cpu_to_be32( | 263 | arec->ar_blockcount = cpu_to_be32( |
264 | agsize - be32_to_cpu(arec->ar_startblock)); | 264 | agsize - be32_to_cpu(arec->ar_startblock)); |
@@ -272,14 +272,14 @@ xfs_growfs_data_private( | |||
272 | bp = xfs_buf_get(mp->m_ddev_targp, | 272 | bp = xfs_buf_get(mp->m_ddev_targp, |
273 | XFS_AGB_TO_DADDR(mp, agno, XFS_CNT_BLOCK(mp)), | 273 | XFS_AGB_TO_DADDR(mp, agno, XFS_CNT_BLOCK(mp)), |
274 | BTOBB(mp->m_sb.sb_blocksize), 0); | 274 | BTOBB(mp->m_sb.sb_blocksize), 0); |
275 | block = XFS_BUF_TO_SBLOCK(bp); | 275 | block = XFS_BUF_TO_BLOCK(bp); |
276 | memset(block, 0, mp->m_sb.sb_blocksize); | 276 | memset(block, 0, mp->m_sb.sb_blocksize); |
277 | block->bb_magic = cpu_to_be32(XFS_ABTC_MAGIC); | 277 | block->bb_magic = cpu_to_be32(XFS_ABTC_MAGIC); |
278 | block->bb_level = 0; | 278 | block->bb_level = 0; |
279 | block->bb_numrecs = cpu_to_be16(1); | 279 | block->bb_numrecs = cpu_to_be16(1); |
280 | block->bb_leftsib = cpu_to_be32(NULLAGBLOCK); | 280 | block->bb_u.s.bb_leftsib = cpu_to_be32(NULLAGBLOCK); |
281 | block->bb_rightsib = cpu_to_be32(NULLAGBLOCK); | 281 | block->bb_u.s.bb_rightsib = cpu_to_be32(NULLAGBLOCK); |
282 | arec = XFS_BTREE_REC_ADDR(xfs_alloc, block, 1); | 282 | arec = XFS_ALLOC_REC_ADDR(mp, block, 1); |
283 | arec->ar_startblock = cpu_to_be32(XFS_PREALLOC_BLOCKS(mp)); | 283 | arec->ar_startblock = cpu_to_be32(XFS_PREALLOC_BLOCKS(mp)); |
284 | arec->ar_blockcount = cpu_to_be32( | 284 | arec->ar_blockcount = cpu_to_be32( |
285 | agsize - be32_to_cpu(arec->ar_startblock)); | 285 | agsize - be32_to_cpu(arec->ar_startblock)); |
@@ -294,13 +294,13 @@ xfs_growfs_data_private( | |||
294 | bp = xfs_buf_get(mp->m_ddev_targp, | 294 | bp = xfs_buf_get(mp->m_ddev_targp, |
295 | XFS_AGB_TO_DADDR(mp, agno, XFS_IBT_BLOCK(mp)), | 295 | XFS_AGB_TO_DADDR(mp, agno, XFS_IBT_BLOCK(mp)), |
296 | BTOBB(mp->m_sb.sb_blocksize), 0); | 296 | BTOBB(mp->m_sb.sb_blocksize), 0); |
297 | block = XFS_BUF_TO_SBLOCK(bp); | 297 | block = XFS_BUF_TO_BLOCK(bp); |
298 | memset(block, 0, mp->m_sb.sb_blocksize); | 298 | memset(block, 0, mp->m_sb.sb_blocksize); |
299 | block->bb_magic = cpu_to_be32(XFS_IBT_MAGIC); | 299 | block->bb_magic = cpu_to_be32(XFS_IBT_MAGIC); |
300 | block->bb_level = 0; | 300 | block->bb_level = 0; |
301 | block->bb_numrecs = 0; | 301 | block->bb_numrecs = 0; |
302 | block->bb_leftsib = cpu_to_be32(NULLAGBLOCK); | 302 | block->bb_u.s.bb_leftsib = cpu_to_be32(NULLAGBLOCK); |
303 | block->bb_rightsib = cpu_to_be32(NULLAGBLOCK); | 303 | block->bb_u.s.bb_rightsib = cpu_to_be32(NULLAGBLOCK); |
304 | error = xfs_bwrite(mp, bp); | 304 | error = xfs_bwrite(mp, bp); |
305 | if (error) { | 305 | if (error) { |
306 | goto error0; | 306 | goto error0; |
@@ -435,6 +435,9 @@ xfs_growfs_data( | |||
435 | xfs_growfs_data_t *in) | 435 | xfs_growfs_data_t *in) |
436 | { | 436 | { |
437 | int error; | 437 | int error; |
438 | |||
439 | if (!capable(CAP_SYS_ADMIN)) | ||
440 | return XFS_ERROR(EPERM); | ||
438 | if (!mutex_trylock(&mp->m_growlock)) | 441 | if (!mutex_trylock(&mp->m_growlock)) |
439 | return XFS_ERROR(EWOULDBLOCK); | 442 | return XFS_ERROR(EWOULDBLOCK); |
440 | error = xfs_growfs_data_private(mp, in); | 443 | error = xfs_growfs_data_private(mp, in); |
@@ -448,6 +451,9 @@ xfs_growfs_log( | |||
448 | xfs_growfs_log_t *in) | 451 | xfs_growfs_log_t *in) |
449 | { | 452 | { |
450 | int error; | 453 | int error; |
454 | |||
455 | if (!capable(CAP_SYS_ADMIN)) | ||
456 | return XFS_ERROR(EPERM); | ||
451 | if (!mutex_trylock(&mp->m_growlock)) | 457 | if (!mutex_trylock(&mp->m_growlock)) |
452 | return XFS_ERROR(EWOULDBLOCK); | 458 | return XFS_ERROR(EWOULDBLOCK); |
453 | error = xfs_growfs_log_private(mp, in); | 459 | error = xfs_growfs_log_private(mp, in); |