diff mbox

[06/20] libceph: a few more osd data cleanups

Message ID 515ED98C.5010709@inktank.com (mailing list archive)
State New, archived
Headers show

Commit Message

Alex Elder April 5, 2013, 2:02 p.m. UTC
These are very small changes that make use osd_data local pointers
as shorthands for structures being operated on.

Signed-off-by: Alex Elder <elder@inktank.com>
---
 fs/ceph/addr.c |   30 +++++++++++++++++-------------
 1 file changed, 17 insertions(+), 13 deletions(-)

 	int num_pages;
@@ -244,11 +245,12 @@ static void finish_read(struct ceph_osd_request
*req, struct ceph_msg *msg)
 	dout("finish_read %p req %p rc %d bytes %d\n", inode, req, rc, bytes);

 	/* unlock all pages, zeroing any data we didn't read */
-	BUG_ON(req->r_data_in.type != CEPH_OSD_DATA_TYPE_PAGES);
-	num_pages = calc_pages_for((u64)req->r_data_in.alignment,
-					(u64)req->r_data_in.length);
+	osd_data = &req->r_data_in;
+	BUG_ON(osd_data->type != CEPH_OSD_DATA_TYPE_PAGES);
+	num_pages = calc_pages_for((u64)osd_data->alignment,
+					(u64)osd_data->length);
 	for (i = 0; i < num_pages; i++) {
-		struct page *page = req->r_data_in.pages[i];
+		struct page *page = osd_data->pages[i];

 		if (bytes < (int)PAGE_CACHE_SIZE) {
 			/* zero (remainder of) page */
@@ -263,7 +265,7 @@ static void finish_read(struct ceph_osd_request
*req, struct ceph_msg *msg)
 		page_cache_release(page);
 		bytes -= PAGE_CACHE_SIZE;
 	}
-	kfree(req->r_data_in.pages);
+	kfree(osd_data->pages);
 }

 static void ceph_unlock_page_vector(struct page **pages, int num_pages)
