diff options
author | Ilya Dryomov <idryomov@gmail.com> | 2016-04-29 17:54:20 (GMT) |
---|---|---|
committer | Ilya Dryomov <idryomov@gmail.com> | 2016-05-25 22:36:22 (GMT) |
commit | d30291b985d1854565d7f2c82a4457869d5265e8 (patch) | |
tree | 43b99c978c5e4ea321d72590dfeebd42c10de28e /fs/ceph/ioctl.c | |
parent | 711da55d36a6f1eddcd340969be7223110d2f6b0 (diff) | |
download | linux-d30291b985d1854565d7f2c82a4457869d5265e8.tar.xz |
libceph: variable-sized ceph_object_id
Currently ceph_object_id can hold object names of up to 100
(CEPH_MAX_OID_NAME_LEN) characters. This is enough for all use cases,
expect one - long rbd image names:
- a format 1 header is named "<imgname>.rbd"
- an object that points to a format 2 header is named "rbd_id.<imgname>"
We operate on these potentially long-named objects during rbd map, and,
for format 1 images, during header refresh. (A format 2 header name is
a small system-generated string.)
Lift this 100 character limit by making ceph_object_id be able to point
to an externally-allocated string. Apart from being able to work with
almost arbitrarily-long named objects, this allows us to reduce the
size of ceph_object_id from >100 bytes to 64 bytes.
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Diffstat (limited to 'fs/ceph/ioctl.c')
-rw-r--r-- | fs/ceph/ioctl.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/ceph/ioctl.c b/fs/ceph/ioctl.c index f851d8d..db29670 100644 --- a/fs/ceph/ioctl.c +++ b/fs/ceph/ioctl.c @@ -213,7 +213,7 @@ static long ceph_ioctl_get_dataloc(struct file *file, void __user *arg) ceph_ino(inode), dl.object_no); oloc.pool = ceph_file_layout_pg_pool(ci->i_layout); - ceph_oid_set_name(&oid, dl.object_name); + ceph_oid_printf(&oid, "%s", dl.object_name); r = ceph_oloc_oid_to_pg(osdc->osdmap, &oloc, &oid, &pgid); if (r < 0) { |