|
@@ -607,7 +607,8 @@ xfssyncd(
|
|
|
set_freezable();
|
|
|
timeleft = xfs_syncd_centisecs * msecs_to_jiffies(10);
|
|
|
for (;;) {
|
|
|
- timeleft = schedule_timeout_interruptible(timeleft);
|
|
|
+ if (list_empty(&mp->m_sync_list))
|
|
|
+ timeleft = schedule_timeout_interruptible(timeleft);
|
|
|
/* swsusp */
|
|
|
try_to_freeze();
|
|
|
if (kthread_should_stop() && list_empty(&mp->m_sync_list))
|
|
@@ -627,8 +628,7 @@ xfssyncd(
|
|
|
list_add_tail(&mp->m_sync_work.w_list,
|
|
|
&mp->m_sync_list);
|
|
|
}
|
|
|
- list_for_each_entry_safe(work, n, &mp->m_sync_list, w_list)
|
|
|
- list_move(&work->w_list, &tmp);
|
|
|
+ list_splice_init(&mp->m_sync_list, &tmp);
|
|
|
spin_unlock(&mp->m_sync_lock);
|
|
|
|
|
|
list_for_each_entry_safe(work, n, &tmp, w_list) {
|