Merge branch 'for-linus' of git://oss.sgi.com:8090/xfs/xfs-2.6

* 'for-linus' of git://oss.sgi.com:8090/xfs/xfs-2.6:
  [XFS] fix inode leak in xfs_iget_core()
  [XFS] 977545 977545 977545 977545 977545 977545 xfsaild causing too many
This commit is contained in:
Linus Torvalds 2008-03-06 08:14:00 -08:00
commit 910da1a48e
2 changed files with 11 additions and 7 deletions

View file

@ -235,6 +235,7 @@ xfs_iget_core(
*/ */
new_icl = kmem_zone_alloc(xfs_icluster_zone, KM_SLEEP); new_icl = kmem_zone_alloc(xfs_icluster_zone, KM_SLEEP);
if (radix_tree_preload(GFP_KERNEL)) { if (radix_tree_preload(GFP_KERNEL)) {
xfs_idestroy(ip);
delay(1); delay(1);
goto again; goto again;
} }

View file

@ -261,16 +261,19 @@ xfsaild_push(
xfs_log_force(mp, (xfs_lsn_t)0, XFS_LOG_FORCE); xfs_log_force(mp, (xfs_lsn_t)0, XFS_LOG_FORCE);
} }
/* if (!count) {
* We reached the target so wait a bit longer for I/O to complete and /* We're past our target or empty, so idle */
* remove pushed items from the AIL before we start the next scan from tout = 1000;
* the start of the AIL. } else if (XFS_LSN_CMP(lsn, target) >= 0) {
*/ /*
if ((XFS_LSN_CMP(lsn, target) >= 0)) { * We reached the target so wait a bit longer for I/O to
* complete and remove pushed items from the AIL before we
* start the next scan from the start of the AIL.
*/
tout += 20; tout += 20;
last_pushed_lsn = 0; last_pushed_lsn = 0;
} else if ((restarts > XFS_TRANS_PUSH_AIL_RESTARTS) || } else if ((restarts > XFS_TRANS_PUSH_AIL_RESTARTS) ||
(count && ((stuck * 100) / count > 90))) { ((stuck * 100) / count > 90)) {
/* /*
* Either there is a lot of contention on the AIL or we * Either there is a lot of contention on the AIL or we
* are stuck due to operations in progress. "Stuck" in this * are stuck due to operations in progress. "Stuck" in this