diff --git a/daemon/fstrim.c b/daemon/fstrim.c index 1ad3630b0..527acfd48 100644 --- a/daemon/fstrim.c +++ b/daemon/fstrim.c @@ -105,7 +105,13 @@ do_fstrim (const char *path, r = commandv (&out, &err, argv); if (r == -1) { - reply_with_error ("%s", err); + /* If the error is about the kernel operation not being supported + * for this filesystem type, then return errno ENOTSUP here. + */ + if (strstr (err, "discard operation is not supported")) + reply_with_error_errno (ENOTSUP, "%s", err); + else + reply_with_error ("%s", err); return -1; } diff --git a/generator/actions.ml b/generator/actions.ml index 954b86076..eccef00a4 100644 --- a/generator/actions.ml +++ b/generator/actions.ml @@ -10851,6 +10851,10 @@ filesystem, the host filesystem, qemu and the host kernel. If this support isn't present it may give an error or even appear to run but do nothing. +In the case where the kernel vfs driver does not support +trimming, this call will fail with errno set to C. +Currently this happens when trying to trim FAT filesystems. + See also C. That is a slightly different operation that turns free space in the filesystem into zeroes. It is valid to call C either