Skip to contentSkip to conversation

Debugging why fstrim doesn't work

DISCUSSION Matthias Schniedermeyer 2 participants 4 messages Aug 29, 2014 – Sep 1, 2014 Util-Linux package

lore
Share & tools
lore
#0 lore raw

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
#1 lore raw
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

#2 lore raw
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}) = 0
ioctl(3, FITRIM, 0xfffa6198) = -1 ENOTTY (Inappropriate ioctl for device)
close(3) = 0

Signature · 1 line
Matthias
#3 lore raw
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}) = 0
ioctl(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