diff options
-rw-r--r-- | drivers/block/rbd.c | 8 | ||||
-rw-r--r-- | include/linux/ceph/osd_client.h | 4 | ||||
-rw-r--r-- | net/ceph/osd_client.c | 15 |
3 files changed, 9 insertions, 18 deletions
diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c index bdbaa4cfd9d3..d1445df6398a 100644 --- a/drivers/block/rbd.c +++ b/drivers/block/rbd.c | |||
@@ -1148,14 +1148,18 @@ static int rbd_do_request(struct request *rq, | |||
1148 | (unsigned long long) len, coll, coll_index); | 1148 | (unsigned long long) len, coll, coll_index); |
1149 | 1149 | ||
1150 | osdc = &rbd_dev->rbd_client->client->osdc; | 1150 | osdc = &rbd_dev->rbd_client->client->osdc; |
1151 | osd_req = ceph_osdc_alloc_request(osdc, snapc, ops, | 1151 | osd_req = ceph_osdc_alloc_request(osdc, snapc, ops, false, GFP_NOIO); |
1152 | false, GFP_NOIO, pages, bio); | ||
1153 | if (!osd_req) { | 1152 | if (!osd_req) { |
1154 | ret = -ENOMEM; | 1153 | ret = -ENOMEM; |
1155 | goto done_pages; | 1154 | goto done_pages; |
1156 | } | 1155 | } |
1157 | 1156 | ||
1158 | osd_req->r_flags = flags; | 1157 | osd_req->r_flags = flags; |
1158 | osd_req->r_pages = pages; | ||
1159 | if (bio) { | ||
1160 | osd_req->r_bio = bio; | ||
1161 | bio_get(osd_req->r_bio); | ||
1162 | } | ||
1159 | osd_req->r_callback = rbd_cb; | 1163 | osd_req->r_callback = rbd_cb; |
1160 | 1164 | ||
1161 | rbd_req->rq = rq; | 1165 | rbd_req->rq = rq; |
diff --git a/include/linux/ceph/osd_client.h b/include/linux/ceph/osd_client.h index 6ddda5bbd1a6..75f56d372d44 100644 --- a/include/linux/ceph/osd_client.h +++ b/include/linux/ceph/osd_client.h | |||
@@ -216,9 +216,7 @@ extern struct ceph_osd_request *ceph_osdc_alloc_request(struct ceph_osd_client * | |||
216 | struct ceph_snap_context *snapc, | 216 | struct ceph_snap_context *snapc, |
217 | struct ceph_osd_req_op *ops, | 217 | struct ceph_osd_req_op *ops, |
218 | bool use_mempool, | 218 | bool use_mempool, |
219 | gfp_t gfp_flags, | 219 | gfp_t gfp_flags); |
220 | struct page **pages, | ||
221 | struct bio *bio); | ||
222 | 220 | ||
223 | extern void ceph_osdc_build_request(struct ceph_osd_request *req, | 221 | extern void ceph_osdc_build_request(struct ceph_osd_request *req, |
224 | u64 off, u64 len, | 222 | u64 off, u64 len, |
diff --git a/net/ceph/osd_client.c b/net/ceph/osd_client.c index 77ce1edaa07d..bdc3bb12bfd5 100644 --- a/net/ceph/osd_client.c +++ b/net/ceph/osd_client.c | |||
@@ -174,9 +174,7 @@ struct ceph_osd_request *ceph_osdc_alloc_request(struct ceph_osd_client *osdc, | |||
174 | struct ceph_snap_context *snapc, | 174 | struct ceph_snap_context *snapc, |
175 | struct ceph_osd_req_op *ops, | 175 | struct ceph_osd_req_op *ops, |
176 | bool use_mempool, | 176 | bool use_mempool, |
177 | gfp_t gfp_flags, | 177 | gfp_t gfp_flags) |
178 | struct page **pages, | ||
179 | struct bio *bio) | ||
180 | { | 178 | { |
181 | struct ceph_osd_request *req; | 179 | struct ceph_osd_request *req; |
182 | struct ceph_msg *msg; | 180 | struct ceph_msg *msg; |
@@ -237,13 +235,6 @@ struct ceph_osd_request *ceph_osdc_alloc_request(struct ceph_osd_client *osdc, | |||
237 | memset(msg->front.iov_base, 0, msg->front.iov_len); | 235 | memset(msg->front.iov_base, 0, msg->front.iov_len); |
238 | 236 | ||
239 | req->r_request = msg; | 237 | req->r_request = msg; |
240 | req->r_pages = pages; | ||
241 | #ifdef CONFIG_BLOCK | ||
242 | if (bio) { | ||
243 | req->r_bio = bio; | ||
244 | bio_get(req->r_bio); | ||
245 | } | ||
246 | #endif | ||
247 | 238 | ||
248 | return req; | 239 | return req; |
249 | } | 240 | } |
@@ -439,9 +430,7 @@ struct ceph_osd_request *ceph_osdc_new_request(struct ceph_osd_client *osdc, | |||
439 | } else | 430 | } else |
440 | ops[1].op = 0; | 431 | ops[1].op = 0; |
441 | 432 | ||
442 | req = ceph_osdc_alloc_request(osdc, snapc, ops, | 433 | req = ceph_osdc_alloc_request(osdc, snapc, ops, use_mempool, GFP_NOFS); |
443 | use_mempool, | ||
444 | GFP_NOFS, NULL, NULL); | ||
445 | if (!req) | 434 | if (!req) |
446 | return ERR_PTR(-ENOMEM); | 435 | return ERR_PTR(-ENOMEM); |
447 | req->r_flags = flags; | 436 | req->r_flags = flags; |