rbd.c (754451342fc5954061ede74b0a8485ec4a4c6eaa) rbd.c (5657a819a8d94426c76be04dcedfad0f64cfff00)
1
2/*
3 rbd.c -- Export ceph rados objects as a Linux block device
4
5
6 based on drivers/block/osdblk.c:
7
8 Copyright 2009 Red Hat, Inc.

--- 410 unchanged lines hidden (view full) ---

419static DEFINE_IDA(rbd_dev_id_ida);
420
421static struct workqueue_struct *rbd_wq;
422
423/*
424 * single-major requires >= 0.75 version of userspace rbd utility.
425 */
426static bool single_major = true;
1
2/*
3 rbd.c -- Export ceph rados objects as a Linux block device
4
5
6 based on drivers/block/osdblk.c:
7
8 Copyright 2009 Red Hat, Inc.

--- 410 unchanged lines hidden (view full) ---

419static DEFINE_IDA(rbd_dev_id_ida);
420
421static struct workqueue_struct *rbd_wq;
422
423/*
424 * single-major requires >= 0.75 version of userspace rbd utility.
425 */
426static bool single_major = true;
427module_param(single_major, bool, S_IRUGO);
427module_param(single_major, bool, 0444);
428MODULE_PARM_DESC(single_major, "Use a single major number for all rbd devices (default: true)");
429
430static ssize_t rbd_add(struct bus_type *bus, const char *buf,
431 size_t count);
432static ssize_t rbd_remove(struct bus_type *bus, const char *buf,
433 size_t count);
434static ssize_t rbd_add_single_major(struct bus_type *bus, const char *buf,
435 size_t count);

--- 27 unchanged lines hidden (view full) ---

463 return is_lock_owner;
464}
465
466static ssize_t rbd_supported_features_show(struct bus_type *bus, char *buf)
467{
468 return sprintf(buf, "0x%llx\n", RBD_FEATURES_SUPPORTED);
469}
470
428MODULE_PARM_DESC(single_major, "Use a single major number for all rbd devices (default: true)");
429
430static ssize_t rbd_add(struct bus_type *bus, const char *buf,
431 size_t count);
432static ssize_t rbd_remove(struct bus_type *bus, const char *buf,
433 size_t count);
434static ssize_t rbd_add_single_major(struct bus_type *bus, const char *buf,
435 size_t count);

--- 27 unchanged lines hidden (view full) ---

