Loading drivers/block/rbd.c +42 −1 Original line number Diff line number Diff line Loading @@ -836,6 +836,7 @@ enum { Opt_lock_timeout, /* int args above */ Opt_pool_ns, Opt_compression_hint, /* string args above */ Opt_read_only, Opt_read_write, Loading @@ -844,8 +845,23 @@ enum { Opt_notrim, }; enum { Opt_compression_hint_none, Opt_compression_hint_compressible, Opt_compression_hint_incompressible, }; static const struct constant_table rbd_param_compression_hint[] = { {"none", Opt_compression_hint_none}, {"compressible", Opt_compression_hint_compressible}, {"incompressible", Opt_compression_hint_incompressible}, {} }; static const struct fs_parameter_spec rbd_parameters[] = { fsparam_u32 ("alloc_size", Opt_alloc_size), fsparam_enum ("compression_hint", Opt_compression_hint, rbd_param_compression_hint), fsparam_flag ("exclusive", Opt_exclusive), fsparam_flag ("lock_on_read", Opt_lock_on_read), fsparam_u32 ("lock_timeout", Opt_lock_timeout), Loading @@ -867,6 +883,8 @@ struct rbd_options { bool lock_on_read; bool exclusive; bool trim; u32 alloc_hint_flags; /* CEPH_OSD_OP_ALLOC_HINT_FLAG_* */ }; #define RBD_QUEUE_DEPTH_DEFAULT BLKDEV_MAX_RQ Loading Loading @@ -2254,7 +2272,7 @@ static void __rbd_osd_setup_write_ops(struct ceph_osd_request *osd_req, osd_req_op_alloc_hint_init(osd_req, which++, rbd_dev->layout.object_size, rbd_dev->layout.object_size, 0); rbd_dev->opts->alloc_hint_flags); } if (rbd_obj_is_entire(obj_req)) Loading Loading @@ -6332,6 +6350,29 @@ static int rbd_parse_param(struct fs_parameter *param, pctx->spec->pool_ns = param->string; param->string = NULL; break; case Opt_compression_hint: switch (result.uint_32) { case Opt_compression_hint_none: opt->alloc_hint_flags &= ~(CEPH_OSD_ALLOC_HINT_FLAG_COMPRESSIBLE | CEPH_OSD_ALLOC_HINT_FLAG_INCOMPRESSIBLE); break; case Opt_compression_hint_compressible: opt->alloc_hint_flags |= CEPH_OSD_ALLOC_HINT_FLAG_COMPRESSIBLE; opt->alloc_hint_flags &= ~CEPH_OSD_ALLOC_HINT_FLAG_INCOMPRESSIBLE; break; case Opt_compression_hint_incompressible: opt->alloc_hint_flags |= CEPH_OSD_ALLOC_HINT_FLAG_INCOMPRESSIBLE; opt->alloc_hint_flags &= ~CEPH_OSD_ALLOC_HINT_FLAG_COMPRESSIBLE; break; default: BUG(); } break; case Opt_read_only: opt->read_only = true; break; Loading Loading
drivers/block/rbd.c +42 −1 Original line number Diff line number Diff line Loading @@ -836,6 +836,7 @@ enum { Opt_lock_timeout, /* int args above */ Opt_pool_ns, Opt_compression_hint, /* string args above */ Opt_read_only, Opt_read_write, Loading @@ -844,8 +845,23 @@ enum { Opt_notrim, }; enum { Opt_compression_hint_none, Opt_compression_hint_compressible, Opt_compression_hint_incompressible, }; static const struct constant_table rbd_param_compression_hint[] = { {"none", Opt_compression_hint_none}, {"compressible", Opt_compression_hint_compressible}, {"incompressible", Opt_compression_hint_incompressible}, {} }; static const struct fs_parameter_spec rbd_parameters[] = { fsparam_u32 ("alloc_size", Opt_alloc_size), fsparam_enum ("compression_hint", Opt_compression_hint, rbd_param_compression_hint), fsparam_flag ("exclusive", Opt_exclusive), fsparam_flag ("lock_on_read", Opt_lock_on_read), fsparam_u32 ("lock_timeout", Opt_lock_timeout), Loading @@ -867,6 +883,8 @@ struct rbd_options { bool lock_on_read; bool exclusive; bool trim; u32 alloc_hint_flags; /* CEPH_OSD_OP_ALLOC_HINT_FLAG_* */ }; #define RBD_QUEUE_DEPTH_DEFAULT BLKDEV_MAX_RQ Loading Loading @@ -2254,7 +2272,7 @@ static void __rbd_osd_setup_write_ops(struct ceph_osd_request *osd_req, osd_req_op_alloc_hint_init(osd_req, which++, rbd_dev->layout.object_size, rbd_dev->layout.object_size, 0); rbd_dev->opts->alloc_hint_flags); } if (rbd_obj_is_entire(obj_req)) Loading Loading @@ -6332,6 +6350,29 @@ static int rbd_parse_param(struct fs_parameter *param, pctx->spec->pool_ns = param->string; param->string = NULL; break; case Opt_compression_hint: switch (result.uint_32) { case Opt_compression_hint_none: opt->alloc_hint_flags &= ~(CEPH_OSD_ALLOC_HINT_FLAG_COMPRESSIBLE | CEPH_OSD_ALLOC_HINT_FLAG_INCOMPRESSIBLE); break; case Opt_compression_hint_compressible: opt->alloc_hint_flags |= CEPH_OSD_ALLOC_HINT_FLAG_COMPRESSIBLE; opt->alloc_hint_flags &= ~CEPH_OSD_ALLOC_HINT_FLAG_INCOMPRESSIBLE; break; case Opt_compression_hint_incompressible: opt->alloc_hint_flags |= CEPH_OSD_ALLOC_HINT_FLAG_INCOMPRESSIBLE; opt->alloc_hint_flags &= ~CEPH_OSD_ALLOC_HINT_FLAG_COMPRESSIBLE; break; default: BUG(); } break; case Opt_read_only: opt->read_only = true; break; Loading