drbd: factored drbd_req_make_private_bio() out of drbd_req_new()

Preparing tl_thaw_dio()

Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com>
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
This commit is contained in:
Philipp Reisner 2010-06-10 13:30:36 +02:00
parent b9b98716f8
commit 5ba82308ea

View File

@ -257,30 +257,36 @@ static inline struct drbd_request *_ar_id_to_req(struct drbd_conf *mdev,
return NULL; return NULL;
} }
static inline void drbd_req_make_private_bio(struct drbd_request *req, struct bio *bio_src)
{
struct bio *bio;
bio = bio_clone(bio_src, GFP_NOIO); /* XXX cannot fail?? */
req->private_bio = bio;
bio->bi_private = req;
bio->bi_end_io = drbd_endio_pri;
bio->bi_next = NULL;
}
static inline struct drbd_request *drbd_req_new(struct drbd_conf *mdev, static inline struct drbd_request *drbd_req_new(struct drbd_conf *mdev,
struct bio *bio_src) struct bio *bio_src)
{ {
struct bio *bio;
struct drbd_request *req = struct drbd_request *req =
mempool_alloc(drbd_request_mempool, GFP_NOIO); mempool_alloc(drbd_request_mempool, GFP_NOIO);
if (likely(req)) { if (likely(req)) {
bio = bio_clone(bio_src, GFP_NOIO); /* XXX cannot fail?? */ drbd_req_make_private_bio(req, bio_src);
req->rq_state = bio_data_dir(bio_src) == WRITE ? RQ_WRITE : 0; req->rq_state = bio_data_dir(bio_src) == WRITE ? RQ_WRITE : 0;
req->mdev = mdev; req->mdev = mdev;
req->master_bio = bio_src; req->master_bio = bio_src;
req->private_bio = bio;
req->epoch = 0; req->epoch = 0;
req->sector = bio->bi_sector; req->sector = bio_src->bi_sector;
req->size = bio->bi_size; req->size = bio_src->bi_size;
req->start_time = jiffies; req->start_time = jiffies;
INIT_HLIST_NODE(&req->colision); INIT_HLIST_NODE(&req->colision);
INIT_LIST_HEAD(&req->tl_requests); INIT_LIST_HEAD(&req->tl_requests);
INIT_LIST_HEAD(&req->w.list); INIT_LIST_HEAD(&req->w.list);
bio->bi_private = req;
bio->bi_end_io = drbd_endio_pri;
bio->bi_next = NULL;
} }
return req; return req;
} }