Re: [PATCH 07/32] rbd: don't (ab)use obj_req->pages for stat requests

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 03/16/2018 07:37 AM, Alex Elder wrote:
> From: Ilya Dryomov <idryomov@xxxxxxxxx>
> 
> obj_req->pages is for provided data buffers.  stat requests are
> internal and should be NODATA.
> 
> Signed-off-by: Ilya Dryomov <idryomov@xxxxxxxxx>

Makes sense.

Reviewed-by: Alex Elder <elder@xxxxxxxxxx>

> ---
>  drivers/block/rbd.c | 15 +++++----------
>  1 file changed, 5 insertions(+), 10 deletions(-)
> 
> diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c
> index 8b9047369ab9..aa3f6a6de12c 100644
> --- a/drivers/block/rbd.c
> +++ b/drivers/block/rbd.c
> @@ -2645,11 +2645,9 @@ static int rbd_img_obj_exists_submit(struct rbd_obj_request *obj_request)
>  	struct rbd_device *rbd_dev = obj_request->img_request->rbd_dev;
>  	struct rbd_obj_request *stat_request;
>  	struct page **pages;
> -	u32 page_count;
> -	size_t size;
>  	int ret;
>  
> -	stat_request = rbd_obj_request_create(OBJ_REQUEST_PAGES);
> +	stat_request = rbd_obj_request_create(OBJ_REQUEST_NODATA);
>  	if (!stat_request)
>  		return -ENOMEM;
>  
> @@ -2670,22 +2668,19 @@ static int rbd_img_obj_exists_submit(struct rbd_obj_request *obj_request)
>  	 *         le32 tv_nsec;
>  	 *     } mtime;
>  	 */
> -	size = sizeof (__le64) + sizeof (__le32) + sizeof (__le32);
> -	page_count = (u32)calc_pages_for(0, size);
> -	pages = ceph_alloc_page_vector(page_count, GFP_NOIO);
> +	pages = ceph_alloc_page_vector(1, GFP_NOIO);
>  	if (IS_ERR(pages)) {
>  		ret = PTR_ERR(pages);
>  		goto fail_stat_request;
>  	}
>  
>  	osd_req_op_init(stat_request->osd_req, 0, CEPH_OSD_OP_STAT, 0);
> -	osd_req_op_raw_data_in_pages(stat_request->osd_req, 0, pages, size, 0,
> -				     false, false);
> +	osd_req_op_raw_data_in_pages(stat_request->osd_req, 0, pages,
> +				     8 + sizeof(struct ceph_timespec),
> +				     0, false, true);
>  
>  	rbd_obj_request_get(obj_request);
>  	stat_request->obj_request = obj_request;
> -	stat_request->pages = pages;
> -	stat_request->page_count = page_count;
>  	stat_request->callback = rbd_img_obj_exists_callback;
>  
>  	rbd_obj_request_submit(stat_request);
> 

--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [CEPH Users]     [Ceph Large]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux