From: Jan Stancek <jstancek@redhat.com>
To: ltp@lists.linux.it
Subject: [LTP] [PATCH] swapon: commit swapfile caches to disk
Date: Tue, 12 Jun 2018 08:56:12 -0400 (EDT) [thread overview]
Message-ID: <1468267167.25962192.1528808172867.JavaMail.zimbra@redhat.com> (raw)
In-Reply-To: <1528806239-14297-1-git-send-email-liwang@redhat.com>
----- Original Message -----
> Testcase include swapon(8) fails on mainline kernel-v4.17+ as:
> swapon01 1 TFAIL : swapon01.c:47: Failed to turn on swapfile:
> TEST_ERRNO=EINVAL(22): Invalid argument
> swapon02 4 TFAIL : swapon02.c:91: swapon(2) failed to produce
> expected error: 16, errno: EBUSY and got 22.
> swapon03 1 TFAIL : swapon03.c:243: Failed to setup swaps
> swapoff01 1 TBROK : swapoff01.c:64: Failed to turn on the swap file,
> skipping test iteration
>
> And dmesg shows that:
> [ 128.698981] swapon: file is not committed
>
> The error located in IOMAP_F_DIRTY(linux/fs/iomap.c) checking, which means
> this swapfile have uncommitted metadata in caches. After adding sync() to
> the end of all mkswap opertaion, these errors were gone.
>
> linux/fs/iomap.c:
> static loff_t iomap_swapfile_activate_actor(
> struct inode *inode,
> loff_t pos,
> loff_t count,
> void *data,
> struct iomap *iomap)
> {
> struct iomap_swapfile_info *isi = data;
> int error;
> ...
>
> /* No uncommitted metadata or shared blocks. */
> if (iomap->flags & IOMAP_F_DIRTY) {
> pr_err("swapon: file is not committed\n");
> return -EINVAL;
> }
> ...
> }
> }
> Signed-off-by: Li Wang <liwang@redhat.com>
> ---
>
> Notes:
> The new changes about swapfile activation function were merged in
> kernel-4.17
> recently, so we didn't hit this failures before.
Comment/code in mkswap, that has been present for years:
/*
* A subsequent swapon() will fail if the signature
* is not actually on disk. (This is a kernel bug.)
* The fsync() in close_fd() will take care of writing.
*/
I'm assuming your mkswap is recent enough. Any idea why fsync()
in mkswap is no longer enough?
Regards,
Jan
>
> testcases/kernel/syscalls/swapoff/swapoff01.c | 2 ++
> testcases/kernel/syscalls/swapoff/swapoff02.c | 2 ++
> testcases/kernel/syscalls/swapon/libswapon.c | 2 ++
> 3 files changed, 6 insertions(+)
>
> diff --git a/testcases/kernel/syscalls/swapoff/swapoff01.c
> b/testcases/kernel/syscalls/swapoff/swapoff01.c
> index a63e661..b587b0d 100644
> --- a/testcases/kernel/syscalls/swapoff/swapoff01.c
> +++ b/testcases/kernel/syscalls/swapoff/swapoff01.c
> @@ -105,6 +105,8 @@ static void setup(void)
>
> if (system("mkswap swapfile01 > tmpfile 2>&1") != 0)
> tst_brkm(TBROK, cleanup, "Failed to make swapfile");
> +
> + sync();
> }
>
> static void cleanup(void)
> diff --git a/testcases/kernel/syscalls/swapoff/swapoff02.c
> b/testcases/kernel/syscalls/swapoff/swapoff02.c
> index b5c6312..d8c5889 100644
> --- a/testcases/kernel/syscalls/swapoff/swapoff02.c
> +++ b/testcases/kernel/syscalls/swapoff/swapoff02.c
> @@ -154,6 +154,8 @@ static void setup(void)
>
> if (tst_fill_file("./swapfile01", 0x00, 1024, 1))
> tst_brkm(TBROK, cleanup, "Failed to create swapfile");
> +
> + sync();
> }
>
> static void cleanup(void)
> diff --git a/testcases/kernel/syscalls/swapon/libswapon.c
> b/testcases/kernel/syscalls/swapon/libswapon.c
> index cf6a988..49fa5ed 100644
> --- a/testcases/kernel/syscalls/swapon/libswapon.c
> +++ b/testcases/kernel/syscalls/swapon/libswapon.c
> @@ -46,4 +46,6 @@ void make_swapfile(void (cleanup)(void), const char
> *swapfile)
> argv[2] = NULL;
>
> tst_run_cmd(cleanup, argv, "/dev/null", "/dev/null", 0);
> +
> + sync();
> }
> --
> 1.9.3
>
>
> --
> Mailing list info: https://lists.linux.it/listinfo/ltp
>
next prev parent reply other threads:[~2018-06-12 12:56 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-06-12 12:23 [LTP] [PATCH] swapon: commit swapfile caches to disk Li Wang
2018-06-12 12:48 ` Cyril Hrubis
2018-06-12 13:05 ` Li Wang
2018-06-12 13:17 ` Li Wang
2018-06-12 12:56 ` Jan Stancek [this message]
2018-06-12 13:12 ` Li Wang
2018-06-14 6:37 ` Li Wang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1468267167.25962192.1528808172867.JavaMail.zimbra@redhat.com \
--to=jstancek@redhat.com \
--cc=ltp@lists.linux.it \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.