HomeFreeBSD

bdev_discard_supported: understand discard_granularity=0

Description

bdev_discard_supported: understand discard_granularity=0

Kernel documentation for the discard_granularity property says:

A discard_granularity of 0 means that the device does not support
discard functionality.

Some older kernels had drivers (notably loop, but also some USB-SATA
adapters) that would set the QUEUE_FLAG_DISCARD capability flag, but
have discard_granularity=0. Since 5.10 (torvalds/linux@b35fd7422c2f) the
discard entry point blkdev_issue_discard() has had a check for this,
which would immediately reject the call with EOPNOTSUPP, and throw a
scary diagnostic message into the log. See #16068.

Since 6.8, the block layer sets a non-zero default for
discard_granularity (torvalds/linux@3c407dc723bb), and a future kernel
will remove the check entirely[1].

As such, there's no good reason for us to enable discard when
discard_granularity=0. The kernel will never let the request go in
anyway; better that we just disable it so we can report it properly to
the user.

  1. https://patchwork.kernel.org/project/linux-block/patch/20240312144826.1045212-2-hch@lst.de/

Sponsored-by: Klara, Inc.
Sponsored-by: Wasabi Technology, Inc.
Signed-off-by: Rob Norris <rob.norris@klarasystems.com>
(cherry picked from commit b181b2e604de3f36feab1092c702cdec5e78c693)

Details

Provenance
rob.norris_klarasystems.comAuthored on Apr 12 2024, 4:00 PM
Brian Behlendorf <behlendorf1@llnl.gov>Committed on Apr 19 2024, 5:19 PM
Parents
rG575872cc37a7: L2ARC: Relax locking during write
Branches
Unknown
Tags
Unknown