mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-14 15:54:15 +08:00
[XFS] Resolve an issue with xfsbufd not getting along with swsusp.
SGI Modid: xfs-linux:xfs-kern:22342a Signed-off-by: Nathan Scott <nathans@sgi.com> Signed-off-by: Christoph Hellwig <hch@sgi.com>
This commit is contained in:
parent
764433b7f1
commit
abd0cf7aea
@ -1746,13 +1746,15 @@ STATIC DECLARE_COMPLETION(pagebuf_daemon_done);
|
|||||||
STATIC struct task_struct *pagebuf_daemon_task;
|
STATIC struct task_struct *pagebuf_daemon_task;
|
||||||
STATIC int pagebuf_daemon_active;
|
STATIC int pagebuf_daemon_active;
|
||||||
STATIC int force_flush;
|
STATIC int force_flush;
|
||||||
|
STATIC int force_sleep;
|
||||||
|
|
||||||
STATIC int
|
STATIC int
|
||||||
pagebuf_daemon_wakeup(
|
pagebuf_daemon_wakeup(
|
||||||
int priority,
|
int priority,
|
||||||
unsigned int mask)
|
unsigned int mask)
|
||||||
{
|
{
|
||||||
|
if (force_sleep)
|
||||||
|
return 0;
|
||||||
force_flush = 1;
|
force_flush = 1;
|
||||||
barrier();
|
barrier();
|
||||||
wake_up_process(pagebuf_daemon_task);
|
wake_up_process(pagebuf_daemon_task);
|
||||||
@ -1778,7 +1780,12 @@ pagebuf_daemon(
|
|||||||
|
|
||||||
INIT_LIST_HEAD(&tmp);
|
INIT_LIST_HEAD(&tmp);
|
||||||
do {
|
do {
|
||||||
try_to_freeze(PF_FREEZE);
|
if (unlikely(current->flags & PF_FREEZE)) {
|
||||||
|
force_sleep = 1;
|
||||||
|
refrigerator(PF_FREEZE);
|
||||||
|
} else {
|
||||||
|
force_sleep = 0;
|
||||||
|
}
|
||||||
|
|
||||||
set_current_state(TASK_INTERRUPTIBLE);
|
set_current_state(TASK_INTERRUPTIBLE);
|
||||||
schedule_timeout((xfs_buf_timer_centisecs * HZ) / 100);
|
schedule_timeout((xfs_buf_timer_centisecs * HZ) / 100);
|
||||||
|
Loading…
Reference in New Issue
Block a user