提交 d4f0f122 编写于 作者: L Linus Torvalds
...@@ -540,7 +540,7 @@ xfs_probe_cluster( ...@@ -540,7 +540,7 @@ xfs_probe_cluster(
/* First sum forwards in this page */ /* First sum forwards in this page */
do { do {
if (mapped != buffer_mapped(bh)) if (!buffer_uptodate(bh) || (mapped != buffer_mapped(bh)))
return total; return total;
total += bh->b_size; total += bh->b_size;
} while ((bh = bh->b_this_page) != head); } while ((bh = bh->b_this_page) != head);
......
...@@ -68,6 +68,9 @@ kmem_zone_t *qm_dqzone; ...@@ -68,6 +68,9 @@ kmem_zone_t *qm_dqzone;
kmem_zone_t *qm_dqtrxzone; kmem_zone_t *qm_dqtrxzone;
STATIC kmem_shaker_t xfs_qm_shaker; STATIC kmem_shaker_t xfs_qm_shaker;
STATIC cred_t xfs_zerocr;
STATIC xfs_inode_t xfs_zeroino;
STATIC void xfs_qm_list_init(xfs_dqlist_t *, char *, int); STATIC void xfs_qm_list_init(xfs_dqlist_t *, char *, int);
STATIC void xfs_qm_list_destroy(xfs_dqlist_t *); STATIC void xfs_qm_list_destroy(xfs_dqlist_t *);
...@@ -1393,8 +1396,6 @@ xfs_qm_qino_alloc( ...@@ -1393,8 +1396,6 @@ xfs_qm_qino_alloc(
xfs_trans_t *tp; xfs_trans_t *tp;
int error; int error;
unsigned long s; unsigned long s;
cred_t zerocr;
xfs_inode_t zeroino;
int committed; int committed;
tp = xfs_trans_alloc(mp, XFS_TRANS_QM_QINOCREATE); tp = xfs_trans_alloc(mp, XFS_TRANS_QM_QINOCREATE);
...@@ -1406,11 +1407,9 @@ xfs_qm_qino_alloc( ...@@ -1406,11 +1407,9 @@ xfs_qm_qino_alloc(
xfs_trans_cancel(tp, 0); xfs_trans_cancel(tp, 0);
return error; return error;
} }
memset(&zerocr, 0, sizeof(zerocr));
memset(&zeroino, 0, sizeof(zeroino));
if ((error = xfs_dir_ialloc(&tp, &zeroino, S_IFREG, 1, 0, if ((error = xfs_dir_ialloc(&tp, &xfs_zeroino, S_IFREG, 1, 0,
&zerocr, 0, 1, ip, &committed))) { &xfs_zerocr, 0, 1, ip, &committed))) {
xfs_trans_cancel(tp, XFS_TRANS_RELEASE_LOG_RES | xfs_trans_cancel(tp, XFS_TRANS_RELEASE_LOG_RES |
XFS_TRANS_ABORT); XFS_TRANS_ABORT);
return error; return error;
......
...@@ -130,7 +130,8 @@ xfs_growfs_rt_alloc( ...@@ -130,7 +130,8 @@ xfs_growfs_rt_alloc(
/* /*
* Lock the inode. * Lock the inode.
*/ */
if ((error = xfs_trans_iget(mp, tp, ino, 0, XFS_ILOCK_EXCL, &ip))) if ((error = xfs_trans_iget(mp, tp, ino, 0,
XFS_ILOCK_EXCL, &ip)))
goto error_exit; goto error_exit;
XFS_BMAP_INIT(&flist, &firstblock); XFS_BMAP_INIT(&flist, &firstblock);
/* /*
...@@ -170,8 +171,8 @@ xfs_growfs_rt_alloc( ...@@ -170,8 +171,8 @@ xfs_growfs_rt_alloc(
/* /*
* Lock the bitmap inode. * Lock the bitmap inode.
*/ */
if ((error = xfs_trans_iget(mp, tp, ino, 0, XFS_ILOCK_EXCL, if ((error = xfs_trans_iget(mp, tp, ino, 0,
&ip))) XFS_ILOCK_EXCL, &ip)))
goto error_exit; goto error_exit;
/* /*
* Get a buffer for the block. * Get a buffer for the block.
...@@ -2023,8 +2024,8 @@ xfs_growfs_rt( ...@@ -2023,8 +2024,8 @@ xfs_growfs_rt(
/* /*
* Lock out other callers by grabbing the bitmap inode lock. * Lock out other callers by grabbing the bitmap inode lock.
*/ */
if ((error = xfs_trans_iget(mp, tp, 0, mp->m_sb.sb_rbmino, if ((error = xfs_trans_iget(mp, tp, mp->m_sb.sb_rbmino, 0,
XFS_ILOCK_EXCL, &ip))) XFS_ILOCK_EXCL, &ip)))
goto error_exit; goto error_exit;
ASSERT(ip == mp->m_rbmip); ASSERT(ip == mp->m_rbmip);
/* /*
...@@ -2037,8 +2038,8 @@ xfs_growfs_rt( ...@@ -2037,8 +2038,8 @@ xfs_growfs_rt(
/* /*
* Get the summary inode into the transaction. * Get the summary inode into the transaction.
*/ */
if ((error = xfs_trans_iget(mp, tp, mp->m_sb.sb_rsumino, if ((error = xfs_trans_iget(mp, tp, mp->m_sb.sb_rsumino, 0,
0, XFS_ILOCK_EXCL, &ip))) XFS_ILOCK_EXCL, &ip)))
goto error_exit; goto error_exit;
ASSERT(ip == mp->m_rsumip); ASSERT(ip == mp->m_rsumip);
/* /*
...@@ -2158,10 +2159,9 @@ xfs_rtallocate_extent( ...@@ -2158,10 +2159,9 @@ xfs_rtallocate_extent(
/* /*
* Lock out other callers by grabbing the bitmap inode lock. * Lock out other callers by grabbing the bitmap inode lock.
*/ */
error = xfs_trans_iget(mp, tp, mp->m_sb.sb_rbmino, 0, XFS_ILOCK_EXCL, &ip); if ((error = xfs_trans_iget(mp, tp, mp->m_sb.sb_rbmino, 0,
if (error) { XFS_ILOCK_EXCL, &ip)))
return error; return error;
}
sumbp = NULL; sumbp = NULL;
/* /*
* Allocate by size, or near another block, or exactly at some block. * Allocate by size, or near another block, or exactly at some block.
...@@ -2221,10 +2221,9 @@ xfs_rtfree_extent( ...@@ -2221,10 +2221,9 @@ xfs_rtfree_extent(
/* /*
* Synchronize by locking the bitmap inode. * Synchronize by locking the bitmap inode.
*/ */
error = xfs_trans_iget(mp, tp, mp->m_sb.sb_rbmino, 0, XFS_ILOCK_EXCL, &ip); if ((error = xfs_trans_iget(mp, tp, mp->m_sb.sb_rbmino, 0,
if (error) { XFS_ILOCK_EXCL, &ip)))
return error; return error;
}
#if defined(__KERNEL__) && defined(DEBUG) #if defined(__KERNEL__) && defined(DEBUG)
/* /*
* Check to see that this whole range is currently allocated. * Check to see that this whole range is currently allocated.
...@@ -2365,8 +2364,8 @@ xfs_rtpick_extent( ...@@ -2365,8 +2364,8 @@ xfs_rtpick_extent(
__uint64_t seq; /* sequence number of file creation */ __uint64_t seq; /* sequence number of file creation */
__uint64_t *seqp; /* pointer to seqno in inode */ __uint64_t *seqp; /* pointer to seqno in inode */
error = xfs_trans_iget(mp, tp, mp->m_sb.sb_rbmino, 0, XFS_ILOCK_EXCL, &ip); if ((error = xfs_trans_iget(mp, tp, mp->m_sb.sb_rbmino, 0,
if (error) XFS_ILOCK_EXCL, &ip)))
return error; return error;
ASSERT(ip == mp->m_rbmip); ASSERT(ip == mp->m_rbmip);
seqp = (__uint64_t *)&ip->i_d.di_atime; seqp = (__uint64_t *)&ip->i_d.di_atime;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册