mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-16 08:44:21 +08:00
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:
parent
b9b98716f8
commit
5ba82308ea
@ -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;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user