Commit 71df099d authored by Yingping Lu's avatar Yingping Lu Committed by Nathan Scott

[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: default avatarYingping Lu <yingping@sgi.com>
Signed-off-by: default avatarNathan Scott <nathans@sgi.com>
parent 75e17b3c
...@@ -579,7 +579,7 @@ xfssyncd( ...@@ -579,7 +579,7 @@ xfssyncd(
timeleft = schedule_timeout_interruptible(timeleft); timeleft = schedule_timeout_interruptible(timeleft);
/* swsusp */ /* swsusp */
try_to_freeze(); try_to_freeze();
if (kthread_should_stop()) if (kthread_should_stop() && list_empty(&vfsp->vfs_sync_list))
break; break;
spin_lock(&vfsp->vfs_sync_lock); spin_lock(&vfsp->vfs_sync_lock);
......
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