diff options
Diffstat (limited to 'include/sys')
-rw-r--r-- | include/sys/fs/zfs.h | 3 | ||||
-rw-r--r-- | include/sys/spa.h | 11 |
2 files changed, 13 insertions, 1 deletions
diff --git a/include/sys/fs/zfs.h b/include/sys/fs/zfs.h index 962698c2f..ba6487612 100644 --- a/include/sys/fs/zfs.h +++ b/include/sys/fs/zfs.h @@ -732,7 +732,8 @@ typedef enum vdev_aux { VDEV_AUX_IO_FAILURE, /* experienced I/O failure */ VDEV_AUX_BAD_LOG, /* cannot read log chain(s) */ VDEV_AUX_EXTERNAL, /* external diagnosis */ - VDEV_AUX_SPLIT_POOL /* vdev was split off into another pool */ + VDEV_AUX_SPLIT_POOL, /* vdev was split off into another pool */ + VDEV_AUX_BAD_ASHIFT /* vdev ashift is invalid */ } vdev_aux_t; /* diff --git a/include/sys/spa.h b/include/sys/spa.h index 0f05d04ad..b6e124faa 100644 --- a/include/sys/spa.h +++ b/include/sys/spa.h @@ -122,6 +122,17 @@ _NOTE(CONSTCOND) } while (0) #define SPA_MAXBLOCKSIZE (1ULL << SPA_MAXBLOCKSHIFT) /* + * Alignment Shift (ashift) is an immutable, internal top-level vdev property + * which can only be set at vdev creation time. Physical writes are always done + * according to it, which makes 2^ashift the smallest possible IO on a vdev. + * + * We currently allow values ranging from 512 bytes (2^9 = 512) to 8 KiB + * (2^13 = 8,192). + */ +#define ASHIFT_MIN 9 +#define ASHIFT_MAX 13 + +/* * Size of block to hold the configuration data (a packed nvlist) */ #define SPA_CONFIG_BLOCKSIZE (1ULL << 14) |