463 return is_lock_owner;
464}
465
466static ssize_t rbd_supported_features_show(struct bus_type *bus, char *buf)
467{
468 return sprintf(buf, "0x%llx\n", RBD_FEATURES_SUPPORTED);
469}
470
471static BUS_ATTR(add, S_IWUSR, NULL, rbd_add);
472static BUS_ATTR(remove, S_IWUSR, NULL, rbd_remove);
473static BUS_ATTR(add_single_major, S_IWUSR, NULL, rbd_add_single_major);
474static BUS_ATTR(remove_single_major, S_IWUSR, NULL, rbd_remove_single_major);
475static BUS_ATTR(supported_features, S_IRUGO, rbd_supported_features_show, NULL);
471static BUS_ATTR(add, 0200, NULL, rbd_add);
472static BUS_ATTR(remove, 0200, NULL, rbd_remove);
473static BUS_ATTR(add_single_major, 0200, NULL, rbd_add_single_major);
474static BUS_ATTR(remove_single_major, 0200, NULL, rbd_remove_single_major);
475static BUS_ATTR(supported_features, 0444, rbd_supported_features_show, NULL);
476
477static struct attribute *rbd_bus_attrs[] = {
478 &bus_attr_add.attr,
479 &bus_attr_remove.attr,
480 &bus_attr_add_single_major.attr,
481 &bus_attr_remove_single_major.attr,
482 &bus_attr_supported_features.attr,
483 NULL,

--- 1877 unchanged lines hidden (view full) ---

2361 if (is_zero_bvecs(obj_req->copyup_bvecs, bytes)) {
2362 dout("%s obj_req %p detected zeroes\n", __func__, obj_req);
2363 bytes = 0;
2364 }
2365
2366 osd_req_op_cls_init(obj_req->osd_req, 0, CEPH_OSD_OP_CALL, "rbd",
2367 "copyup");
2368 osd_req_op_cls_request_data_bvecs(obj_req->osd_req, 0,
476
477static struct attribute *rbd_bus_attrs[] = {
478 &bus_attr_add.attr,
479 &bus_attr_remove.attr,
480 &bus_attr_add_single_major.attr,
481 &bus_attr_remove_single_major.attr,
482 &bus_attr_supported_features.attr,
483 NULL,

--- 1877 unchanged lines hidden (view full) ---

2361 if (is_zero_bvecs(obj_req->copyup_bvecs, bytes)) {
2362 dout("%s obj_req %p detected zeroes\n", __func__, obj_req);
2363 bytes = 0;
2364 }
2365
2366 osd_req_op_cls_init(obj_req->osd_req, 0, CEPH_OSD_OP_CALL, "rbd",
2367 "copyup");
2368 osd_req_op_cls_request_data_bvecs(obj_req->osd_req, 0,
2369 obj_req->copyup_bvecs,
2370 obj_req->copyup_bvec_count,
2371 bytes);
2369 obj_req->copyup_bvecs, bytes);
2372
2373 switch (obj_req->img_request->op_type) {
2374 case OBJ_OP_WRITE:
2375 __rbd_obj_setup_write(obj_req, 1);
2376 break;
2377 case OBJ_OP_DISCARD:
2378 rbd_assert(!rbd_obj_is_entire(obj_req));
2379 __rbd_obj_setup_discard(obj_req, 1);

--- 1819 unchanged lines hidden (view full) ---

4199
4200 ret = rbd_dev_refresh(rbd_dev);
4201 if (ret)
4202 return ret;
4203
4204 return size;
4205}
4206
2370
2371 switch (obj_req->img_request->op_type) {
2372 case OBJ_OP_WRITE:
2373 __rbd_obj_setup_write(obj_req, 1);
2374 break;
2375 case OBJ_OP_DISCARD:
2376 rbd_assert(!rbd_obj_is_entire(obj_req));
2377 __rbd_obj_setup_discard(obj_req, 1);

--- 1819 unchanged lines hidden (view full) ---

4197
4198 ret = rbd_dev_refresh(rbd_dev);
4199 if (ret)
4200 return ret;
4201
4202 return size;
4203}
4204
4207static DEVICE_ATTR(size, S_IRUGO, rbd_size_show, NULL);
4208static DEVICE_ATTR(features, S_IRUGO, rbd_features_show, NULL);
4209static DEVICE_ATTR(major, S_IRUGO, rbd_major_show, NULL);
4210static DEVICE_ATTR(minor, S_IRUGO, rbd_minor_show, NULL);
4211static DEVICE_ATTR(client_addr, S_IRUGO, rbd_client_addr_show, NULL);
4212static DEVICE_ATTR(client_id, S_IRUGO, rbd_client_id_show, NULL);
4213static DEVICE_ATTR(cluster_fsid, S_IRUGO, rbd_cluster_fsid_show, NULL);
4214static DEVICE_ATTR(config_info, S_IRUSR, rbd_config_info_show, NULL);
4215static DEVICE_ATTR(pool, S_IRUGO, rbd_pool_show, NULL);
4216static DEVICE_ATTR(pool_id, S_IRUGO, rbd_pool_id_show, NULL);
4217static DEVICE_ATTR(name, S_IRUGO, rbd_name_show, NULL);
4218static DEVICE_ATTR(image_id, S_IRUGO, rbd_image_id_show, NULL);
4219static DEVICE_ATTR(refresh, S_IWUSR, NULL, rbd_image_refresh);
4220static DEVICE_ATTR(current_snap, S_IRUGO, rbd_snap_show, NULL);
4221static DEVICE_ATTR(snap_id, S_IRUGO, rbd_snap_id_show, NULL);
4222static DEVICE_ATTR(parent, S_IRUGO, rbd_parent_show, NULL);
4205static DEVICE_ATTR(size, 0444, rbd_size_show, NULL);
4206static DEVICE_ATTR(features, 0444, rbd_features_show, NULL);
4207static DEVICE_ATTR(major, 0444, rbd_major_show, NULL);
4208static DEVICE_ATTR(minor, 0444, rbd_minor_show, NULL);
4209static DEVICE_ATTR(client_addr, 0444, rbd_client_addr_show, NULL);
4210static DEVICE_ATTR(client_id, 0444, rbd_client_id_show, NULL);
4211static DEVICE_ATTR(cluster_fsid, 0444, rbd_cluster_fsid_show, NULL);
4212static DEVICE_ATTR(config_info, 0400, rbd_config_info_show, NULL);
4213static DEVICE_ATTR(pool, 0444, rbd_pool_show, NULL);
4214static DEVICE_ATTR(pool_id, 0444, rbd_pool_id_show, NULL);
4215static DEVICE_ATTR(name, 0444, rbd_name_show, NULL);
4216static DEVICE_ATTR(image_id, 0444, rbd_image_id_show, NULL);
4217static DEVICE_ATTR(refresh, 0200, NULL, rbd_image_refresh);
4218static DEVICE_ATTR(current_snap, 0444, rbd_snap_show, NULL);
4219static DEVICE_ATTR(snap_id, 0444, rbd_snap_id_show, NULL);
4220static DEVICE_ATTR(parent, 0444, rbd_parent_show, NULL);
4223
4224static struct attribute *rbd_attrs[] = {
4225 &dev_attr_size.attr,
4226 &dev_attr_features.attr,
4227 &dev_attr_major.attr,
4228 &dev_attr_minor.attr,
4229 &dev_attr_client_addr.attr,
4230 &dev_attr_client_id.attr,

--- 1789 unchanged lines hidden ---
4221
4222static struct attribute *rbd_attrs[] = {
4223 &dev_attr_size.attr,
4224 &dev_attr_features.attr,
4225 &dev_attr_major.attr,
4226 &dev_attr_minor.attr,
4227 &dev_attr_client_addr.attr,
4228 &dev_attr_client_id.attr,

--- 1789 unchanged lines hidden ---