diff options
author | Dave Chinner <david@fromorbit.com> | 2015-06-04 05:31:13 +0200 |
---|---|---|
committer | Dave Chinner <david@fromorbit.com> | 2015-06-04 05:31:13 +0200 |
commit | 4497f28750cd129a669e32b7810dd755102aebbd (patch) | |
tree | 0e16a0ee8fc52793614dbf45e4c4ff051925bd47 /fs/xfs/libxfs | |
parent | Merge branch 'xfs-dax-support' into for-next (diff) | |
parent | xfs: check min blks for random debug mode sparse allocations (diff) | |
download | linux-4497f28750cd129a669e32b7810dd755102aebbd.tar.xz linux-4497f28750cd129a669e32b7810dd755102aebbd.zip |
Merge branch 'xfs-misc-fixes-for-4.2-2' into for-next
Diffstat (limited to 'fs/xfs/libxfs')
-rw-r--r-- | fs/xfs/libxfs/xfs_ialloc.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/fs/xfs/libxfs/xfs_ialloc.c b/fs/xfs/libxfs/xfs_ialloc.c index a18bc75cc216..66efc702452a 100644 --- a/fs/xfs/libxfs/xfs_ialloc.c +++ b/fs/xfs/libxfs/xfs_ialloc.c @@ -606,20 +606,20 @@ xfs_ialloc_ag_alloc( uint16_t allocmask = (uint16_t) -1; /* init. to full chunk */ struct xfs_inobt_rec_incore rec; struct xfs_perag *pag; - int do_sparse = 0; -#ifdef DEBUG - /* randomly do sparse inode allocations */ - if (xfs_sb_version_hassparseinodes(&tp->t_mountp->m_sb)) - do_sparse = prandom_u32() & 1; -#endif - memset(&args, 0, sizeof(args)); args.tp = tp; args.mp = tp->t_mountp; args.fsbno = NULLFSBLOCK; +#ifdef DEBUG + /* randomly do sparse inode allocations */ + if (xfs_sb_version_hassparseinodes(&tp->t_mountp->m_sb) && + args.mp->m_ialloc_min_blks < args.mp->m_ialloc_blks) + do_sparse = prandom_u32() & 1; +#endif + /* * Locking will ensure that we don't have two callers in here * at one time. @@ -768,6 +768,7 @@ sparse_alloc: return error; newlen = args.len << args.mp->m_sb.sb_inopblog; + ASSERT(newlen <= XFS_INODES_PER_CHUNK); allocmask = (1 << (newlen / XFS_INODES_PER_HOLEMASK_BIT)) - 1; } |