Debugging why fstrim doesn't work
Hi
All of my computers have a SSD for the root-filesystem. But on none fstrim works. I only get this:
$ fstrim -v / fstrim: /: discard operation not supported.
How can i debug why fstrim/the kernel thinks discard isn't supported?
All my root-filesystems are XFS.
kernel differs by computer, currently between 3.15.2 and 3.16.1 (Same self-compiled kernel on all machines)
util-linux is version 2.25 (Experimental Package from Debian SID)
The mount-output for the root-filesystem of one my compters looks like this:/dev/sda2 on / type xfs (rw,noatime,attr2,inode64,allocsize=64k,noquota)
I DO NOT use an initrd/initramfs, so the root-filesystem is still the original mount from the kernel itself (i case that matters)
Signature · 1 line
Matthias
Quoted 4 lines · Matthias Schniedermeyer
$ fstrim -v / fstrim: /: discard operation not supported.How can i debug why fstrim/the kernel thinks discard isn't supported?
$ strace -v fstrim -v / ... ioctl(3, FITRIM, 0x7fff4d693590) = -1 EOPNOTSUPP (Operation not supported) ...
Interestingly, fstrim's error message has changed from the more precise
fstrim: /: FITRIM ioctl failed: Operation not supported
(e.g. in 2.23.2) to a probably more user-friendly
fstrim: /: the discard operation is not supported
(in the current git version).
Have a nice day,
Berny
Quoted 13 lines · Bernhard Voelker
Quoted 4 lines · Matthias Schniedermeyer
$ fstrim -v / fstrim: /: discard operation not supported.How can i debug why fstrim/the kernel thinks discard isn't supported?
$ strace -v fstrim -v / ... ioctl(3, FITRIM, 0x7fff4d693590) = -1 EOPNOTSUPP (Operation not supported) ...Interestingly, fstrim's error message has changed from the more precise
Quoted 7 lines
fstrim: /: FITRIM ioctl failed: Operation not supported
(e.g. in 2.23.2) to a probably more user-friendly
fstrim: /: the discard operation is not supported
(in the current git version).
I don't get 'Operation not supported".
I get this error:open("/", O_RDONLY|O_LARGEFILE) = 3
fstat64(3, {st_dev=makedev(8, 2), st_ino=192, st_mode=S_IFDIR|0755, st_nlink=25, st_uid=0, st_gid=0, st_blksize=4096, st_blocks=8, st_size=4096, st_atime=2014/07/02-21:06:38, st_mtime=2014/07/19-23:54:25, st_ctime=2014/07/19-23:54:25}) = 0ioctl(3, FITRIM, 0xfffa6198) = -1 ENOTTY (Inappropriate ioctl for device)
close(3) = 0
Signature · 1 line
Matthias
Quoted 22 lines · Matthias Schniedermeyer
Quoted 13 lines · Bernhard Voelker
Quoted 4 lines · Matthias Schniedermeyer
$ fstrim -v / fstrim: /: discard operation not supported.How can i debug why fstrim/the kernel thinks discard isn't supported?
$ strace -v fstrim -v / ... ioctl(3, FITRIM, 0x7fff4d693590) = -1 EOPNOTSUPP (Operation not supported) ...Interestingly, fstrim's error message has changed from the more precise
Quoted 7 lines
fstrim: /: FITRIM ioctl failed: Operation not supported
(e.g. in 2.23.2) to a probably more user-friendly
fstrim: /: the discard operation is not supported
(in the current git version).
Quoted 7 lines
I don't get 'Operation not supported".
I get this error:
open("/", O_RDONLY|O_LARGEFILE)= 3
fstat64(3, {st_dev=makedev(8, 2), st_ino=192, st_mode=S_IFDIR|0755, st_nlink=25, st_uid=0, st_gid=0, st_blksize=4096, st_blocks=8, st_size=4096, st_atime=2014/07/02-21:06:38, st_mtime=2014/07/19-23:54:25, st_ctime=2014/07/19-23:54:25}) = 0ioctl(3, FITRIM, 0xfffa6198)= -1 ENOTTY (Inappropriate ioctl for device)
close(3) = 0
And the answer is:
32bit userspace and 64bit kernels don't mix (in this case).
I've tested the 64bit version of fstrim and it worked.
Signature · 1 line
Matthias