* [LTP] [PATCH V4 0/6] improvement work on libswap library
@ 2024-01-24 4:45 Li Wang
2024-01-24 4:45 ` [LTP] [PATCH V4 1/6] libswap: add known swap supported fs check Li Wang
` (6 more replies)
0 siblings, 7 replies; 16+ messages in thread
From: Li Wang @ 2024-01-24 4:45 UTC (permalink / raw)
To: ltp
V3-->V4
* create a contiguous swapfile in swapoff01.c
* fixing old-XFS requires initialize swapfile issue
Todo:
* replace the tst_brk with tst_res+return in is_support_swap
* customisze swapfile size if needed
Test env:
Fedora38(x86_64, Btrfs), RHEL9(s390x, XFS), RHEL8(aarch64, XFS)
Li Wang (5):
libswap: add known swap supported fs check
swapon01: Improving test with memory limits and swap reporting
libswap: add function to prealloc contiguous file
libswap: Introduce file contiguity check
swapoff01: make use of make_swapfile
Petr Vorel (1):
swapon01: Test on all filesystems
libs/libltpswap/libswap.c | 145 +++++++++++++++++-
testcases/kernel/syscalls/swapoff/swapoff01.c | 5 +-
testcases/kernel/syscalls/swapon/swapon01.c | 16 +-
3 files changed, 155 insertions(+), 11 deletions(-)
--
2.40.1
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply [flat|nested] 16+ messages in thread
* [LTP] [PATCH V4 1/6] libswap: add known swap supported fs check
2024-01-24 4:45 [LTP] [PATCH V4 0/6] improvement work on libswap library Li Wang
@ 2024-01-24 4:45 ` Li Wang
2024-01-24 4:45 ` [LTP] [PATCH V4 2/6] swapon01: Test on all filesystems Li Wang
` (5 subsequent siblings)
6 siblings, 0 replies; 16+ messages in thread
From: Li Wang @ 2024-01-24 4:45 UTC (permalink / raw)
To: ltp
This introduce an enhancement to the library's is_swap_supported
function to check for filesystem compatibility before attempting
to create and enable a swap file. A list of supported filesystems
is added (ext2, ext3, ext4, xfs, vfat, exfat, ntfs), and a check
against this list is performed to ensure that the swap operations
are only attempted on known compatible filesystems.
If the make_swapfile function fails, the error handling is now
more descriptive: it distinguishes between failures due to the
filesystem not supporting swap files and other types of failures.
Similarly, when attempting to enable the swap file with swapon,
the patch ensures that clearer error messages are provided in
cases where the operation is not supported by the filesystem.
Signed-off-by: Li Wang <liwang@redhat.com>
---
libs/libltpswap/libswap.c | 25 +++++++++++++++++++++++--
1 file changed, 23 insertions(+), 2 deletions(-)
diff --git a/libs/libltpswap/libswap.c b/libs/libltpswap/libswap.c
index 13610709e..8c2ce6cd7 100644
--- a/libs/libltpswap/libswap.c
+++ b/libs/libltpswap/libswap.c
@@ -12,6 +12,17 @@
#include "libswap.h"
#include "lapi/syscalls.h"
+static const char *const swap_supported_fs[] = {
+ "ext2",
+ "ext3",
+ "ext4",
+ "xfs",
+ "vfat",
+ "exfat",
+ "ntfs",
+ NULL
+};
+
/*
* Make a swap file
*/
@@ -26,6 +37,7 @@ int make_swapfile(const char *swapfile, int safe)
/* make the file swapfile */
const char *argv[2 + 1];
+
argv[0] = "mkswap";
argv[1] = swapfile;
argv[2] = NULL;
@@ -40,13 +52,22 @@ int make_swapfile(const char *swapfile, int safe)
*/
void is_swap_supported(const char *filename)
{
+ int i, sw_support = 0;
int fibmap = tst_fibmap(filename);
long fs_type = tst_fs_type(filename);
const char *fstype = tst_fs_type_name(fs_type);
+ for (i = 0; swap_supported_fs[i]; i++) {
+ if (strstr(fstype, swap_supported_fs[i])) {
+ sw_support = 1;
+ break;
+ }
+ }
+
int ret = make_swapfile(filename, 1);
+
if (ret != 0) {
- if (fibmap == 1)
+ if (fibmap == 1 && sw_support == 0)
tst_brk(TCONF, "mkswap on %s not supported", fstype);
else
tst_brk(TFAIL, "mkswap on %s failed", fstype);
@@ -56,7 +77,7 @@ void is_swap_supported(const char *filename)
if (TST_RET == -1) {
if (errno == EPERM)
tst_brk(TCONF, "Permission denied for swapon()");
- else if (fibmap == 1 && errno == EINVAL)
+ else if (fibmap == 1 && errno == EINVAL && sw_support == 0)
tst_brk(TCONF, "Swapfile on %s not implemented", fstype);
else
tst_brk(TFAIL | TTERRNO, "swapon() on %s failed", fstype);
--
2.40.1
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [LTP] [PATCH V4 2/6] swapon01: Test on all filesystems
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 ` Li Wang
2024-01-24 4:45 ` [LTP] [PATCH V4 3/6] swapon01: Improving test with memory limits and swap reporting Li Wang
` (4 subsequent siblings)
6 siblings, 0 replies; 16+ messages in thread
From: Li Wang @ 2024-01-24 4:45 UTC (permalink / raw)
To: ltp
From: Petr Vorel <pvorel@suse.cz>
Test on all filesystems to increase coverage.
Skip filesystems which does not support swap (currently bcachefs, btrfs
and tmpfs).
Tested on 5.10, 6.6 and 6.7.
Signed-off-by: Petr Vorel <pvorel@suse.cz>
Signed-off-by: Li Wang <liwang@redhat.com>
---
testcases/kernel/syscalls/swapon/swapon01.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/testcases/kernel/syscalls/swapon/swapon01.c b/testcases/kernel/syscalls/swapon/swapon01.c
index e59fb20a1..e1fe50459 100644
--- a/testcases/kernel/syscalls/swapon/swapon01.c
+++ b/testcases/kernel/syscalls/swapon/swapon01.c
@@ -8,6 +8,7 @@
* [Description]
*
* Checks that swapon() succeds with swapfile.
+ * Testing on all filesystems which support swap file.
*/
#include <unistd.h>
@@ -17,7 +18,8 @@
#include "lapi/syscalls.h"
#include "libswap.h"
-#define SWAP_FILE "swapfile01"
+#define MNTPOINT "mntpoint"
+#define SWAP_FILE MNTPOINT"/swapfile01"
static void verify_swapon(void)
{
@@ -36,8 +38,10 @@ static void setup(void)
}
static struct tst_test test = {
+ .mntpoint = MNTPOINT,
+ .mount_device = 1,
.needs_root = 1,
- .needs_tmpdir = 1,
+ .all_filesystems = 1,
.test_all = verify_swapon,
.setup = setup
};
--
2.40.1
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [LTP] [PATCH V4 3/6] swapon01: Improving test with memory limits and swap reporting
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 ` Li Wang
2024-01-24 4:45 ` [LTP] [PATCH V4 4/6] libswap: add function to prealloc contiguous file Li Wang
` (3 subsequent siblings)
6 siblings, 0 replies; 16+ messages in thread
From: Li Wang @ 2024-01-24 4:45 UTC (permalink / raw)
To: ltp
This is target to create a more robust and controlled environment to test
the swapon system call. By introducing memory limits through cgroups and
filling memory with a known pattern, the test can better assess swapon
behavior when the system experiences memory pressure.
Additionally, the reporting of "SwapCached" memory before turning off the
swap file provides a clearer understanding of the swap system's state in
response to the test conditions.
Signed-off-by: Li Wang <liwang@redhat.com>
---
testcases/kernel/syscalls/swapon/swapon01.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/testcases/kernel/syscalls/swapon/swapon01.c b/testcases/kernel/syscalls/swapon/swapon01.c
index e1fe50459..a74a5171e 100644
--- a/testcases/kernel/syscalls/swapon/swapon01.c
+++ b/testcases/kernel/syscalls/swapon/swapon01.c
@@ -20,11 +20,15 @@
#define MNTPOINT "mntpoint"
#define SWAP_FILE MNTPOINT"/swapfile01"
+#define TESTMEM (1UL<<30)
static void verify_swapon(void)
{
TST_EXP_PASS(tst_syscall(__NR_swapon, SWAP_FILE, 0));
+ tst_pollute_memory(TESTMEM, 0x41);
+ tst_res(TINFO, "SwapCached: %ld Kb", SAFE_READ_MEMINFO("SwapCached:"));
+
if (TST_PASS && tst_syscall(__NR_swapoff, SWAP_FILE) != 0) {
tst_brk(TBROK | TERRNO,
"Failed to turn off swapfile, system reboot recommended");
@@ -35,6 +39,9 @@ static void setup(void)
{
is_swap_supported(SWAP_FILE);
make_swapfile(SWAP_FILE, 0);
+
+ SAFE_CG_PRINTF(tst_cg, "cgroup.procs", "%d", getpid());
+ SAFE_CG_PRINTF(tst_cg, "memory.max", "%lu", TESTMEM);
}
static struct tst_test test = {
@@ -42,6 +49,7 @@ static struct tst_test test = {
.mount_device = 1,
.needs_root = 1,
.all_filesystems = 1,
+ .needs_cgroup_ctrls = (const char *const []){ "memory", NULL },
.test_all = verify_swapon,
.setup = setup
};
--
2.40.1
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [LTP] [PATCH V4 4/6] libswap: add function to prealloc contiguous file
2024-01-24 4:45 [LTP] [PATCH V4 0/6] improvement work on libswap library Li Wang
` (2 preceding siblings ...)
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 ` Li Wang
2024-01-24 4:45 ` [LTP] [PATCH V4 5/6] libswap: Introduce file contiguity check Li Wang
` (2 subsequent siblings)
6 siblings, 0 replies; 16+ messages in thread
From: Li Wang @ 2024-01-24 4:45 UTC (permalink / raw)
To: ltp
The improve makes several key updates to the swap file handling
in the libswap.c file:
It incorporates support for the Btrfs filesystem, which is now
recognized as a valid filesystem for swap files.
A new function, set_nocow_attr, is added to apply the FS_NOCOW_FL
flag to files on Btrfs filesystems.
Introduces a new prealloc_contiguous_file function. This method
preallocates a contiguous block of space for the swap file during
its creation, rather than filling the file with data as was done
previously.
Modifications to the make_swapfile function are made to utilize
prealloc_contiguous_file for creating the swap file, ensuring
the file is created with contiguous space on the filesystem.
Signed-off-by: Li Wang <liwang@redhat.com>
---
libs/libltpswap/libswap.c | 54 ++++++++++++++++++++++++++++++++++++++-
1 file changed, 53 insertions(+), 1 deletion(-)
diff --git a/libs/libltpswap/libswap.c b/libs/libltpswap/libswap.c
index 8c2ce6cd7..e606e3f03 100644
--- a/libs/libltpswap/libswap.c
+++ b/libs/libltpswap/libswap.c
@@ -4,6 +4,7 @@
* Author: Stanislav Kholmanskikh <stanislav.kholmanskikh@oracle.com>
*/
+#include <linux/fs.h>
#include <errno.h>
#define TST_NO_DEFAULT_MAIN
@@ -13,6 +14,7 @@
#include "lapi/syscalls.h"
static const char *const swap_supported_fs[] = {
+ "btrfs",
"ext2",
"ext3",
"ext4",
@@ -23,6 +25,50 @@ static const char *const swap_supported_fs[] = {
NULL
};
+static void set_nocow_attr(const char *filename)
+{
+ int fd;
+ int attrs;
+
+ tst_res(TINFO, "FS_NOCOW_FL attribute set on %s", filename);
+
+ fd = SAFE_OPEN(filename, O_RDONLY);
+
+ SAFE_IOCTL(fd, FS_IOC_GETFLAGS, &attrs);
+
+ attrs |= FS_NOCOW_FL;
+
+ SAFE_IOCTL(fd, FS_IOC_SETFLAGS, &attrs);
+
+ SAFE_CLOSE(fd);
+}
+
+static int prealloc_contiguous_file(const char *path, size_t bs, size_t bcount)
+{
+ int fd;
+
+ fd = open(path, O_CREAT|O_WRONLY|O_TRUNC, 0600);
+ if (fd < 0)
+ return -1;
+
+ /* Btrfs file need set 'nocow' attribute */
+ if (tst_fs_type(path) == TST_BTRFS_MAGIC)
+ set_nocow_attr(path);
+
+ if (tst_prealloc_size_fd(fd, bs, bcount)) {
+ close(fd);
+ unlink(path);
+ return -1;
+ }
+
+ if (close(fd) < 0) {
+ unlink(path);
+ return -1;
+ }
+
+ return 0;
+}
+
/*
* Make a swap file
*/
@@ -32,9 +78,15 @@ int make_swapfile(const char *swapfile, int safe)
tst_brk(TBROK, "Insufficient disk space to create swap file");
/* create file */
- if (tst_fill_file(swapfile, 0, sysconf(_SC_PAGESIZE), 10) != 0)
+ if (prealloc_contiguous_file(swapfile, sysconf(_SC_PAGESIZE), 10) != 0)
tst_brk(TBROK, "Failed to create swapfile");
+ /* Full the file to make old xfs happy*/
+ if (tst_fs_type(swapfile) == TST_XFS_MAGIC) {
+ if (tst_fill_file(swapfile, 0, sysconf(_SC_PAGESIZE), 10) != 0)
+ tst_brk(TBROK, "Failed to create swapfile");
+ }
+
/* make the file swapfile */
const char *argv[2 + 1];
--
2.40.1
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [LTP] [PATCH V4 5/6] libswap: Introduce file contiguity check
2024-01-24 4:45 [LTP] [PATCH V4 0/6] improvement work on libswap library Li Wang
` (3 preceding siblings ...)
2024-01-24 4:45 ` [LTP] [PATCH V4 4/6] libswap: add function to prealloc contiguous file Li Wang
@ 2024-01-24 4:45 ` Li Wang
2024-01-24 18:17 ` Petr Vorel
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
6 siblings, 1 reply; 16+ messages in thread
From: Li Wang @ 2024-01-24 4:45 UTC (permalink / raw)
To: ltp
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.
Signed-off-by: Li Wang <liwang@redhat.com>
---
libs/libltpswap/libswap.c | 72 ++++++++++++++++++++++++++++++++++++---
1 file changed, 67 insertions(+), 5 deletions(-)
diff --git a/libs/libltpswap/libswap.c b/libs/libltpswap/libswap.c
index e606e3f03..6ab5cdc4c 100644
--- a/libs/libltpswap/libswap.c
+++ b/libs/libltpswap/libswap.c
@@ -6,6 +6,8 @@
#include <linux/fs.h>
#include <errno.h>
+#include <linux/fiemap.h>
+#include <stdlib.h>
#define TST_NO_DEFAULT_MAIN
@@ -69,6 +71,63 @@ static int prealloc_contiguous_file(const char *path, size_t bs, size_t bcount)
return 0;
}
+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;
+ 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.
+ */
+ if (fiemap->fm_mapped_extents != 1 ||
+ fiemap->fm_extents[0].fe_logical != 0 ||
+ (fiemap->fm_extents[0].fe_flags & FIEMAP_EXTENT_LAST) != FIEMAP_EXTENT_LAST) {
+
+ tst_res(TINFO, "File '%s' is not contiguous", filename);
+ contiguous = 0;
+ }
+
+ SAFE_CLOSE(fd);
+ free(fiemap);
+
+out:
+ return contiguous;
+}
+
/*
* Make a swap file
*/
@@ -105,10 +164,15 @@ int make_swapfile(const char *swapfile, int safe)
void is_swap_supported(const char *filename)
{
int i, sw_support = 0;
- int fibmap = tst_fibmap(filename);
+ int ret = make_swapfile(filename, 1);
+ int fi_contiguous = file_is_contiguous(filename);
long fs_type = tst_fs_type(filename);
const char *fstype = tst_fs_type_name(fs_type);
+ if (fs_type == TST_BTRFS_MAGIC &&
+ tst_kvercmp(5, 0, 0) < 0)
+ tst_brk(TCONF, "Swapfile on Btrfs (kernel < 5.0) not implemented");
+
for (i = 0; swap_supported_fs[i]; i++) {
if (strstr(fstype, swap_supported_fs[i])) {
sw_support = 1;
@@ -116,10 +180,8 @@ void is_swap_supported(const char *filename)
}
}
- int ret = make_swapfile(filename, 1);
-
if (ret != 0) {
- if (fibmap == 1 && sw_support == 0)
+ if (fi_contiguous == 0 && sw_support == 0)
tst_brk(TCONF, "mkswap on %s not supported", fstype);
else
tst_brk(TFAIL, "mkswap on %s failed", fstype);
@@ -129,7 +191,7 @@ void is_swap_supported(const char *filename)
if (TST_RET == -1) {
if (errno == EPERM)
tst_brk(TCONF, "Permission denied for swapon()");
- else if (fibmap == 1 && errno == EINVAL && sw_support == 0)
+ else if (errno == EINVAL && fi_contiguous == 0 && sw_support == 0)
tst_brk(TCONF, "Swapfile on %s not implemented", fstype);
else
tst_brk(TFAIL | TTERRNO, "swapon() on %s failed", fstype);
--
2.40.1
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [LTP] [PATCH V4 6/6] swapoff01: make use of make_swapfile
2024-01-24 4:45 [LTP] [PATCH V4 0/6] improvement work on libswap library Li Wang
` (4 preceding siblings ...)
2024-01-24 4:45 ` [LTP] [PATCH V4 5/6] libswap: Introduce file contiguity check Li Wang
@ 2024-01-24 4:45 ` Li Wang
2024-01-24 19:22 ` [LTP] [PATCH V4 0/6] improvement work on libswap library Petr Vorel
6 siblings, 0 replies; 16+ messages in thread
From: Li Wang @ 2024-01-24 4:45 UTC (permalink / raw)
To: ltp
This patch updates the swapoff01 test setup by replacing the previous
swapfile creation method with a single call to make_swapfile, which
now creates a contiguous swap file.
This change simplifies the setup and fix failure on TMPDIR on btrfs.
Note: it is a single fix but better applied with behind the libswap updates.
Suggested-by: Petr Vorel <pvorel@suse.cz>
Signed-off-by: Li Wang <liwang@redhat.com>
Reviewed-by: Petr Vorel <pvorel@suse.cz>
---
testcases/kernel/syscalls/swapoff/swapoff01.c | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/testcases/kernel/syscalls/swapoff/swapoff01.c b/testcases/kernel/syscalls/swapoff/swapoff01.c
index b27eecdad..f36f7f17c 100644
--- a/testcases/kernel/syscalls/swapoff/swapoff01.c
+++ b/testcases/kernel/syscalls/swapoff/swapoff01.c
@@ -44,11 +44,8 @@ static void setup(void)
tst_brk(TBROK,
"Insufficient disk space to create swap file");
- if (tst_fill_file("swapfile01", 0x00, 1024, 65536))
+ if (make_swapfile("swapfile01", 1))
tst_brk(TBROK, "Failed to create file for swap");
-
- if (system("mkswap swapfile01 > tmpfile 2>&1") != 0)
- tst_brk(TBROK, "Failed to make swapfile");
}
static struct tst_test test = {
--
2.40.1
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [LTP] [PATCH V4 5/6] libswap: Introduce file contiguity check
2024-01-24 4:45 ` [LTP] [PATCH V4 5/6] libswap: Introduce file contiguity check Li Wang
@ 2024-01-24 18:17 ` Petr Vorel
0 siblings, 0 replies; 16+ messages in thread
From: Petr Vorel @ 2024-01-24 18:17 UTC (permalink / raw)
To: Li Wang; +Cc: ltp
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
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [LTP] [PATCH V4 0/6] improvement work on libswap library
2024-01-24 4:45 [LTP] [PATCH V4 0/6] improvement work on libswap library Li Wang
` (5 preceding siblings ...)
2024-01-24 4:45 ` [LTP] [PATCH V4 6/6] swapoff01: make use of make_swapfile Li Wang
@ 2024-01-24 19:22 ` Petr Vorel
2024-01-25 10:23 ` Li Wang
6 siblings, 1 reply; 16+ messages in thread
From: Petr Vorel @ 2024-01-24 19:22 UTC (permalink / raw)
To: Li Wang; +Cc: ltp
Hi Li,
Reviewed-by: Petr Vorel <pvorel@suse.cz>
Tested-by: Petr Vorel <pvorel@suse.cz>
On Tumbleweed 6.6 and 6.7 kernel and various SLES versions starting with 4.12
and newer kernels.
thanks for your work, I guess we can merge it.
> V3-->V4
> * create a contiguous swapfile in swapoff01.c
> * fixing old-XFS requires initialize swapfile issue
> Todo:
> * replace the tst_brk with tst_res+return in is_support_swap
> * customisze swapfile size if needed
OK to postpone this. I like the extended support.
I also wonder if we should port after the release also swapon0[23].c
and even swapoff0[23].c to all_filesystems.
Kind regards,
Petr
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [LTP] [PATCH V4 0/6] improvement work on libswap library
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
0 siblings, 2 replies; 16+ messages in thread
From: Li Wang @ 2024-01-25 10:23 UTC (permalink / raw)
To: Cyril Hrubis; +Cc: ltp
On Thu, Jan 25, 2024 at 3:22 AM Petr Vorel <pvorel@suse.cz> wrote:
> Hi Li,
>
> Reviewed-by: Petr Vorel <pvorel@suse.cz>
>
> Tested-by: Petr Vorel <pvorel@suse.cz>
> On Tumbleweed 6.6 and 6.7 kernel and various SLES versions starting with
> 4.12
> and newer kernels.
>
> thanks for your work, I guess we can merge it.
>
Thanks for testing.
> > V3-->V4
> > * create a contiguous swapfile in swapoff01.c
> > * fixing old-XFS requires initialize swapfile issue
>
> > Todo:
> > * replace the tst_brk with tst_res+return in is_support_swap
> > * customisze swapfile size if needed
> OK to postpone this. I like the extended support.
>
> I also wonder if we should port after the release also swapon0[23].c
> and even swapoff0[23].c to all_filesystems.
>
Yes, I can do all of that after release.
@Cyril Hrubis <chrubis@suse.cz> Can I merge this patch set before release,
it's been getting tested by Petr and me across distributions.
--
Regards,
Li Wang
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [LTP] [PATCH V4 0/6] improvement work on libswap library
2024-01-25 10:23 ` Li Wang
@ 2024-01-26 8:26 ` Yang Xu (Fujitsu)
2024-01-26 10:05 ` Cyril Hrubis
1 sibling, 0 replies; 16+ messages in thread
From: Yang Xu (Fujitsu) @ 2024-01-26 8:26 UTC (permalink / raw)
To: Li Wang; +Cc: ltp@lists.linux.it
Hi Li,
> On Thu, Jan 25, 2024 at 3:22 AM Petr Vorel <pvorel@suse.cz> wrote:
>
>> Hi Li,
>>
>> Reviewed-by: Petr Vorel <pvorel@suse.cz>
>>
>> Tested-by: Petr Vorel <pvorel@suse.cz>
>> On Tumbleweed 6.6 and 6.7 kernel and various SLES versions starting with
>> 4.12
>> and newer kernels.
>>
>> thanks for your work, I guess we can merge it.
>>
>
> Thanks for testing.
>
>
>>> V3-->V4
>>> * create a contiguous swapfile in swapoff01.c
>>> * fixing old-XFS requires initialize swapfile issue
>>
>>> Todo:
>>> * replace the tst_brk with tst_res+return in is_support_swap
>>> * customisze swapfile size if needed
>> OK to postpone this. I like the extended support.
>>
>> I also wonder if we should port after the release also swapon0[23].c
>> and even swapoff0[23].c to all_filesystems.
>>
>
> Yes, I can do all of that after release.
>
> @Cyril Hrubis <chrubis@suse.cz> Can I merge this patch set before release,
> it's been getting tested by Petr and me across distributions.
>
>
I would be happy to see this patchset merged, so that my v3
max_swapfiles patchset can be sent based on the latest libswap.c.
Best Regards,
Yang Xu
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [LTP] [PATCH V4 0/6] improvement work on libswap library
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
1 sibling, 1 reply; 16+ messages in thread
From: Cyril Hrubis @ 2024-01-26 10:05 UTC (permalink / raw)
To: Li Wang; +Cc: ltp
Hi!
> Yes, I can do all of that after release.
>
> @Cyril Hrubis <chrubis@suse.cz> Can I merge this patch set before release,
> it's been getting tested by Petr and me across distributions.
I will have a look, however as we are getting close to the release date
I would say that the safe choice is to avoid bigger changes. I have bad
experiences with a last minute changes that caused unexpected failures
that were detected too late.
--
Cyril Hrubis
chrubis@suse.cz
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [LTP] [PATCH V4 0/6] improvement work on libswap library
2024-01-26 10:05 ` Cyril Hrubis
@ 2024-01-26 10:34 ` Li Wang
2024-01-26 10:39 ` Petr Vorel
0 siblings, 1 reply; 16+ messages in thread
From: Li Wang @ 2024-01-26 10:34 UTC (permalink / raw)
To: Cyril Hrubis; +Cc: ltp
Hi Cyril,
On Fri, Jan 26, 2024 at 6:05 PM Cyril Hrubis <chrubis@suse.cz> wrote:
> Hi!
> > Yes, I can do all of that after release.
> >
> > @Cyril Hrubis <chrubis@suse.cz> Can I merge this patch set before
> release,
> > it's been getting tested by Petr and me across distributions.
>
> I will have a look, however as we are getting close to the release date
> I would say that the safe choice is to avoid bigger changes. I have bad
> experiences with a last minute changes that caused unexpected failures
> that were detected too late.
>
Understand, I have confidence because it only impacts on
swapon01,swapoff01 and both get verified on various distros.
But you're right, I can wait until the new release.
--
Regards,
Li Wang
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [LTP] [PATCH V4 0/6] improvement work on libswap library
2024-01-26 10:34 ` Li Wang
@ 2024-01-26 10:39 ` Petr Vorel
2024-01-26 10:46 ` Cyril Hrubis
0 siblings, 1 reply; 16+ messages in thread
From: Petr Vorel @ 2024-01-26 10:39 UTC (permalink / raw)
To: Li Wang; +Cc: ltp
> Hi Cyril,
> On Fri, Jan 26, 2024 at 6:05 PM Cyril Hrubis <chrubis@suse.cz> wrote:
> > Hi!
> > > Yes, I can do all of that after release.
> > > @Cyril Hrubis <chrubis@suse.cz> Can I merge this patch set before
> > release,
> > > it's been getting tested by Petr and me across distributions.
> > I will have a look, however as we are getting close to the release date
> > I would say that the safe choice is to avoid bigger changes. I have bad
> > experiences with a last minute changes that caused unexpected failures
> > that were detected too late.
> Understand, I have confidence because it only impacts on
> swapon01,swapoff01 and both get verified on various distros.
> But you're right, I can wait until the new release.
ack. BTW do we tag on Monday?
Kind regards,
Petr
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [LTP] [PATCH V4 0/6] improvement work on libswap library
2024-01-26 10:39 ` Petr Vorel
@ 2024-01-26 10:46 ` Cyril Hrubis
2024-01-26 11:29 ` Petr Vorel
0 siblings, 1 reply; 16+ messages in thread
From: Cyril Hrubis @ 2024-01-26 10:46 UTC (permalink / raw)
To: Petr Vorel; +Cc: ltp
Hi!
> > But you're right, I can wait until the new release.
>
> ack. BTW do we tag on Monday?
I hope so, we stil have the splice07 to solve I suppose.
--
Cyril Hrubis
chrubis@suse.cz
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [LTP] [PATCH V4 0/6] improvement work on libswap library
2024-01-26 10:46 ` Cyril Hrubis
@ 2024-01-26 11:29 ` Petr Vorel
0 siblings, 0 replies; 16+ messages in thread
From: Petr Vorel @ 2024-01-26 11:29 UTC (permalink / raw)
To: Cyril Hrubis; +Cc: ltp
> Hi!
> > > But you're right, I can wait until the new release.
> > ack. BTW do we tag on Monday?
> I hope so, we stil have the splice07 to solve I suppose.
Yep, I'm waiting for Jan Kara to have a look, whether we can whitelist it or
not.
Kind regards,
Petr
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2024-01-26 11:30 UTC | newest]
Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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
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
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox