|
@@ -147,7 +147,6 @@ struct rbd_spec {
|
|
|
char *image_id;
|
|
|
size_t image_id_len;
|
|
|
char *image_name;
|
|
|
- size_t image_name_len;
|
|
|
|
|
|
u64 snap_id;
|
|
|
char *snap_name;
|
|
@@ -2563,15 +2562,15 @@ static char *rbd_dev_image_name(struct rbd_device *rbd_dev)
|
|
|
|
|
|
rbd_assert(!rbd_dev->spec->image_name);
|
|
|
|
|
|
- image_id_size = sizeof (__le32) + rbd_dev->spec->image_id_len;
|
|
|
+ len = strlen(rbd_dev->spec->image_id);
|
|
|
+ image_id_size = sizeof (__le32) + len;
|
|
|
image_id = kmalloc(image_id_size, GFP_KERNEL);
|
|
|
if (!image_id)
|
|
|
return NULL;
|
|
|
|
|
|
p = image_id;
|
|
|
end = (char *) image_id + image_id_size;
|
|
|
- ceph_encode_string(&p, end, rbd_dev->spec->image_id,
|
|
|
- (u32) rbd_dev->spec->image_id_len);
|
|
|
+ ceph_encode_string(&p, end, rbd_dev->spec->image_id, (u32) len);
|
|
|
|
|
|
size = sizeof (__le32) + RBD_IMAGE_NAME_LEN_MAX;
|
|
|
reply_buf = kmalloc(size, GFP_KERNEL);
|
|
@@ -2631,14 +2630,12 @@ static int rbd_dev_probe_update_spec(struct rbd_device *rbd_dev)
|
|
|
/* Fetch the image name; tolerate failure here */
|
|
|
|
|
|
name = rbd_dev_image_name(rbd_dev);
|
|
|
- if (name) {
|
|
|
- rbd_dev->spec->image_name_len = strlen(name);
|
|
|
+ if (name)
|
|
|
rbd_dev->spec->image_name = (char *) name;
|
|
|
- } else {
|
|
|
+ else
|
|
|
pr_warning(RBD_DRV_NAME "%d "
|
|
|
"unable to get image name for image id %s\n",
|
|
|
rbd_dev->major, rbd_dev->spec->image_id);
|
|
|
- }
|
|
|
|
|
|
/* Look up the snapshot name. */
|
|
|
|
|
@@ -3252,7 +3249,7 @@ static int rbd_add_parse_args(const char *buf,
|
|
|
if (!*spec->pool_name)
|
|
|
goto out_err; /* Missing pool name */
|
|
|
|
|
|
- spec->image_name = dup_token(&buf, &spec->image_name_len);
|
|
|
+ spec->image_name = dup_token(&buf, NULL);
|
|
|
if (!spec->image_name)
|
|
|
goto out_mem;
|
|
|
if (!*spec->image_name)
|
|
@@ -3342,7 +3339,7 @@ static int rbd_dev_image_id(struct rbd_device *rbd_dev)
|
|
|
* First, see if the format 2 image id file exists, and if
|
|
|
* so, get the image's persistent id from it.
|
|
|
*/
|
|
|
- size = sizeof (RBD_ID_PREFIX) + rbd_dev->spec->image_name_len;
|
|
|
+ size = sizeof (RBD_ID_PREFIX) + strlen(rbd_dev->spec->image_name);
|
|
|
object_name = kmalloc(size, GFP_NOIO);
|
|
|
if (!object_name)
|
|
|
return -ENOMEM;
|
|
@@ -3400,7 +3397,7 @@ static int rbd_dev_v1_probe(struct rbd_device *rbd_dev)
|
|
|
|
|
|
/* Record the header object name for this rbd image. */
|
|
|
|
|
|
- size = rbd_dev->spec->image_name_len + sizeof (RBD_SUFFIX);
|
|
|
+ size = strlen(rbd_dev->spec->image_name) + sizeof (RBD_SUFFIX);
|
|
|
rbd_dev->header_name = kmalloc(size, GFP_KERNEL);
|
|
|
if (!rbd_dev->header_name) {
|
|
|
ret = -ENOMEM;
|