diff options
Diffstat (limited to 'fs/xfs')
-rw-r--r-- | fs/xfs/linux-2.6/xfs_sync.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/fs/xfs/linux-2.6/xfs_sync.c b/fs/xfs/linux-2.6/xfs_sync.c index f9fc154d9f72..05cd85317f6f 100644 --- a/fs/xfs/linux-2.6/xfs_sync.c +++ b/fs/xfs/linux-2.6/xfs_sync.c | |||
@@ -607,7 +607,8 @@ xfssyncd( | |||
607 | set_freezable(); | 607 | set_freezable(); |
608 | timeleft = xfs_syncd_centisecs * msecs_to_jiffies(10); | 608 | timeleft = xfs_syncd_centisecs * msecs_to_jiffies(10); |
609 | for (;;) { | 609 | for (;;) { |
610 | timeleft = schedule_timeout_interruptible(timeleft); | 610 | if (list_empty(&mp->m_sync_list)) |
611 | timeleft = schedule_timeout_interruptible(timeleft); | ||
611 | /* swsusp */ | 612 | /* swsusp */ |
612 | try_to_freeze(); | 613 | try_to_freeze(); |
613 | if (kthread_should_stop() && list_empty(&mp->m_sync_list)) | 614 | if (kthread_should_stop() && list_empty(&mp->m_sync_list)) |
@@ -627,8 +628,7 @@ xfssyncd( | |||
627 | list_add_tail(&mp->m_sync_work.w_list, | 628 | list_add_tail(&mp->m_sync_work.w_list, |
628 | &mp->m_sync_list); | 629 | &mp->m_sync_list); |
629 | } | 630 | } |
630 | list_for_each_entry_safe(work, n, &mp->m_sync_list, w_list) | 631 | list_splice_init(&mp->m_sync_list, &tmp); |
631 | list_move(&work->w_list, &tmp); | ||
632 | spin_unlock(&mp->m_sync_lock); | 632 | spin_unlock(&mp->m_sync_lock); |
633 | 633 | ||
634 | list_for_each_entry_safe(work, n, &tmp, w_list) { | 634 | list_for_each_entry_safe(work, n, &tmp, w_list) { |