]> www.infradead.org Git - users/hch/xfstests-dev.git/commitdiff
fsstress: add support for FALLOC_FL_UNSHARE_RANGE
authorDarrick J. Wong <djwong@kernel.org>
Thu, 10 Oct 2024 10:07:38 +0000 (18:07 +0800)
committerZorro Lang <zlang@kernel.org>
Sat, 12 Oct 2024 14:06:30 +0000 (22:06 +0800)
Teach fsstress to try to unshare file blocks on filesystems, seeing how
the recent addition to fsx has uncovered a lot of bugs.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Zorro Lang <zlang@redhat.com>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
ltp/fsstress.c

index 3749da0e9acd66e489d34ba85537272a5d4622ae..3d248ee257915335051ea15012c99de135c99f29 100644 (file)
@@ -139,6 +139,7 @@ typedef enum {
        OP_TRUNCATE,
        OP_UNLINK,
        OP_UNRESVSP,
+       OP_UNSHARE,
        OP_URING_READ,
        OP_URING_WRITE,
        OP_WRITE,
@@ -246,6 +247,7 @@ void        punch_f(opnum_t, long);
 void   zero_f(opnum_t, long);
 void   collapse_f(opnum_t, long);
 void   insert_f(opnum_t, long);
+void   unshare_f(opnum_t, long);
 void   read_f(opnum_t, long);
 void   readlink_f(opnum_t, long);
 void   readv_f(opnum_t, long);
@@ -339,6 +341,7 @@ struct opdesc       ops[OP_LAST]    = {
        [OP_TRUNCATE]      = {"truncate",      truncate_f,      2, 1 },
        [OP_UNLINK]        = {"unlink",        unlink_f,        1, 1 },
        [OP_UNRESVSP]      = {"unresvsp",      unresvsp_f,      1, 1 },
+       [OP_UNSHARE]       = {"unshare",       unshare_f,       1, 1 },
        [OP_URING_READ]    = {"uring_read",    uring_read_f,    1, 0 },
        [OP_URING_WRITE]   = {"uring_write",   uring_write_f,   1, 1 },
        [OP_WRITE]         = {"write",         write_f,         4, 1 },
@@ -3756,6 +3759,7 @@ struct print_flags falloc_flags [] = {
        { FALLOC_FL_COLLAPSE_RANGE, "COLLAPSE_RANGE"},
        { FALLOC_FL_ZERO_RANGE, "ZERO_RANGE"},
        { FALLOC_FL_INSERT_RANGE, "INSERT_RANGE"},
+       { FALLOC_FL_UNSHARE_RANGE, "UNSHARE_RANGE"},
        { -1, NULL}
 };
 
@@ -4458,6 +4462,16 @@ insert_f(opnum_t opno, long r)
 #endif
 }
 
+void
+unshare_f(opnum_t opno, long r)
+{
+#ifdef HAVE_LINUX_FALLOC_H
+# ifdef FALLOC_FL_UNSHARE_RANGE
+       do_fallocate(opno, r, FALLOC_FL_UNSHARE_RANGE);
+# endif
+#endif
+}
+
 void
 read_f(opnum_t opno, long r)
 {