Commit 910da1a4 authored by Linus Torvalds's avatar Linus Torvalds

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
parents 2ab42e24 72772a3b
...@@ -235,6 +235,7 @@ xfs_iget_core( ...@@ -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;
} }
......
...@@ -261,16 +261,19 @@ xfsaild_push( ...@@ -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're past our target or empty, so idle */
tout = 1000;
} else if (XFS_LSN_CMP(lsn, target) >= 0) {
/* /*
* We reached the target so wait a bit longer for I/O to complete and * We reached the target so wait a bit longer for I/O to
* remove pushed items from the AIL before we start the next scan from * complete and remove pushed items from the AIL before we
* the start of the AIL. * start the next scan from the start of the AIL.
*/ */
if ((XFS_LSN_CMP(lsn, target) >= 0)) {
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
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment