forked from luck/tmp_suning_uos_patched
Merge branch '2.6.36-xfs-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/dgc/xfsdev
This commit is contained in:
commit
cb7a93412a
|
@ -440,12 +440,7 @@ _xfs_buf_find(
|
|||
ASSERT(btp == bp->b_target);
|
||||
if (bp->b_file_offset == range_base &&
|
||||
bp->b_buffer_length == range_length) {
|
||||
/*
|
||||
* If we look at something, bring it to the
|
||||
* front of the list for next time.
|
||||
*/
|
||||
atomic_inc(&bp->b_hold);
|
||||
list_move(&bp->b_hash_list, &hash->bh_list);
|
||||
goto found;
|
||||
}
|
||||
}
|
||||
|
@ -1443,8 +1438,7 @@ xfs_alloc_bufhash(
|
|||
{
|
||||
unsigned int i;
|
||||
|
||||
btp->bt_hashshift = external ? 3 : 8; /* 8 or 256 buckets */
|
||||
btp->bt_hashmask = (1 << btp->bt_hashshift) - 1;
|
||||
btp->bt_hashshift = external ? 3 : 12; /* 8 or 4096 buckets */
|
||||
btp->bt_hash = kmem_zalloc_large((1 << btp->bt_hashshift) *
|
||||
sizeof(xfs_bufhash_t));
|
||||
for (i = 0; i < (1 << btp->bt_hashshift); i++) {
|
||||
|
|
|
@ -137,7 +137,6 @@ typedef struct xfs_buftarg {
|
|||
size_t bt_smask;
|
||||
|
||||
/* per device buffer hash table */
|
||||
uint bt_hashmask;
|
||||
uint bt_hashshift;
|
||||
xfs_bufhash_t *bt_hash;
|
||||
|
||||
|
|
|
@ -2299,15 +2299,22 @@ xfs_alloc_file_space(
|
|||
e = allocatesize_fsb;
|
||||
}
|
||||
|
||||
/*
|
||||
* The transaction reservation is limited to a 32-bit block
|
||||
* count, hence we need to limit the number of blocks we are
|
||||
* trying to reserve to avoid an overflow. We can't allocate
|
||||
* more than @nimaps extents, and an extent is limited on disk
|
||||
* to MAXEXTLEN (21 bits), so use that to enforce the limit.
|
||||
*/
|
||||
resblks = min_t(xfs_fileoff_t, (e - s), (MAXEXTLEN * nimaps));
|
||||
if (unlikely(rt)) {
|
||||
resrtextents = qblocks = (uint)(e - s);
|
||||
resrtextents = qblocks = resblks;
|
||||
resrtextents /= mp->m_sb.sb_rextsize;
|
||||
resblks = XFS_DIOSTRAT_SPACE_RES(mp, 0);
|
||||
quota_flag = XFS_QMOPT_RES_RTBLKS;
|
||||
} else {
|
||||
resrtextents = 0;
|
||||
resblks = qblocks = \
|
||||
XFS_DIOSTRAT_SPACE_RES(mp, (uint)(e - s));
|
||||
resblks = qblocks = XFS_DIOSTRAT_SPACE_RES(mp, resblks);
|
||||
quota_flag = XFS_QMOPT_RES_REGBLKS;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user