From: Petr Vorel <pvorel@suse.cz>
To: Li Wang <liwang@redhat.com>
Cc: ltp@lists.linux.it
Subject: Re: [LTP] [PATCH V4 5/6] libswap: Introduce file contiguity check
Date: Wed, 24 Jan 2024 19:17:29 +0100 [thread overview]
Message-ID: <20240124181729.GA333483@pevik> (raw)
In-Reply-To: <20240124044548.2652626-6-liwang@redhat.com>
Hi Li,
> This patch introduces a new function file_is_contiguous to the
> libltpswap library to determine if a swap file is stored in a
> contiguous block of disk space, which is a typical requirement
> for swap files in Linux. The function performs a series of checks
> using the fiemap structure to assess the contiguity of the file
> and logs the result.
> It is integrated into the is_swap_supported function to replace
> the previous tst_fibmap check, providing a more reliable method
> for verifying that a file suitable for swap is indeed contiguous.
...
> +static int file_is_contiguous(const char *filename)
> +{
> + int fd, contiguous = 0;
> + struct fiemap *fiemap;
> +
> + if (tst_fibmap(filename) == 0) {
> + contiguous = 1;
> + goto out;
> + }
> +
> + if (tst_fs_type(filename) == TST_TMPFS_MAGIC) {
> + contiguous = 0;
nit: contiguous is already 0. Also I like that tst_fibmap is tested first (in
case tmpfs gets that support one day.
> + goto out;
> + }
> +
> + fd = SAFE_OPEN(filename, O_RDONLY);
> +
> + fiemap = (struct fiemap *)SAFE_MALLOC(sizeof(struct fiemap) + sizeof(struct fiemap_extent));
> + memset(fiemap, 0, sizeof(struct fiemap) + sizeof(struct fiemap_extent));
> +
> + fiemap->fm_start = 0;
> + fiemap->fm_length = ~0;
> + fiemap->fm_flags = 0;
> + fiemap->fm_extent_count = 1;
> +
> + SAFE_IOCTL(fd, FS_IOC_FIEMAP, fiemap);
> +
> + /*
> + * fiemap->fm_mapped_extents != 1:
> + * This checks if the file does not have exactly one extent. If there are more
> + * or zero extents, the file is not stored in a single contiguous block.
> + *
> + * fiemap->fm_extents[0].fe_logical != 0:
> + * This checks if the first extent does not start at the logical offset 0 of
> + * the file. If it doesn't, it indicates that the file's first block of data
> + * is not at the beginning of the file, which implies non-contiguity.
> + *
> + * (fiemap->fm_extents[0].fe_flags & FIEMAP_EXTENT_LAST) != FIEMAP_EXTENT_LAST:
> + * This checks if the first extent does not have the FIEMAP_EXTENT_LAST flag set.
> + * If the flag isn't set, it means that this extent is not the last one, suggesting
> + * that there are more extents and the file is not contiguous.
> + */
Interesting, thanks for the doc!
LGTM.
Reviewed-by: Petr Vorel <pvorel@suse.cz>
Tested-by: Petr Vorel <pvorel@suse.cz>
Kind regards,
Petr
--
Mailing list info: https://lists.linux.it/listinfo/ltp
next prev parent reply other threads:[~2024-01-24 18:17 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-01-24 4:45 [LTP] [PATCH V4 0/6] improvement work on libswap library Li Wang
2024-01-24 4:45 ` [LTP] [PATCH V4 1/6] libswap: add known swap supported fs check Li Wang
2024-01-24 4:45 ` [LTP] [PATCH V4 2/6] swapon01: Test on all filesystems Li Wang
2024-01-24 4:45 ` [LTP] [PATCH V4 3/6] swapon01: Improving test with memory limits and swap reporting Li Wang
2024-01-24 4:45 ` [LTP] [PATCH V4 4/6] libswap: add function to prealloc contiguous file Li Wang
2024-01-24 4:45 ` [LTP] [PATCH V4 5/6] libswap: Introduce file contiguity check Li Wang
2024-01-24 18:17 ` Petr Vorel [this message]
2024-01-24 4:45 ` [LTP] [PATCH V4 6/6] swapoff01: make use of make_swapfile Li Wang
2024-01-24 19:22 ` [LTP] [PATCH V4 0/6] improvement work on libswap library Petr Vorel
2024-01-25 10:23 ` Li Wang
2024-01-26 8:26 ` Yang Xu (Fujitsu)
2024-01-26 10:05 ` Cyril Hrubis
2024-01-26 10:34 ` Li Wang
2024-01-26 10:39 ` Petr Vorel
2024-01-26 10:46 ` Cyril Hrubis
2024-01-26 11:29 ` Petr Vorel
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=20240124181729.GA333483@pevik \
--to=pvorel@suse.cz \
--cc=liwang@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.