Merge branch 'xfs-misc-fixes-for-4.2-2' into for-next
This commit is contained in:
@@ -606,20 +606,20 @@ xfs_ialloc_ag_alloc(
|
|||||||
uint16_t allocmask = (uint16_t) -1; /* init. to full chunk */
|
uint16_t allocmask = (uint16_t) -1; /* init. to full chunk */
|
||||||
struct xfs_inobt_rec_incore rec;
|
struct xfs_inobt_rec_incore rec;
|
||||||
struct xfs_perag *pag;
|
struct xfs_perag *pag;
|
||||||
|
|
||||||
int do_sparse = 0;
|
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));
|
memset(&args, 0, sizeof(args));
|
||||||
args.tp = tp;
|
args.tp = tp;
|
||||||
args.mp = tp->t_mountp;
|
args.mp = tp->t_mountp;
|
||||||
args.fsbno = NULLFSBLOCK;
|
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
|
* Locking will ensure that we don't have two callers in here
|
||||||
* at one time.
|
* at one time.
|
||||||
@@ -768,6 +768,7 @@ sparse_alloc:
|
|||||||
return error;
|
return error;
|
||||||
|
|
||||||
newlen = args.len << args.mp->m_sb.sb_inopblog;
|
newlen = args.len << args.mp->m_sb.sb_inopblog;
|
||||||
|
ASSERT(newlen <= XFS_INODES_PER_CHUNK);
|
||||||
allocmask = (1 << (newlen / XFS_INODES_PER_HOLEMASK_BIT)) - 1;
|
allocmask = (1 << (newlen / XFS_INODES_PER_HOLEMASK_BIT)) - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2244,6 +2244,7 @@ xfs_ifree_cluster(
|
|||||||
int inodes_per_cluster;
|
int inodes_per_cluster;
|
||||||
int nbufs;
|
int nbufs;
|
||||||
int i, j;
|
int i, j;
|
||||||
|
int ioffset;
|
||||||
xfs_daddr_t blkno;
|
xfs_daddr_t blkno;
|
||||||
xfs_buf_t *bp;
|
xfs_buf_t *bp;
|
||||||
xfs_inode_t *ip;
|
xfs_inode_t *ip;
|
||||||
@@ -2264,9 +2265,9 @@ xfs_ifree_cluster(
|
|||||||
* physically allocated. Skip the cluster if an inode falls into
|
* physically allocated. Skip the cluster if an inode falls into
|
||||||
* a sparse region.
|
* a sparse region.
|
||||||
*/
|
*/
|
||||||
if ((xic->alloc & XFS_INOBT_MASK(inum - xic->first_ino)) == 0) {
|
ioffset = inum - xic->first_ino;
|
||||||
ASSERT(((inum - xic->first_ino) %
|
if ((xic->alloc & XFS_INOBT_MASK(ioffset)) == 0) {
|
||||||
inodes_per_cluster) == 0);
|
ASSERT(do_mod(ioffset, inodes_per_cluster) == 0);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user