]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rbd: recognize alloc_size map option
authorIlya Dryomov <idryomov@gmail.com>
Thu, 31 Jan 2019 15:59:11 +0000 (16:59 +0100)
committerIlya Dryomov <idryomov@gmail.com>
Fri, 1 Feb 2019 16:59:38 +0000 (17:59 +0100)
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
doc/man/8/rbd.rst
src/tools/rbd/action/Kernel.cc

index b8fd324804c9bb4f6eb3e420c51cac3d5f4b5fdb..928dda028e558c70478ee43f3304f5bd4233780a 100644 (file)
@@ -751,6 +751,13 @@ Per mapping (block device) `rbd device map` options:
   the data pool reaches its quota (since 5.0).  The default behaviour is to
   block until the full condition is cleared.
 
+* alloc_size - Minimum allocation unit of the underlying OSD object store
+  backend (since 5.1, default is 64K bytes).  This is used to round off and
+  drop discards that are too small.  For bluestore, the recommended setting is
+  bluestore_min_alloc_size (typically 64K for hard disk drives and 16K for
+  solid-state drives).  For filestore with filestore_punch_hole = false, the
+  recommended setting is image object size (typically 4M).
+
 `rbd device unmap` options:
 
 * force - Force the unmapping of a block device that is open (since 4.9).  The
index f3e18f96a203f8126502ddf8af0b6b2629515807..3ebb5bc1de40b4e3bdae235640b81f607efc59f8 100644 (file)
@@ -150,6 +150,9 @@ static int parse_map_options(const std::string &options_string)
       put_map_option("notrim", this_char);
     } else if (!strcmp(this_char, "abort_on_full")) {
       put_map_option("abort_on_full", this_char);
+    } else if (!strcmp(this_char, "alloc_size")) {
+      if (put_map_option_value("alloc_size", value_char, map_option_int_cb))
+        return -EINVAL;
     } else {
       std::cerr << "rbd: unknown map option '" << this_char << "'" << std::endl;
       return -EINVAL;