diff options
author | Yingping Lu <yingping@sgi.com> | 2006-01-11 05:02:29 -0500 |
---|---|---|
committer | Nathan Scott <nathans@sgi.com> | 2006-01-11 05:02:29 -0500 |
commit | 71df099dc3f9cd17e8564eb647d7c1fb2ee83e2d (patch) | |
tree | cd355dc9b7f89511e27eca3da778a8e52200d7b1 /fs | |
parent | 75e17b3caf29b262000dc7348f1be9a7d5403463 (diff) |
[XFS] xfssyncd is responsible for flushing inode or device's data by
extracting the work from its queue. In addition, this processing also
decrement the inode's i_count. If there are any remaining works in queue
before this process terminates, we have unbalanced increment and decrement
of i_count. Thus it can cause assertion failure of vn_count. The fix
allows xyssyncd to process any remaining work before it is shutdown.
SGI-PV: 945935
SGI-Modid: xfs-linux-melb:xfs-kern:203970a
Signed-off-by: Yingping Lu <yingping@sgi.com>
Signed-off-by: Nathan Scott <nathans@sgi.com>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/xfs/linux-2.6/xfs_super.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/xfs/linux-2.6/xfs_super.c b/fs/xfs/linux-2.6/xfs_super.c index 556c1437b17d..f22e426d9e42 100644 --- a/fs/xfs/linux-2.6/xfs_super.c +++ b/fs/xfs/linux-2.6/xfs_super.c | |||
@@ -579,7 +579,7 @@ xfssyncd( | |||
579 | timeleft = schedule_timeout_interruptible(timeleft); | 579 | timeleft = schedule_timeout_interruptible(timeleft); |
580 | /* swsusp */ | 580 | /* swsusp */ |
581 | try_to_freeze(); | 581 | try_to_freeze(); |
582 | if (kthread_should_stop()) | 582 | if (kthread_should_stop() && list_empty(&vfsp->vfs_sync_list)) |
583 | break; | 583 | break; |
584 | 584 | ||
585 | spin_lock(&vfsp->vfs_sync_lock); | 585 | spin_lock(&vfsp->vfs_sync_lock); |