]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
fstrim: check for read-only devices on -a/-A
authorKarel Zak <kzak@redhat.com>
Fri, 11 Jan 2019 09:44:14 +0000 (10:44 +0100)
committerKarel Zak <kzak@redhat.com>
Fri, 11 Jan 2019 09:44:14 +0000 (10:44 +0100)
 to avoid "FITRIM ioctl failed: Remote I/O error"

Addresses: https://github.com/karelzak/util-linux/issues/738
Signed-off-by: Karel Zak <kzak@redhat.com>
sys-utils/fstrim.c

index 105ee89e789d7fa4d9353b678485e976479935b1..2d5c0b74ed9d6e7ceabd22b6f27541d2ff746ab1 100644 (file)
@@ -137,7 +137,7 @@ static int has_discard(const char *devname, struct path_cxt **wholedisk)
        struct path_cxt *pc = NULL;
        uint64_t dg = 0;
        dev_t disk = 0, dev;
-       int rc = -1;
+       int rc = -1, rdonly = 0;
 
        dev = sysfs_devname_to_devno(devname);
        if (!dev)
@@ -175,9 +175,11 @@ static int has_discard(const char *devname, struct path_cxt **wholedisk)
        }
 
        rc = ul_path_read_u64(pc, &dg, "queue/discard_granularity");
+       if (!rc)
+               ul_path_scanf(pc, "ro", "%d", &rdonly);
 
        ul_unref_path(pc);
-       return rc == 0 && dg > 0;
+       return rc == 0 && dg > 0 && rdonly == 0;
 fail:
        ul_unref_path(pc);
        return 1;