mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-24 11:34:50 +08:00
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>
This commit is contained in:
parent
e788182fa6
commit
35c7bfbcd4
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user