From: Karel Zak Date: Fri, 11 Jan 2019 09:44:14 +0000 (+0100) Subject: fstrim: check for read-only devices on -a/-A X-Git-Tag: v2.34-rc1~164 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fe7d63105d923d43c9f478acded0ac888463e456;p=thirdparty%2Futil-linux.git fstrim: check for read-only devices on -a/-A to avoid "FITRIM ioctl failed: Remote I/O error" Addresses: https://github.com/karelzak/util-linux/issues/738 Signed-off-by: Karel Zak --- diff --git a/sys-utils/fstrim.c b/sys-utils/fstrim.c index 105ee89e78..2d5c0b74ed 100644 --- a/sys-utils/fstrim.c +++ b/sys-utils/fstrim.c @@ -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;