forked from Minki/linux
rbd: allow "fancy" striping
Signed-off-by: Ilya Dryomov <idryomov@gmail.com> Acked-by: Jason Dillaman <dillaman@redhat.com>
This commit is contained in:
parent
afb978884c
commit
b133185217
@ -4615,9 +4615,6 @@ static int rbd_dev_v2_striping_info(struct rbd_device *rbd_dev)
|
|||||||
} __attribute__ ((packed)) striping_info_buf = { 0 };
|
} __attribute__ ((packed)) striping_info_buf = { 0 };
|
||||||
size_t size = sizeof (striping_info_buf);
|
size_t size = sizeof (striping_info_buf);
|
||||||
void *p;
|
void *p;
|
||||||
u64 obj_size;
|
|
||||||
u64 stripe_unit;
|
|
||||||
u64 stripe_count;
|
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
ret = rbd_obj_method_sync(rbd_dev, &rbd_dev->header_oid,
|
ret = rbd_obj_method_sync(rbd_dev, &rbd_dev->header_oid,
|
||||||
@ -4629,31 +4626,9 @@ static int rbd_dev_v2_striping_info(struct rbd_device *rbd_dev)
|
|||||||
if (ret < size)
|
if (ret < size)
|
||||||
return -ERANGE;
|
return -ERANGE;
|
||||||
|
|
||||||
/*
|
|
||||||
* We don't actually support the "fancy striping" feature
|
|
||||||
* (STRIPINGV2) yet, but if the striping sizes are the
|
|
||||||
* defaults the behavior is the same as before. So find
|
|
||||||
* out, and only fail if the image has non-default values.
|
|
||||||
*/
|
|
||||||
ret = -EINVAL;
|
|
||||||
obj_size = rbd_obj_bytes(&rbd_dev->header);
|
|
||||||
p = &striping_info_buf;
|
p = &striping_info_buf;
|
||||||
stripe_unit = ceph_decode_64(&p);
|
rbd_dev->header.stripe_unit = ceph_decode_64(&p);
|
||||||
if (stripe_unit != obj_size) {
|
rbd_dev->header.stripe_count = ceph_decode_64(&p);
|
||||||
rbd_warn(rbd_dev, "unsupported stripe unit "
|
|
||||||
"(got %llu want %llu)",
|
|
||||||
stripe_unit, obj_size);
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
stripe_count = ceph_decode_64(&p);
|
|
||||||
if (stripe_count != 1) {
|
|
||||||
rbd_warn(rbd_dev, "unsupported stripe count "
|
|
||||||
"(got %llu want 1)", stripe_count);
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
rbd_dev->header.stripe_unit = stripe_unit;
|
|
||||||
rbd_dev->header.stripe_count = stripe_count;
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user