[07/20] rbd: factor out rbd_osd_setup_copyup()
diff mbox series

Message ID 20190625144111.11270-8-idryomov@gmail.com
State New
Headers show
Series
  • rbd: support for object-map and fast-diff
Related show

Commit Message

Ilya Dryomov June 25, 2019, 2:40 p.m. UTC
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
---
 drivers/block/rbd.c | 29 +++++++++++++++++------------
 1 file changed, 17 insertions(+), 12 deletions(-)

Comments

Dongsheng Yang July 1, 2019, 5:28 a.m. UTC | #1
On 06/25/2019 10:40 PM, Ilya Dryomov wrote:
> Signed-off-by: Ilya Dryomov <idryomov@gmail.com>

Missing a commit message. Otherwise,

Reviewed-by: Dongsheng Yang <dongsheng.yang@easystack.cn>
> ---
>   drivers/block/rbd.c | 29 +++++++++++++++++------------
>   1 file changed, 17 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c
> index 5c34fe215c63..e059a8139e4f 100644
> --- a/drivers/block/rbd.c
> +++ b/drivers/block/rbd.c
> @@ -1861,6 +1861,21 @@ static int rbd_osd_setup_stat(struct ceph_osd_request *osd_req, int which)
>   	return 0;
>   }
>   
> +static int rbd_osd_setup_copyup(struct ceph_osd_request *osd_req, int which,
> +				u32 bytes)
> +{
> +	struct rbd_obj_request *obj_req = osd_req->r_priv;
> +	int ret;
> +
> +	ret = osd_req_op_cls_init(osd_req, which, "rbd", "copyup");
> +	if (ret)
> +		return ret;
> +
> +	osd_req_op_cls_request_data_bvecs(osd_req, which, obj_req->copyup_bvecs,
> +					  obj_req->copyup_bvec_count, bytes);
> +	return 0;
> +}
> +
>   static int count_write_ops(struct rbd_obj_request *obj_req)
>   {
>   	return 2; /* setallochint + write/writefull */
> @@ -2560,14 +2575,10 @@ static int rbd_obj_issue_copyup_empty_snapc(struct rbd_obj_request *obj_req,
>   	if (IS_ERR(osd_req))
>   		return PTR_ERR(osd_req);
>   
> -	ret = osd_req_op_cls_init(osd_req, 0, "rbd", "copyup");
> +	ret = rbd_osd_setup_copyup(osd_req, 0, bytes);
>   	if (ret)
>   		return ret;
>   
> -	osd_req_op_cls_request_data_bvecs(osd_req, 0,
> -					  obj_req->copyup_bvecs,
> -					  obj_req->copyup_bvec_count,
> -					  bytes);
>   	rbd_osd_format_write(osd_req);
>   
>   	ret = ceph_osdc_alloc_messages(osd_req, GFP_NOIO);
> @@ -2604,15 +2615,9 @@ static int rbd_obj_issue_copyup_ops(struct rbd_obj_request *obj_req, u32 bytes)
>   		return PTR_ERR(osd_req);
>   
>   	if (bytes != MODS_ONLY) {
> -		ret = osd_req_op_cls_init(osd_req, which, "rbd",
> -					  "copyup");
> +		ret = rbd_osd_setup_copyup(osd_req, which++, bytes);
>   		if (ret)
>   			return ret;
> -
> -		osd_req_op_cls_request_data_bvecs(osd_req, which++,
> -						  obj_req->copyup_bvecs,
> -						  obj_req->copyup_bvec_count,
> -						  bytes);
>   	}
>   
>   	switch (img_req->op_type) {

Patch
diff mbox series

diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c
index 5c34fe215c63..e059a8139e4f 100644
--- a/drivers/block/rbd.c
+++ b/drivers/block/rbd.c
@@ -1861,6 +1861,21 @@  static int rbd_osd_setup_stat(struct ceph_osd_request *osd_req, int which)
 	return 0;
 }
 
+static int rbd_osd_setup_copyup(struct ceph_osd_request *osd_req, int which,
+				u32 bytes)
+{
+	struct rbd_obj_request *obj_req = osd_req->r_priv;
+	int ret;
+
+	ret = osd_req_op_cls_init(osd_req, which, "rbd", "copyup");
+	if (ret)
+		return ret;
+
+	osd_req_op_cls_request_data_bvecs(osd_req, which, obj_req->copyup_bvecs,
+					  obj_req->copyup_bvec_count, bytes);
+	return 0;
+}
+
 static int count_write_ops(struct rbd_obj_request *obj_req)
 {
 	return 2; /* setallochint + write/writefull */
@@ -2560,14 +2575,10 @@  static int rbd_obj_issue_copyup_empty_snapc(struct rbd_obj_request *obj_req,
 	if (IS_ERR(osd_req))
 		return PTR_ERR(osd_req);
 
-	ret = osd_req_op_cls_init(osd_req, 0, "rbd", "copyup");
+	ret = rbd_osd_setup_copyup(osd_req, 0, bytes);
 	if (ret)
 		return ret;
 
-	osd_req_op_cls_request_data_bvecs(osd_req, 0,
-					  obj_req->copyup_bvecs,
-					  obj_req->copyup_bvec_count,
-					  bytes);
 	rbd_osd_format_write(osd_req);
 
 	ret = ceph_osdc_alloc_messages(osd_req, GFP_NOIO);
@@ -2604,15 +2615,9 @@  static int rbd_obj_issue_copyup_ops(struct rbd_obj_request *obj_req, u32 bytes)
 		return PTR_ERR(osd_req);
 
 	if (bytes != MODS_ONLY) {
-		ret = osd_req_op_cls_init(osd_req, which, "rbd",
-					  "copyup");
+		ret = rbd_osd_setup_copyup(osd_req, which++, bytes);
 		if (ret)
 			return ret;
-
-		osd_req_op_cls_request_data_bvecs(osd_req, which++,
-						  obj_req->copyup_bvecs,
-						  obj_req->copyup_bvec_count,
-						  bytes);
 	}
 
 	switch (img_req->op_type) {