xfs
[Top] [All Lists]

[PATCH v2] xfstests: add _require_seek_data_hole to check seek data/hole

To: xfs@xxxxxxxxxxx
Subject: [PATCH v2] xfstests: add _require_seek_data_hole to check seek data/hole
From: Zheng Liu <gnehzuil.liu@xxxxxxxxx>
Date: Sun, 12 May 2013 17:24:30 +0800
Cc: Zheng Liu <wenqing.lz@xxxxxxxxxx>, Rich Johnston <rjohnston@xxxxxxx>
Delivered-to: xfs@xxxxxxxxxxx
Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=x-received:from:to:cc:subject:date:message-id:x-mailer; bh=qBxHTfoBIEExN/PwTjWj0I3cUbW1H6JS/qqWAnXTYqg=; b=C7yuTj1aIe+nv55q5ndI1zspfC+2lYGyIEGADb7HPoomahQ8hsZ9lTJDazHskjKAm5 bfqs9gju61/BBStZVf5HhQXy8NUincdKUt172IoXePFnAm2L7zCAPNjCP1upzuDL0GL2 ft+/u5iPTuxp2wU46PV/VozcJ9FDn8pTXnKd/lA59c7EVSF+uvu1cdP0N6o3KAykwo8w 630CgI48+q51kun334SmvyN2R/gFfhX4NjLL54IppqPVTRTAqoeYXdb+zyWSHnCkVFPE j1/PyaSLyrARj6C1peh9B1w3Z96NtIY7GnmjojOseyyCaxnaTc1DZ2Zrnw/Kfd6bidUq FiqA==
From: Zheng Liu <wenqing.lz@xxxxxxxxxx>

In xfstest 285/286 we don't check whether the target file system
supports seek data/hole operation or not.  Here _require_seek_data_hole
is defined to do this work.

Signed-off-by: Zheng Liu <wenqing.lz@xxxxxxxxxx>
Cc: Rich Johnston <rjohnston@xxxxxxx>
---
changelog:
 * rebase against the latest master branch of xfstests tree

Hi Rich,

Sorry for the late.  Could you please look at this patch?

Thanks,
                                                - Zheng

 common/rc              | 12 ++++++++++++
 src/seek_sanity_test.c | 18 ++++++++++++++++--
 tests/generic/285      |  2 ++
 tests/generic/286      |  2 ++
 4 files changed, 32 insertions(+), 2 deletions(-)

diff --git a/common/rc b/common/rc
index f97924a..f24a6aa 100644
--- a/common/rc
+++ b/common/rc
@@ -1283,6 +1283,18 @@ _require_fail_make_request()
  not found. Seems that CONFIG_FAIL_MAKE_REQUEST kernel config option not 
enabled"
 }
 
+#
+# Check if the file system supports seek_data/hole
+#
+_require_seek_data_hole()
+{
+    testfile=$TEST_DIR/$$.seek
+    testseek=`$here/src/seek_sanity_test -t $testfile 2>&1`
+    rm -f $testfile &>/dev/null
+    echo $testseek | grep -q "Kernel does not support" && \
+        _notrun "File system does not support llseek(2) SEEK_DATA/HOLE"
+}
+
 # check that a FS on a device is mounted
 # if so, return mount point
 #
diff --git a/src/seek_sanity_test.c b/src/seek_sanity_test.c
index 3897f02..4275a84 100644
--- a/src/seek_sanity_test.c
+++ b/src/seek_sanity_test.c
@@ -660,6 +660,8 @@ int main(int argc, char **argv)
 {
        int ret = -1;
        int i = 0;
+       int opt;
+       int check_support = 0;
        int numtests = sizeof(seek_tests) / sizeof(struct testrec);
 
        if (argc != 2) {
@@ -667,10 +669,22 @@ int main(int argc, char **argv)
                return ret;
        }
 
-       base_file_path = (char *)strdup(argv[1]);
+       while ((opt = getopt(argc, argv, "t")) != -1) {
+               switch (opt) {
+               case 't':
+                       check_support++;
+                       break;
+               default:
+                       fprintf(stderr, "Usage: %s [-t] base_file_path\n",
+                               argv[0]);
+                       return ret;
+               }
+       }
+
+       base_file_path = (char *)strdup(argv[optind]);
 
        ret = test_basic_support();
-       if (ret)
+       if (ret || check_support)
                goto out;
 
        for (i = 0; i < numtests; ++i) {
diff --git a/tests/generic/285 b/tests/generic/285
index 22b4a08..b700a15 100644
--- a/tests/generic/285
+++ b/tests/generic/285
@@ -40,6 +40,8 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
 _supported_fs generic
 _supported_os Linux
 
+_require_seek_data_hole
+
 BASE_TEST_FILE=$TEST_DIR/seek_sanity_testfile
 
 [ -x $here/src/seek_sanity_test ] || _notrun "seek_sanitfy_tester not built"
diff --git a/tests/generic/286 b/tests/generic/286
index a0d4df9..5ab174f 100644
--- a/tests/generic/286
+++ b/tests/generic/286
@@ -38,6 +38,8 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
 _supported_fs generic
 _supported_os Linux
 
+_require_seek_data_hole
+
 src=$TEST_DIR/seek_copy_testfile
 dest=$TEST_DIR/seek_copy_testfile.dest
 
-- 
1.7.12.rc2.18.g61b472e

<Prev in Thread] Current Thread [Next in Thread>