]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
findmnt: (verify) add swaparea verification
authorKarel Zak <kzak@redhat.com>
Wed, 21 Sep 2016 13:08:24 +0000 (15:08 +0200)
committerKarel Zak <kzak@redhat.com>
Fri, 23 Sep 2016 11:21:02 +0000 (13:21 +0200)
Signed-off-by: Karel Zak <kzak@redhat.com>
misc-utils/findmnt-verify.c

index 52bf8518b1cb3ec836aad19136d769d14ddb1179..1cdd9697b632710c9cdfbc8533bc0561d08b18ff 100644 (file)
@@ -235,17 +235,45 @@ static int verify_options(struct verify_context *vfy)
        return 0;
 }
 
+static int verify_swaparea(struct verify_context *vfy)
+{
+       char *arg;
+       size_t argsz = 0;
+
+       if (mnt_fs_get_option(vfy->fs, "discard", &arg, &argsz) == 0
+           && arg
+           && strncmp(arg, "once", argsz) != 0
+           && strncmp(arg, "pages", argsz) != 0)
+               verify_err(vfy, _("unsupported swaparea discard policy: %s"), arg);
+
+       if (mnt_fs_get_option(vfy->fs, "pri", &arg, &argsz) == 0 && arg) {
+               char *p = arg;
+               if (*p == '-')
+                       p++;
+               for (; p < arg + argsz; p++) {
+                       if (!isdigit((unsigned char) *p)) {
+                               verify_err(vfy, _("failed to parse swaparea priority option"));
+                               break;
+                       }
+               }
+       }
+
+       return 0;
+}
+
 static int verify_filesystem(struct verify_context *vfy)
 {
        int rc = 0;
 
-       if (!mnt_fs_is_swaparea(vfy->fs)) {
+       if (mnt_fs_is_swaparea(vfy->fs))
+               rc = verify_swaparea(vfy);
+       else {
                rc = verify_target(vfy);
                if (!rc)
                        rc = verify_options(vfy);
        }
        if (!rc)
-               verify_source(vfy);
+               rc = verify_source(vfy);
 
        return rc;
 }