libceph: set page info with byte length
When setting page array information for message data, provide the
byte length rather than the page count ceph_msg_data_set_pages().
Signed-off-by: Alex Elder <elder@inktank.com>
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
diff --git a/net/ceph/osd_client.c b/net/ceph/osd_client.c
index a09d571..f29beda 100644
--- a/net/ceph/osd_client.c
+++ b/net/ceph/osd_client.c
@@ -1758,12 +1758,9 @@
osd_data = &req->r_data_out;
if (osd_data->type == CEPH_OSD_DATA_TYPE_PAGES) {
- unsigned int page_count;
-
- page_count = calc_pages_for((u64)osd_data->alignment,
- (u64)osd_data->length);
+ BUG_ON(osd_data->length > (u64) SIZE_MAX);
ceph_msg_data_set_pages(req->r_request, osd_data->pages,
- page_count, osd_data->alignment);
+ osd_data->length, osd_data->alignment);
#ifdef CONFIG_BLOCK
} else if (osd_data->type == CEPH_OSD_DATA_TYPE_BIO) {
req->r_request->bio = osd_data->bio;
@@ -2119,8 +2116,6 @@
struct ceph_osd_data *osd_data = &req->r_data_in;
if (osd_data->type == CEPH_OSD_DATA_TYPE_PAGES) {
- unsigned int page_count;
-
if (osd_data->pages &&
unlikely(osd_data->length < data_len)) {
@@ -2132,10 +2127,9 @@
m = NULL;
goto out;
}
- page_count = calc_pages_for((u64)osd_data->alignment,
- (u64)osd_data->length);
+ BUG_ON(osd_data->length > (u64) SIZE_MAX);
ceph_msg_data_set_pages(m, osd_data->pages,
- osd_data->num_pages, osd_data->alignment);
+ osd_data->length, osd_data->alignment);
#ifdef CONFIG_BLOCK
} else if (osd_data->type == CEPH_OSD_DATA_TYPE_BIO) {
m->bio = osd_data->bio;