]> granicus.if.org Git - zfs/commitdiff
Limit maximum ashift value to 12
authorBrian Behlendorf <behlendorf1@llnl.gov>
Fri, 11 Nov 2011 22:50:15 +0000 (14:50 -0800)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Fri, 11 Nov 2011 22:50:48 +0000 (14:50 -0800)
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 <behlendorf1@llnl.gov>
Closes #425

lib/libzfs/libzfs_pool.c
module/zcommon/zpool_prop.c

index d95092d0e72198c11a6e7f6c9557d9d27892c606..9213101e4314a7b5fc3181c6513880c0843ac686 100644 (file)
@@ -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);
index 30a64d51a812cd909c94dc8be6b2d4c2ec3a212f..310598a6f5a0a34fda7ade8744490f9192d6d273 100644 (file)
@@ -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,