fstrim: do not check that specified file is on a block device
authorDenys Vlasenko <vda.linux@googlemail.com>
Thu, 29 Mar 2018 14:00:30 +0000 (16:00 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Thu, 29 Mar 2018 14:05:10 +0000 (16:05 +0200)
Kernel will surely inform us in FITRIM does not make sense on a given file.

function                                             old     new   delta
fstrim_main                                          241     221     -20

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
util-linux/fstrim.c

index 205d1e42b8eaaa747fa8ad5479163c790d32a637..558a94a9e9b9855dd0544e57ba6021425942627e 100644 (file)
@@ -70,7 +70,9 @@ int fstrim_main(int argc UNUSED_PARAM, char **argv)
                ;
 #endif
 
-       opts = getopt32long(argv, "^" "o:l:m:v" "\0" "=1", fstrim_longopts,
+       opts = getopt32long(argv, "^"
+                       "o:l:m:v"
+                       "\0" "=1", fstrim_longopts,
                        &arg_o, &arg_l, &arg_m
        );
 
@@ -85,15 +87,21 @@ int fstrim_main(int argc UNUSED_PARAM, char **argv)
                range.minlen = xatoull_sfx(arg_m, kmg_i_suffixes);
 
        mp = argv[optind];
-       if (find_block_device(mp)) {
+//Wwhy bother checking that it's a blockdev?
+//     if (find_block_device(mp)) {
                fd = xopen_nonblocking(mp);
+
+               /* On ENOTTY error, util-linux 2.31 says:
+                * "fstrim: FILE: the discard operation is not supported"
+                */
                xioctl(fd, FITRIM, &range);
+
                if (ENABLE_FEATURE_CLEAN_UP)
                        close(fd);
 
                if (opts & OPT_v)
                        printf("%s: %llu bytes trimmed\n", mp, (unsigned long long)range.len);
                return EXIT_SUCCESS;
-       }
+//     }
        return EXIT_FAILURE;
 }