swap: don't do discard if no discard option added
When swapon() was not passed the SWAP_FLAG_DISCARD option, sys_swapon() will still perform a discard operation. This can cause problems if discard is slow or buggy. Reverse the order of the check so that a discard operation is performed only if the sys_swapon() caller is attempting to enable discard. Signed-off-by: Shaohua Li <shli@fusionio.com> Reported-by: Holger Kiehl <Holger.Kiehl@dwd.de> Tested-by: Holger Kiehl <Holger.Kiehl@dwd.de> Cc: Hugh Dickins <hughd@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Родитель
1480de0340
Коммит
052b1987fa
|
@ -2103,7 +2103,7 @@ SYSCALL_DEFINE2(swapon, const char __user *, specialfile, int, swap_flags)
|
|||
p->flags |= SWP_SOLIDSTATE;
|
||||
p->cluster_next = 1 + (random32() % p->highest_bit);
|
||||
}
|
||||
if (discard_swap(p) == 0 && (swap_flags & SWAP_FLAG_DISCARD))
|
||||
if ((swap_flags & SWAP_FLAG_DISCARD) && discard_swap(p) == 0)
|
||||
p->flags |= SWP_DISCARDABLE;
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче