HomeFreeBSD

dnode: allow storage class to be overridden by object type

Description

dnode: allow storage class to be overridden by object type

spa_preferred_class() selects a storage class based on (among other
things) the DMU object type. This only works for old-style object types
that match only one specific kind of thing. For DMU_OTN_ types we need
another way to signal the storage class.

This commit allows the object type to be overridden in the IO policy for
the purposes of choosing a storage class. It then adds the ability to
set the storage type on a dnode hold, such that all writes generated
under that hold will get it.

This method has two shortcomings:

  • it would be better if we could "name" a set of storage class preferences rather than it being implied by the object type.
  • it would be better if this info were stored in the dnode on disk.

In the absence of those things, this seems like the smallest possible
change.

Reviewed-by: Alexander Motin <mav@FreeBSD.org>
Reviewed-by: Tony Hutter <hutter2@llnl.gov>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Rob Norris <rob.norris@klarasystems.com>
Sponsored-by: Klara, Inc.
Sponsored-by: iXsystems, Inc.
Closes #15894

Details

Provenance
rob.norris_klarasystems.comAuthored on Jun 27 2023, 2:50 AM
Brian Behlendorf <behlendorf1@llnl.gov>Committed on Jul 30 2024, 12:05 AM
Parents
rGe26b3771ee43: spa_preferred_class: pass the entire zio
Branches
Unknown
Tags
Unknown