Loading Documentation/ABI/testing/sysfs-bus-rbd +5 −0 Original line number Diff line number Diff line Loading @@ -57,6 +57,11 @@ cluster_fsid The ceph cluster UUID. (August 2016, since 4.9.) config_info The string written into /sys/bus/rbd/add{,_single_major}. (August 2016, since 4.9.) features A hexadecimal encoding of the feature bits for this image. Loading drivers/block/rbd.c +21 −2 Original line number Diff line number Diff line Loading @@ -370,6 +370,7 @@ struct rbd_device { unsigned long flags; /* possibly lock protected */ struct rbd_spec *spec; struct rbd_options *opts; char *config_info; /* add{,_single_major} string */ struct ceph_object_id header_oid; struct ceph_object_locator header_oloc; Loading Loading @@ -4620,6 +4621,14 @@ static ssize_t rbd_cluster_fsid_show(struct device *dev, return sprintf(buf, "%pU\n", &rbd_dev->rbd_client->client->fsid); } static ssize_t rbd_config_info_show(struct device *dev, struct device_attribute *attr, char *buf) { struct rbd_device *rbd_dev = dev_to_rbd_dev(dev); return sprintf(buf, "%s\n", rbd_dev->config_info); } static ssize_t rbd_pool_show(struct device *dev, struct device_attribute *attr, char *buf) { Loading Loading @@ -4732,6 +4741,7 @@ static DEVICE_ATTR(minor, S_IRUGO, rbd_minor_show, NULL); static DEVICE_ATTR(client_addr, S_IRUGO, rbd_client_addr_show, NULL); static DEVICE_ATTR(client_id, S_IRUGO, rbd_client_id_show, NULL); static DEVICE_ATTR(cluster_fsid, S_IRUGO, rbd_cluster_fsid_show, NULL); static DEVICE_ATTR(config_info, S_IRUSR, rbd_config_info_show, NULL); static DEVICE_ATTR(pool, S_IRUGO, rbd_pool_show, NULL); static DEVICE_ATTR(pool_id, S_IRUGO, rbd_pool_id_show, NULL); static DEVICE_ATTR(name, S_IRUGO, rbd_name_show, NULL); Loading @@ -4749,6 +4759,7 @@ static struct attribute *rbd_attrs[] = { &dev_attr_client_addr.attr, &dev_attr_client_id.attr, &dev_attr_cluster_fsid.attr, &dev_attr_config_info.attr, &dev_attr_pool.attr, &dev_attr_pool_id.attr, &dev_attr_name.attr, Loading Loading @@ -4824,6 +4835,7 @@ static void rbd_dev_free(struct rbd_device *rbd_dev) ceph_oid_destroy(&rbd_dev->header_oid); ceph_oloc_destroy(&rbd_dev->header_oloc); kfree(rbd_dev->config_info); rbd_put_client(rbd_dev->rbd_client); rbd_spec_put(rbd_dev->spec); Loading Loading @@ -6223,10 +6235,18 @@ static ssize_t do_rbd_add(struct bus_type *bus, spec = NULL; /* rbd_dev now owns this */ rbd_opts = NULL; /* rbd_dev now owns this */ rbd_dev->config_info = kstrdup(buf, GFP_KERNEL); if (!rbd_dev->config_info) { rc = -ENOMEM; goto err_out_rbd_dev; } down_write(&rbd_dev->header_rwsem); rc = rbd_dev_image_probe(rbd_dev, 0); if (rc < 0) if (rc < 0) { up_write(&rbd_dev->header_rwsem); goto err_out_rbd_dev; } /* If we are mapping a snapshot it must be marked read-only */ Loading @@ -6253,7 +6273,6 @@ static ssize_t do_rbd_add(struct bus_type *bus, return rc; err_out_rbd_dev: up_write(&rbd_dev->header_rwsem); rbd_dev_destroy(rbd_dev); err_out_client: rbd_put_client(rbdc); Loading Loading
Documentation/ABI/testing/sysfs-bus-rbd +5 −0 Original line number Diff line number Diff line Loading @@ -57,6 +57,11 @@ cluster_fsid The ceph cluster UUID. (August 2016, since 4.9.) config_info The string written into /sys/bus/rbd/add{,_single_major}. (August 2016, since 4.9.) features A hexadecimal encoding of the feature bits for this image. Loading
drivers/block/rbd.c +21 −2 Original line number Diff line number Diff line Loading @@ -370,6 +370,7 @@ struct rbd_device { unsigned long flags; /* possibly lock protected */ struct rbd_spec *spec; struct rbd_options *opts; char *config_info; /* add{,_single_major} string */ struct ceph_object_id header_oid; struct ceph_object_locator header_oloc; Loading Loading @@ -4620,6 +4621,14 @@ static ssize_t rbd_cluster_fsid_show(struct device *dev, return sprintf(buf, "%pU\n", &rbd_dev->rbd_client->client->fsid); } static ssize_t rbd_config_info_show(struct device *dev, struct device_attribute *attr, char *buf) { struct rbd_device *rbd_dev = dev_to_rbd_dev(dev); return sprintf(buf, "%s\n", rbd_dev->config_info); } static ssize_t rbd_pool_show(struct device *dev, struct device_attribute *attr, char *buf) { Loading Loading @@ -4732,6 +4741,7 @@ static DEVICE_ATTR(minor, S_IRUGO, rbd_minor_show, NULL); static DEVICE_ATTR(client_addr, S_IRUGO, rbd_client_addr_show, NULL); static DEVICE_ATTR(client_id, S_IRUGO, rbd_client_id_show, NULL); static DEVICE_ATTR(cluster_fsid, S_IRUGO, rbd_cluster_fsid_show, NULL); static DEVICE_ATTR(config_info, S_IRUSR, rbd_config_info_show, NULL); static DEVICE_ATTR(pool, S_IRUGO, rbd_pool_show, NULL); static DEVICE_ATTR(pool_id, S_IRUGO, rbd_pool_id_show, NULL); static DEVICE_ATTR(name, S_IRUGO, rbd_name_show, NULL); Loading @@ -4749,6 +4759,7 @@ static struct attribute *rbd_attrs[] = { &dev_attr_client_addr.attr, &dev_attr_client_id.attr, &dev_attr_cluster_fsid.attr, &dev_attr_config_info.attr, &dev_attr_pool.attr, &dev_attr_pool_id.attr, &dev_attr_name.attr, Loading Loading @@ -4824,6 +4835,7 @@ static void rbd_dev_free(struct rbd_device *rbd_dev) ceph_oid_destroy(&rbd_dev->header_oid); ceph_oloc_destroy(&rbd_dev->header_oloc); kfree(rbd_dev->config_info); rbd_put_client(rbd_dev->rbd_client); rbd_spec_put(rbd_dev->spec); Loading Loading @@ -6223,10 +6235,18 @@ static ssize_t do_rbd_add(struct bus_type *bus, spec = NULL; /* rbd_dev now owns this */ rbd_opts = NULL; /* rbd_dev now owns this */ rbd_dev->config_info = kstrdup(buf, GFP_KERNEL); if (!rbd_dev->config_info) { rc = -ENOMEM; goto err_out_rbd_dev; } down_write(&rbd_dev->header_rwsem); rc = rbd_dev_image_probe(rbd_dev, 0); if (rc < 0) if (rc < 0) { up_write(&rbd_dev->header_rwsem); goto err_out_rbd_dev; } /* If we are mapping a snapshot it must be marked read-only */ Loading @@ -6253,7 +6273,6 @@ static ssize_t do_rbd_add(struct bus_type *bus, return rc; err_out_rbd_dev: up_write(&rbd_dev->header_rwsem); rbd_dev_destroy(rbd_dev); err_out_client: rbd_put_client(rbdc); Loading