From fe7d63105d923d43c9f478acded0ac888463e456 Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Fri, 11 Jan 2019 10:44:14 +0100 Subject: 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 --- sys-utils/fstrim.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'sys-utils/fstrim.c') diff --git a/sys-utils/fstrim.c b/sys-utils/fstrim.c index 105ee89e7..2d5c0b74e 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; -- cgit v1.2.3-55-g7522