libceph: variable-sized ceph_object_id
authorIlya Dryomov <idryomov@gmail.com>
Fri, 29 Apr 2016 17:54:20 +0000 (19:54 +0200)
committerIlya Dryomov <idryomov@gmail.com>
Wed, 25 May 2016 22:36:22 +0000 (00:36 +0200)
commitd30291b985d1854565d7f2c82a4457869d5265e8
tree43b99c978c5e4ea321d72590dfeebd42c10de28e
parent711da55d36a6f1eddcd340969be7223110d2f6b0
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>
drivers/block/rbd.c
fs/ceph/addr.c
fs/ceph/file.c
fs/ceph/ioctl.c
include/linux/ceph/osdmap.h
net/ceph/debugfs.c
net/ceph/osd_client.c
net/ceph/osdmap.c