On Tue, 20 Mar 2012 20:34:38 +0800 Shaohua Li <shli@xxxxxxxxxx> wrote: > > Even don't add discard option, swapon will do discard, this sounds buggy, > especially when discard is slow or buggy. > That changelog is pretty hard to understand. I rewrote it as below. From: Shaohua Li <shli@xxxxxxxxxx> Subject: 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@xxxxxxxxxxxx> Reported-by: Holger Kiehl <Holger.Kiehl@xxxxxx> Tested-by: Holger Kiehl <Holger.Kiehl@xxxxxx> Cc: Hugh Dickins <hughd@xxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- mm/swapfile.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff -puN mm/swapfile.c~swap-dont-do-discard-if-no-discard-option-added mm/swapfile.c --- a/mm/swapfile.c~swap-dont-do-discard-if-no-discard-option-added +++ a/mm/swapfile.c @@ -2105,7 +2105,7 @@ SYSCALL_DEFINE2(swapon, const char __use 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; } _ -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>