mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-13 23:34:05 +08:00
libceph: encapsulate out message data setup
Move the code that prepares to write the data portion of a message into its own function. Signed-off-by: Alex Elder <elder@inktank.com> Reviewed-by: Sage Weil <sage@inktank.com>
This commit is contained in:
parent
d59315ca8c
commit
739c905baa
@ -565,6 +565,24 @@ static void con_out_kvec_add(struct ceph_connection *con,
|
|||||||
con->out_kvec_bytes += size;
|
con->out_kvec_bytes += size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void prepare_write_message_data(struct ceph_connection *con)
|
||||||
|
{
|
||||||
|
struct ceph_msg *msg = con->out_msg;
|
||||||
|
|
||||||
|
BUG_ON(!msg);
|
||||||
|
BUG_ON(!msg->hdr.data_len);
|
||||||
|
|
||||||
|
/* initialize page iterator */
|
||||||
|
con->out_msg_pos.page = 0;
|
||||||
|
if (msg->pages)
|
||||||
|
con->out_msg_pos.page_pos = msg->page_alignment;
|
||||||
|
else
|
||||||
|
con->out_msg_pos.page_pos = 0;
|
||||||
|
con->out_msg_pos.data_pos = 0;
|
||||||
|
con->out_msg_pos.did_page_crc = false;
|
||||||
|
con->out_more = 1; /* data + footer will follow */
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Prepare footer for currently outgoing message, and finish things
|
* Prepare footer for currently outgoing message, and finish things
|
||||||
* off. Assumes out_kvec* are already valid.. we just add on to the end.
|
* off. Assumes out_kvec* are already valid.. we just add on to the end.
|
||||||
@ -657,26 +675,17 @@ static void prepare_write_message(struct ceph_connection *con)
|
|||||||
con->out_msg->footer.middle_crc = cpu_to_le32(crc);
|
con->out_msg->footer.middle_crc = cpu_to_le32(crc);
|
||||||
} else
|
} else
|
||||||
con->out_msg->footer.middle_crc = 0;
|
con->out_msg->footer.middle_crc = 0;
|
||||||
con->out_msg->footer.data_crc = 0;
|
dout("%s front_crc %u middle_crc %u\n", __func__,
|
||||||
dout("prepare_write_message front_crc %u data_crc %u\n",
|
|
||||||
le32_to_cpu(con->out_msg->footer.front_crc),
|
le32_to_cpu(con->out_msg->footer.front_crc),
|
||||||
le32_to_cpu(con->out_msg->footer.middle_crc));
|
le32_to_cpu(con->out_msg->footer.middle_crc));
|
||||||
|
|
||||||
/* is there a data payload? */
|
/* is there a data payload? */
|
||||||
if (le32_to_cpu(m->hdr.data_len) > 0) {
|
con->out_msg->footer.data_crc = 0;
|
||||||
/* initialize page iterator */
|
if (m->hdr.data_len)
|
||||||
con->out_msg_pos.page = 0;
|
prepare_write_message_data(con);
|
||||||
if (m->pages)
|
|
||||||
con->out_msg_pos.page_pos = m->page_alignment;
|
|
||||||
else
|
else
|
||||||
con->out_msg_pos.page_pos = 0;
|
|
||||||
con->out_msg_pos.data_pos = 0;
|
|
||||||
con->out_msg_pos.did_page_crc = false;
|
|
||||||
con->out_more = 1; /* data + footer will follow */
|
|
||||||
} else {
|
|
||||||
/* no, queue up footer too and be done */
|
/* no, queue up footer too and be done */
|
||||||
prepare_write_message_footer(con);
|
prepare_write_message_footer(con);
|
||||||
}
|
|
||||||
|
|
||||||
set_bit(WRITE_PENDING, &con->flags);
|
set_bit(WRITE_PENDING, &con->flags);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user