Skip to content

Commit

Permalink
libceph: get rid of zero_page_address
Browse files Browse the repository at this point in the history
There's not a lot of benefit to zero_page_address, which basically
holds a mapping of the zero page through the life of the messenger
module.  Even with our own mapping, the sendpage interface where
it's used may need to kmap() it again.  It's almost certain to
be in low memory anyway.

So stop treating the zero page specially in write_partial_msg_pages()
and just get rid of zero_page_address entirely.

Signed-off-by: Alex Elder <elder@dreamhost.com>
Reviewed-by: Sage Weil <sage@newdream.net>
  • Loading branch information
Alex Elder committed Mar 22, 2012
1 parent e36b13c commit 0cdf9e6
Showing 1 changed file with 2 additions and 9 deletions.
11 changes: 2 additions & 9 deletions net/ceph/messenger.c
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,6 @@ static char addr_str[ADDR_STR_COUNT][MAX_ADDR_STR_LEN];
static atomic_t addr_str_seq = ATOMIC_INIT(0);

static struct page *zero_page; /* used in certain error cases */
static void *zero_page_address; /* kernel virtual addr of zero_page */

const char *ceph_pr_addr(const struct sockaddr_storage *ss)
{
Expand Down Expand Up @@ -111,9 +110,6 @@ void _ceph_msgr_exit(void)
ceph_msgr_wq = NULL;
}

BUG_ON(zero_page_address == NULL);
zero_page_address = NULL;

BUG_ON(zero_page == NULL);
kunmap(zero_page);
page_cache_release(zero_page);
Expand All @@ -126,9 +122,6 @@ int ceph_msgr_init(void)
zero_page = ZERO_PAGE(0);
page_cache_get(zero_page);

BUG_ON(zero_page_address != NULL);
zero_page_address = kmap(zero_page);

ceph_msgr_wq = alloc_workqueue("ceph-msgr", WQ_NON_REENTRANT, 0);
if (ceph_msgr_wq)
return 0;
Expand Down Expand Up @@ -889,7 +882,7 @@ static int write_partial_msg_pages(struct ceph_connection *con)
} else {
page = zero_page;
if (do_datacrc)
kaddr = zero_page_address;
kaddr = kmap(page);
}
len = min_t(int, max_write - con->out_msg_pos.page_pos,
total_max_write);
Expand All @@ -908,7 +901,7 @@ static int write_partial_msg_pages(struct ceph_connection *con)
con->out_msg_pos.page_pos + page_shift,
len, 1);

if (do_datacrc && kaddr != zero_page_address)
if (do_datacrc)
kunmap(page);

if (ret <= 0)
Expand Down

0 comments on commit 0cdf9e6

Please sign in to comment.