On Mon, Nov 17, 2014 at 10:56 AM, Yan, Zheng <[email protected]> wrote:
> Signed-off-by: Yan, Zheng <[email protected]>
> ---
> include/linux/ceph/osd_client.h | 10 ++++++++++
> net/ceph/osd_client.c | 38 ++++++++++++++++++++++++++++++++++++++
> 2 files changed, 48 insertions(+)
>
> diff --git a/include/linux/ceph/osd_client.h b/include/linux/ceph/osd_client.h
> index 03aeb27..1ad217b 100644
> --- a/include/linux/ceph/osd_client.h
> +++ b/include/linux/ceph/osd_client.h
> @@ -87,6 +87,13 @@ struct ceph_osd_req_op {
> struct ceph_osd_data osd_data;
> } extent;
> struct {
> + __le32 name_len;
> + __le32 value_len;
> + __u8 cmp_op; /* CEPH_OSD_CMPXATTR_OP_* */
> + __u8 cmp_mode; /* CEPH_OSD_CMPXATTR_MODE_* */
> + struct ceph_osd_data osd_data;
> + } xattr;
> + struct {
> const char *class_name;
> const char *method_name;
> struct ceph_osd_data request_info;
> @@ -295,6 +302,9 @@ extern void osd_req_op_cls_response_data_pages(struct
> ceph_osd_request *,
> extern void osd_req_op_cls_init(struct ceph_osd_request *osd_req,
> unsigned int which, u16 opcode,
> const char *class, const char
> *method);
> +extern void osd_req_op_xattr_init(struct ceph_osd_request *osd_req, unsigned
> int which,
> + u16 opcode, const char *name, const void
> *value,
> + size_t size, u8 cmp_op, u8 cmp_mode);
> extern void osd_req_op_watch_init(struct ceph_osd_request *osd_req,
> unsigned int which, u16 opcode,
> u64 cookie, u64 version, int flag);
> diff --git a/net/ceph/osd_client.c b/net/ceph/osd_client.c
> index 1f6c405..f8fb376 100644
> --- a/net/ceph/osd_client.c
> +++ b/net/ceph/osd_client.c
> @@ -545,6 +545,34 @@ void osd_req_op_cls_init(struct ceph_osd_request
> *osd_req, unsigned int which,
> }
> EXPORT_SYMBOL(osd_req_op_cls_init);
>
> +void osd_req_op_xattr_init(struct ceph_osd_request *osd_req, unsigned int
> which,
> + u16 opcode, const char *name, const void *value,
> + size_t size, u8 cmp_op, u8 cmp_mode)
> +{
> + struct ceph_osd_req_op *op = _osd_req_op_init(osd_req, which, opcode);
> + struct ceph_pagelist *pagelist;
> + size_t payload_len;
Add
BUG_ON(opcode != CEPH_OSD_OP_SETXATTR && opcode != CEPH_OSD_OP_CMPXATTR);
These asserts in osd_req_op_*_init() proved to be useful and some day
we will change from BUG_ONs to something nicer throughout.
> +
> + pagelist = kmalloc(sizeof (*pagelist), GFP_NOFS);
> + BUG_ON(!pagelist);
This BUG_ON OTOH is not useful ;) Can you make osd_req_op_xattr_init()
return an error and get rid of it? I know you just pasted this from
osd_req_op_cls_init(), but ceph_uninline_data() is perfectly capable of
handling -ENOMEM so no reason to spread this any further.
Also drop the space after sizeof.
Thanks,
Ilya
--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html