libceph: a per-osdc crush scratch buffer
authorIlya Dryomov <ilya.dryomov@inktank.com>
Fri, 31 Jan 2014 15:54:26 +0000 (17:54 +0200)
committerYan, Zheng <zheng.z.yan@intel.com>
Thu, 3 Apr 2014 02:33:50 +0000 (10:33 +0800)
commit9d521470a40f16110bd31018034155c60c1a1275
tree0dd56756c47839cd9605262ddca0f91c12c07c67
parent455c6fdbd219161bd09b1165f11699d6d73de11c
libceph: a per-osdc crush scratch buffer

With the addition of erasure coding support in the future, scratch
variable-length array in crush_do_rule_ary() is going to grow to at
least 200 bytes on average, on top of another 128 bytes consumed by
rawosd/osd arrays in the call chain.  Replace it with a buffer inside
struct osdmap and a mutex.  This shouldn't result in any contention,
because all osd requests were already serialized by request_mutex at
that point; the only unlocked caller was ceph_ioctl_get_dataloc().

Signed-off-by: Ilya Dryomov <ilya.dryomov@inktank.com>
Reviewed-by: Sage Weil <sage@inktank.com>
include/linux/ceph/osdmap.h
net/ceph/osdmap.c