]> git.apps.os.sepia.ceph.com Git - xfstests-dev.git/commitdiff
xfstests: fix seek_sanity_test for fs w/o fallocate
authorEric Sandeen <sandeen@redhat.com>
Mon, 3 Jun 2013 12:28:17 +0000 (07:28 -0500)
committerRich Johnston <rjohnston@sgi.com>
Mon, 3 Jun 2013 12:28:17 +0000 (07:28 -0500)
currently the seek_sanity_test (generic/285) fails on ext3
or ext2 due to fallocate() failures.  Just ignore that test
if the fs doesn't support fallocate.

Note: this patch was originally submitted by Zheng Liu.
http://oss.sgi.com/archives/xfs/2013-05/msg00534.html

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Zheng Liu <gnehzuil.liu@gmail.com>
Signed-off-by: Rich Johnston <rjohnston@sgi.com>
src/seek_sanity_test.c

index 748eec2284440dbc6538897a06b863ce67b66bfd..fc74e6885d590b151822137ea9dca36d33565cfe 100644 (file)
@@ -95,9 +95,13 @@ static int do_fallocate(int fd, off_t offset, off_t length, int mode)
        int ret;
 
        ret = fallocate(fd, mode, offset, length);
-       if (ret)
+       if (ret) {
+               /* Don't warn about a filesystem w/o fallocate support */
+               if (errno == EOPNOTSUPP)
+                       return ret;
                fprintf(stderr, "  ERROR %d: Failed to preallocate "
                        "space to %ld bytes\n", errno, (long) length);
+       }
 
        return ret;
 }
@@ -215,8 +219,14 @@ static int test09(int fd, int testnum)
 
        /* preallocate 8M space to file */
        ret = do_fallocate(fd, 0, filsz, 0);
-       if (ret < 0)
+       if (ret < 0) {
+               /* Report success if fs doesn't support fallocate */
+               if (errno == EOPNOTSUPP) {
+                       fprintf(stdout, "Test skipped as fs doesn't support fallocate.\n");
+                       ret = 0;
+               }
                goto out;
+       }
 
        ret = do_pwrite(fd, buf, bufsz, bufsz * 10);
        if (!ret) {
@@ -261,8 +271,14 @@ static int test08(int fd, int testnum)
 
        /* preallocate 4M space to file */
        ret = do_fallocate(fd, 0, filsz, 0);
-       if (ret < 0)
+       if (ret < 0) {
+               /* Report success if fs doesn't support fallocate */
+               if (errno == EOPNOTSUPP) {
+                       fprintf(stdout, "Test skipped as fs doesn't support fallocate.\n");
+                       ret = 0;
+               }
                goto out;
+       }
 
        ret = do_pwrite(fd, buf, bufsz, bufsz * 10);
        if (ret)
@@ -304,8 +320,14 @@ static int test07(int fd, int testnum)
 
        /* preallocate 4M space to file */
        ret = do_fallocate(fd, 0, filsz, 0);
-       if (ret < 0)
+       if (ret < 0) {
+               /* Report success if fs doesn't support fallocate */
+               if (errno == EOPNOTSUPP) {
+                       fprintf(stdout, "Test skipped as fs doesn't support fallocate.\n");
+                       ret = 0;
+               }
                goto out;
+       }
 
        ret = do_pwrite(fd, buf, bufsz, bufsz * 10);
        if (ret)