diff options
author | Alex Elder <elder@inktank.com> | 2013-03-06 23:39:38 -0600 |
---|---|---|
committer | Sage Weil <sage@inktank.com> | 2013-05-01 21:16:34 -0700 |
commit | 35c7bfbcd4fabded090e5ab316a1cbf053a0a980 (patch) | |
tree | dcb5139eebfc6a7e77f582d7f1eb0618e4885377 /net/ceph/messenger.c | |
parent | e788182fa6c1a400076278a75d0efa0a8a08e4ec (diff) | |
download | blackbird-op-linux-35c7bfbcd4fabded090e5ab316a1cbf053a0a980.tar.gz blackbird-op-linux-35c7bfbcd4fabded090e5ab316a1cbf053a0a980.zip |
libceph: advance pagelist with list_rotate_left()
While processing an outgoing pagelist (either the data pagelist or
trail) in a ceph message, the messenger cycles through each of the
pages on the list. This is accomplished in out_msg_pos_next(), if
the end of the first page on the list is reached, the first page is
moved to the end of the list.
There is a list operation, list_rotate_left(), which performs
exactly this operation, and by using it, what's really going on
becomes more obvious.
So replace these two list_move_tail() calls with list_rotate_left().
Signed-off-by: Alex Elder <elder@inktank.com>
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
Diffstat (limited to 'net/ceph/messenger.c')
-rw-r--r-- | net/ceph/messenger.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/net/ceph/messenger.c b/net/ceph/messenger.c index fb5f6e7d57a3..2734d0337f95 100644 --- a/net/ceph/messenger.c +++ b/net/ceph/messenger.c @@ -1041,11 +1041,9 @@ static void out_msg_pos_next(struct ceph_connection *con, struct page *page, con->out_msg_pos.page++; con->out_msg_pos.did_page_crc = false; if (in_trail) - list_move_tail(&page->lru, - &msg->trail->head); + list_rotate_left(&msg->trail->head); else if (msg->pagelist) - list_move_tail(&page->lru, - &msg->pagelist->head); + list_rotate_left(&msg->pagelist->head); #ifdef CONFIG_BLOCK else if (msg->bio) iter_bio_next(&msg->bio_iter, &msg->bio_seg); |