Skip to content

Commit

Permalink
Limit maximum ashift value to 12
Browse files Browse the repository at this point in the history
While we initially allowed you to set your ashift as large as 17
(SPA_MAXBLOCKSIZE) that is actually unsafe.  What wasn't considered
at the time is that each uberblock written to the vdev label ring
buffer will be of this size.  Now the buffer is statically sized
to 128k and we need to be able to fit several uberblocks in it.
With a large ashift that becomes a problem.

Therefore I'm reducing the maximum configurable ashift value to 12.
This is large enough for the 4k sector drives and small enough that
we can still keep the most recent 32 uberblock in the vdev label
ring buffer.

Signed-off-by: Brian Behlendorf <[email protected]>
Closes openzfs#425
  • Loading branch information
behlendorf committed Nov 11, 2011
1 parent 09559cd commit ca5fd24
Show file tree
Hide file tree
Showing 2 changed files with 2 additions and 2 deletions.
2 changes: 1 addition & 1 deletion lib/libzfs/libzfs_pool.c
Original file line number Diff line number Diff line change
Expand Up @@ -443,7 +443,7 @@ zpool_valid_proplist(libzfs_handle_t *hdl, const char *poolname,
goto error;
}

if (intval != 0 && (intval < 9 || intval > 17)) {
if (intval != 0 && (intval < 9 || intval > 12)) {
zfs_error_aux(hdl, dgettext(TEXT_DOMAIN,
"property '%s' number %d is invalid."),
propname, intval);
Expand Down
2 changes: 1 addition & 1 deletion module/zcommon/zpool_prop.c
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ zpool_prop_init(void)

/* readonly onetime number properties */
zprop_register_number(ZPOOL_PROP_ASHIFT, "ashift", 0, PROP_ONETIME,
ZFS_TYPE_POOL, "<ashift, 9-17, or 0=default>", "ASHIFT");
ZFS_TYPE_POOL, "<ashift, 9-12, or 0=default>", "ASHIFT");

/* default number properties */
zprop_register_number(ZPOOL_PROP_VERSION, "version", SPA_VERSION,
Expand Down

0 comments on commit ca5fd24

Please sign in to comment.