Skip to content

Commit

Permalink
[XFS] xfssyncd is responsible for flushing inode or device's data by
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Yingping Lu authored and Nathan Scott committed Jan 11, 2006
1 parent 75e17b3 commit 71df099
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion fs/xfs/linux-2.6/xfs_super.c
Original file line number Diff line number Diff line change
Expand Up @@ -579,7 +579,7 @@ xfssyncd(
timeleft = schedule_timeout_interruptible(timeleft);
/* swsusp */
try_to_freeze();
if (kthread_should_stop())
if (kthread_should_stop() && list_empty(&vfsp->vfs_sync_list))
break;

spin_lock(&vfsp->vfs_sync_lock);
Expand Down

0 comments on commit 71df099

Please sign in to comment.