@@ -557,6 +559,7 @@ static void writepages_finish(struct
ceph_osd_request *req,
 {
 	struct inode *inode = req->r_inode;
 	struct ceph_inode_info *ci = ceph_inode(inode);
+	struct ceph_osd_data *osd_data;
 	unsigned wrote;
 	struct page *page;
 	int num_pages;
@@ -569,9 +572,10 @@ static void writepages_finish(struct
ceph_osd_request *req,
 	long writeback_stat;
 	unsigned issued = ceph_caps_issued(ci);

-	BUG_ON(req->r_data_out.type != CEPH_OSD_DATA_TYPE_PAGES);
-	num_pages = calc_pages_for((u64)req->r_data_out.alignment,
-					(u64)req->r_data_out.length);
+	osd_data = &req->r_data_out;
+	BUG_ON(osd_data->type != CEPH_OSD_DATA_TYPE_PAGES);
+	num_pages = calc_pages_for((u64)osd_data->alignment,
+					(u64)osd_data->length);
 	if (rc >= 0) {
 		/*
 		 * Assume we wrote the pages we originally sent.  The
@@ -589,7 +593,7 @@ static void writepages_finish(struct
ceph_osd_request *req,

 	/* clean all pages */
 	for (i = 0; i < num_pages; i++) {
-		page = req->r_data_out.pages[i];
+		page = osd_data->pages[i];
 		BUG_ON(!page);
 		WARN_ON(!PageUptodate(page));

@@ -620,12 +624,12 @@ static void writepages_finish(struct
ceph_osd_request *req,
 	dout("%p wrote+cleaned %d pages\n", inode, wrote);
 	ceph_put_wrbuffer_cap_refs(ci, num_pages, snapc);

-	ceph_release_pages(req->r_data_out.pages, num_pages);
-	if (req->r_data_out.pages_from_pool)
-		mempool_free(req->r_data_out.pages,
+	ceph_release_pages(osd_data->pages, num_pages);
+	if (osd_data->pages_from_pool)
+		mempool_free(osd_data->pages,
 			     ceph_sb_to_client(inode->i_sb)->wb_pagevec_pool);
 	else
-		kfree(req->r_data_out.pages);
+		kfree(osd_data->pages);
 	ceph_osdc_put_request(req);
 }

Comments

Josh Durgin April 5, 2013, 6:17 p.m. UTC | #1
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>

On 04/05/2013 07:02 AM, Alex Elder wrote:
> These are very small changes that make use osd_data local pointers
> as shorthands for structures being operated on.
>
> Signed-off-by: Alex Elder <elder@inktank.com>
> ---
>   fs/ceph/addr.c |   30 +++++++++++++++++-------------
>   1 file changed, 17 insertions(+), 13 deletions(-)
>
> diff --git a/fs/ceph/addr.c b/fs/ceph/addr.c
> index 8507389..c46b9d3 100644
> --- a/fs/ceph/addr.c
> +++ b/fs/ceph/addr.c
> @@ -236,6 +236,7 @@ static int ceph_readpage(struct file *filp, struct
> page *page)
>   static void finish_read(struct ceph_osd_request *req, struct ceph_msg *msg)
>   {
>   	struct inode *inode = req->r_inode;
> +	struct ceph_osd_data *osd_data;
>   	int rc = req->r_result;
>   	int bytes = le32_to_cpu(msg->hdr.data_len);
>   	int num_pages;
> @@ -244,11 +245,12 @@ static void finish_read(struct ceph_osd_request
> *req, struct ceph_msg *msg)
>   	dout("finish_read %p req %p rc %d bytes %d\n", inode, req, rc, bytes);
>
>   	/* unlock all pages, zeroing any data we didn't read */
> -	BUG_ON(req->r_data_in.type != CEPH_OSD_DATA_TYPE_PAGES);
> -	num_pages = calc_pages_for((u64)req->r_data_in.alignment,
> -					(u64)req->r_data_in.length);
> +	osd_data = &req->r_data_in;
> +	BUG_ON(osd_data->type != CEPH_OSD_DATA_TYPE_PAGES);
> +	num_pages = calc_pages_for((u64)osd_data->alignment,
> +					(u64)osd_data->length);
>   	for (i = 0; i < num_pages; i++) {
> -		struct page *page = req->r_data_in.pages[i];
> +		struct page *page = osd_data->pages[i];
>
>   		if (bytes < (int)PAGE_CACHE_SIZE) {
>   			/* zero (remainder of) page */
> @@ -263,7 +265,7 @@ static void finish_read(struct ceph_osd_request
> *req, struct ceph_msg *msg)
>   		page_cache_release(page);
>   		bytes -= PAGE_CACHE_SIZE;
>   	}
> -	kfree(req->r_data_in.pages);
> +	kfree(osd_data->pages);
>   }
>
>   static void ceph_unlock_page_vector(struct page **pages, int num_pages)
> @@ -557,6 +559,7 @@ static void writepages_finish(struct
> ceph_osd_request *req,
>   {
>   	struct inode *inode = req->r_inode;
>   	struct ceph_inode_info *ci = ceph_inode(inode);
> +	struct ceph_osd_data *osd_data;
>   	unsigned wrote;
>   	struct page *page;
>   	int num_pages;
> @@ -569,9 +572,10 @@ static void writepages_finish(struct
> ceph_osd_request *req,
>   	long writeback_stat;
>   	unsigned issued = ceph_caps_issued(ci);
>
> -	BUG_ON(req->r_data_out.type != CEPH_OSD_DATA_TYPE_PAGES);
> -	num_pages = calc_pages_for((u64)req->r_data_out.alignment,
> -					(u64)req->r_data_out.length);
> +	osd_data = &req->r_data_out;
> +	BUG_ON(osd_data->type != CEPH_OSD_DATA_TYPE_PAGES);
> +	num_pages = calc_pages_for((u64)osd_data->alignment,
> +					(u64)osd_data->length);
>   	if (rc >= 0) {
>   		/*
>   		 * Assume we wrote the pages we originally sent.  The
> @@ -589,7 +593,7 @@ static void writepages_finish(struct
> ceph_osd_request *req,
>
>   	/* clean all pages */
>   	for (i = 0; i < num_pages; i++) {
> -		page = req->r_data_out.pages[i];
> +		page = osd_data->pages[i];
>   		BUG_ON(!page);
>   		WARN_ON(!PageUptodate(page));
>
> @@ -620,12 +624,12 @@ static void writepages_finish(struct
> ceph_osd_request *req,
>   	dout("%p wrote+cleaned %d pages\n", inode, wrote);
>   	ceph_put_wrbuffer_cap_refs(ci, num_pages, snapc);
>
> -	ceph_release_pages(req->r_data_out.pages, num_pages);
> -	if (req->r_data_out.pages_from_pool)
> -		mempool_free(req->r_data_out.pages,
> +	ceph_release_pages(osd_data->pages, num_pages);
> +	if (osd_data->pages_from_pool)
> +		mempool_free(osd_data->pages,
>   			     ceph_sb_to_client(inode->i_sb)->wb_pagevec_pool);
>   	else
> -		kfree(req->r_data_out.pages);
> +		kfree(osd_data->pages);
>   	ceph_osdc_put_request(req);
>   }
>

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

Patch

diff --git a/fs/ceph/addr.c b/fs/ceph/addr.c
index 8507389..c46b9d3 100644
--- a/fs/ceph/addr.c
+++ b/fs/ceph/addr.c
@@ -236,6 +236,7 @@  static int ceph_readpage(struct file *filp, struct
page *page)
 static void finish_read(struct ceph_osd_request *req, struct ceph_msg *msg)
 {
 	struct inode *inode = req->r_inode;
+	struct ceph_osd_data *osd_data;
 	int rc = req->r_result;
 	int bytes = le32_to_cpu(msg->hdr.data_len);