fstrim: do not check that specified file is on a block device

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>
This commit is contained in:
Denys Vlasenko 2018-03-29 16:00:30 +02:00
parent d1b845706d
commit 3be4b9b0de

View File

@ -70,7 +70,9 @@ int fstrim_main(int argc UNUSED_PARAM, char **argv)
; ;
#endif #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 &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); range.minlen = xatoull_sfx(arg_m, kmg_i_suffixes);
mp = argv[optind]; 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); fd = xopen_nonblocking(mp);
/* On ENOTTY error, util-linux 2.31 says:
* "fstrim: FILE: the discard operation is not supported"
*/
xioctl(fd, FITRIM, &range); xioctl(fd, FITRIM, &range);
if (ENABLE_FEATURE_CLEAN_UP) if (ENABLE_FEATURE_CLEAN_UP)
close(fd); close(fd);
if (opts & OPT_v) if (opts & OPT_v)
printf("%s: %llu bytes trimmed\n", mp, (unsigned long long)range.len); printf("%s: %llu bytes trimmed\n", mp, (unsigned long long)range.len);
return EXIT_SUCCESS; return EXIT_SUCCESS;
} // }
return EXIT_FAILURE; return EXIT_FAILURE;
} }