aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/block
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/block')
-rw-r--r--drivers/block/drbd/drbd_int.h5
-rw-r--r--drivers/block/drbd/drbd_main.c14
-rw-r--r--drivers/block/drbd/drbd_receiver.c8
-rw-r--r--drivers/block/drbd/drbd_req.c48
-rw-r--r--drivers/block/drbd/drbd_req.h4
-rw-r--r--drivers/block/drbd/drbd_worker.c4
6 files changed, 42 insertions, 41 deletions
diff --git a/drivers/block/drbd/drbd_int.h b/drivers/block/drbd/drbd_int.h
index c6d8200b4b5d..d7678e85031b 100644
--- a/drivers/block/drbd/drbd_int.h
+++ b/drivers/block/drbd/drbd_int.h
@@ -682,6 +682,8 @@ struct drbd_work {
682 drbd_work_cb cb; 682 drbd_work_cb cb;
683}; 683};
684 684
685#include "drbd_interval.h"
686
685struct drbd_request { 687struct drbd_request {
686 struct drbd_work w; 688 struct drbd_work w;
687 struct drbd_conf *mdev; 689 struct drbd_conf *mdev;
@@ -693,8 +695,7 @@ struct drbd_request {
693 struct bio *private_bio; 695 struct bio *private_bio;
694 696
695 struct hlist_node collision; 697 struct hlist_node collision;
696 sector_t sector; 698 struct drbd_interval i;
697 unsigned int size;
698 unsigned int epoch; /* barrier_nr */ 699 unsigned int epoch; /* barrier_nr */
699 700
700 /* barrier_nr: used to check on "completion" whether this req was in 701 /* barrier_nr: used to check on "completion" whether this req was in
diff --git a/drivers/block/drbd/drbd_main.c b/drivers/block/drbd/drbd_main.c
index eecbfc8f8978..a77b4bfd452a 100644
--- a/drivers/block/drbd/drbd_main.c
+++ b/drivers/block/drbd/drbd_main.c
@@ -2711,19 +2711,19 @@ int drbd_send_dblock(struct drbd_conf *mdev, struct drbd_request *req)
2711 dgs = (mdev->agreed_pro_version >= 87 && mdev->integrity_w_tfm) ? 2711 dgs = (mdev->agreed_pro_version >= 87 && mdev->integrity_w_tfm) ?
2712 crypto_hash_digestsize(mdev->integrity_w_tfm) : 0; 2712 crypto_hash_digestsize(mdev->integrity_w_tfm) : 0;
2713 2713
2714 if (req->size <= DRBD_MAX_SIZE_H80_PACKET) { 2714 if (req->i.size <= DRBD_MAX_SIZE_H80_PACKET) {
2715 p.head.h80.magic = cpu_to_be32(DRBD_MAGIC); 2715 p.head.h80.magic = cpu_to_be32(DRBD_MAGIC);
2716 p.head.h80.command = cpu_to_be16(P_DATA); 2716 p.head.h80.command = cpu_to_be16(P_DATA);
2717 p.head.h80.length = 2717 p.head.h80.length =
2718 cpu_to_be16(sizeof(p) - sizeof(union p_header) + dgs + req->size); 2718 cpu_to_be16(sizeof(p) - sizeof(union p_header) + dgs + req->i.size);
2719 } else { 2719 } else {
2720 p.head.h95.magic = cpu_to_be16(DRBD_MAGIC_BIG); 2720 p.head.h95.magic = cpu_to_be16(DRBD_MAGIC_BIG);
2721 p.head.h95.command = cpu_to_be16(P_DATA); 2721 p.head.h95.command = cpu_to_be16(P_DATA);
2722 p.head.h95.length = 2722 p.head.h95.length =
2723 cpu_to_be32(sizeof(p) - sizeof(union p_header) + dgs + req->size); 2723 cpu_to_be32(sizeof(p) - sizeof(union p_header) + dgs + req->i.size);
2724 } 2724 }
2725 2725
2726 p.sector = cpu_to_be64(req->sector); 2726 p.sector = cpu_to_be64(req->i.sector);
2727 p.block_id = (unsigned long)req; 2727 p.block_id = (unsigned long)req;
2728 p.seq_num = cpu_to_be32(req->seq_num = 2728 p.seq_num = cpu_to_be32(req->seq_num =
2729 atomic_add_return(1, &mdev->packet_seq)); 2729 atomic_add_return(1, &mdev->packet_seq));
@@ -2769,7 +2769,7 @@ int drbd_send_dblock(struct drbd_conf *mdev, struct drbd_request *req)
2769 if (memcmp(mdev->int_dig_out, digest, dgs)) { 2769 if (memcmp(mdev->int_dig_out, digest, dgs)) {
2770 dev_warn(DEV, 2770 dev_warn(DEV,
2771 "Digest mismatch, buffer modified by upper layers during write: %llus +%u\n", 2771 "Digest mismatch, buffer modified by upper layers during write: %llus +%u\n",
2772 (unsigned long long)req->sector, req->size); 2772 (unsigned long long)req->i.sector, req->i.size);
2773 } 2773 }
2774 } /* else if (dgs > 64) { 2774 } /* else if (dgs > 64) {
2775 ... Be noisy about digest too large ... 2775 ... Be noisy about digest too large ...
@@ -2837,8 +2837,8 @@ int drbd_send_oos(struct drbd_conf *mdev, struct drbd_request *req)
2837{ 2837{
2838 struct p_block_desc p; 2838 struct p_block_desc p;
2839 2839
2840 p.sector = cpu_to_be64(req->sector); 2840 p.sector = cpu_to_be64(req->i.sector);
2841 p.blksize = cpu_to_be32(req->size); 2841 p.blksize = cpu_to_be32(req->i.size);
2842 2842
2843 return drbd_send_cmd(mdev, USE_DATA_SOCKET, P_OUT_OF_SYNC, &p.head, sizeof(p)); 2843 return drbd_send_cmd(mdev, USE_DATA_SOCKET, P_OUT_OF_SYNC, &p.head, sizeof(p));
2844} 2844}
diff --git a/drivers/block/drbd/drbd_receiver.c b/drivers/block/drbd/drbd_receiver.c
index 8e7875e72609..6bb1a2f2a38d 100644
--- a/drivers/block/drbd/drbd_receiver.c
+++ b/drivers/block/drbd/drbd_receiver.c
@@ -1481,11 +1481,11 @@ find_request(struct drbd_conf *mdev,
1481 hlist_for_each_entry(req, n, slot, collision) { 1481 hlist_for_each_entry(req, n, slot, collision) {
1482 if ((unsigned long)req != (unsigned long)id) 1482 if ((unsigned long)req != (unsigned long)id)
1483 continue; 1483 continue;
1484 if (req->sector != sector) { 1484 if (req->i.sector != sector) {
1485 dev_err(DEV, "%s: found request %lu but it has " 1485 dev_err(DEV, "%s: found request %lu but it has "
1486 "wrong sector (%llus versus %llus)\n", 1486 "wrong sector (%llus versus %llus)\n",
1487 func, (unsigned long)req, 1487 func, (unsigned long)req,
1488 (unsigned long long)req->sector, 1488 (unsigned long long)req->i.sector,
1489 (unsigned long long)sector); 1489 (unsigned long long)sector);
1490 return NULL; 1490 return NULL;
1491 } 1491 }
@@ -1783,7 +1783,7 @@ static int receive_Data(struct drbd_conf *mdev, enum drbd_packets cmd, unsigned
1783 1783
1784 hlist_add_head(&e->collision, ee_hash_slot(mdev, sector)); 1784 hlist_add_head(&e->collision, ee_hash_slot(mdev, sector));
1785 1785
1786#define OVERLAPS overlaps(i->sector, i->size, sector, size) 1786#define OVERLAPS overlaps(i->i.sector, i->i.size, sector, size)
1787 slot = tl_hash_slot(mdev, sector); 1787 slot = tl_hash_slot(mdev, sector);
1788 first = 1; 1788 first = 1;
1789 for (;;) { 1789 for (;;) {
@@ -1800,7 +1800,7 @@ static int receive_Data(struct drbd_conf *mdev, enum drbd_packets cmd, unsigned
1800 " new: %llus +%u; pending: %llus +%u\n", 1800 " new: %llus +%u; pending: %llus +%u\n",
1801 current->comm, current->pid, 1801 current->comm, current->pid,
1802 (unsigned long long)sector, size, 1802 (unsigned long long)sector, size,
1803 (unsigned long long)i->sector, i->size); 1803 (unsigned long long)i->i.sector, i->i.size);
1804 if (i->rq_state & RQ_NET_PENDING) 1804 if (i->rq_state & RQ_NET_PENDING)
1805 ++have_unacked; 1805 ++have_unacked;
1806 ++have_conflict; 1806 ++have_conflict;
diff --git a/drivers/block/drbd/drbd_req.c b/drivers/block/drbd/drbd_req.c
index 3424d675b769..1af11a198b58 100644
--- a/drivers/block/drbd/drbd_req.c
+++ b/drivers/block/drbd/drbd_req.c
@@ -77,10 +77,10 @@ static void _req_is_done(struct drbd_conf *mdev, struct drbd_request *req, const
77 * Other places where we set out-of-sync: 77 * Other places where we set out-of-sync:
78 * READ with local io-error */ 78 * READ with local io-error */
79 if (!(s & RQ_NET_OK) || !(s & RQ_LOCAL_OK)) 79 if (!(s & RQ_NET_OK) || !(s & RQ_LOCAL_OK))
80 drbd_set_out_of_sync(mdev, req->sector, req->size); 80 drbd_set_out_of_sync(mdev, req->i.sector, req->i.size);
81 81
82 if ((s & RQ_NET_OK) && (s & RQ_LOCAL_OK) && (s & RQ_NET_SIS)) 82 if ((s & RQ_NET_OK) && (s & RQ_LOCAL_OK) && (s & RQ_NET_SIS))
83 drbd_set_in_sync(mdev, req->sector, req->size); 83 drbd_set_in_sync(mdev, req->i.sector, req->i.size);
84 84
85 /* one might be tempted to move the drbd_al_complete_io 85 /* one might be tempted to move the drbd_al_complete_io
86 * to the local io completion callback drbd_endio_pri. 86 * to the local io completion callback drbd_endio_pri.
@@ -95,12 +95,12 @@ static void _req_is_done(struct drbd_conf *mdev, struct drbd_request *req, const
95 if (s & RQ_LOCAL_MASK) { 95 if (s & RQ_LOCAL_MASK) {
96 if (get_ldev_if_state(mdev, D_FAILED)) { 96 if (get_ldev_if_state(mdev, D_FAILED)) {
97 if (s & RQ_IN_ACT_LOG) 97 if (s & RQ_IN_ACT_LOG)
98 drbd_al_complete_io(mdev, req->sector); 98 drbd_al_complete_io(mdev, req->i.sector);
99 put_ldev(mdev); 99 put_ldev(mdev);
100 } else if (__ratelimit(&drbd_ratelimit_state)) { 100 } else if (__ratelimit(&drbd_ratelimit_state)) {
101 dev_warn(DEV, "Should have called drbd_al_complete_io(, %llu), " 101 dev_warn(DEV, "Should have called drbd_al_complete_io(, %llu), "
102 "but my Disk seems to have failed :(\n", 102 "but my Disk seems to have failed :(\n",
103 (unsigned long long) req->sector); 103 (unsigned long long) req->i.sector);
104 } 104 }
105 } 105 }
106 } 106 }
@@ -155,20 +155,20 @@ static void _about_to_complete_local_write(struct drbd_conf *mdev,
155 * if we have the ee_hash (two_primaries) and 155 * if we have the ee_hash (two_primaries) and
156 * this has been on the network */ 156 * this has been on the network */
157 if ((s & RQ_NET_DONE) && mdev->ee_hash != NULL) { 157 if ((s & RQ_NET_DONE) && mdev->ee_hash != NULL) {
158 const sector_t sector = req->sector; 158 const sector_t sector = req->i.sector;
159 const int size = req->size; 159 const int size = req->i.size;
160 160
161 /* ASSERT: 161 /* ASSERT:
162 * there must be no conflicting requests, since 162 * there must be no conflicting requests, since
163 * they must have been failed on the spot */ 163 * they must have been failed on the spot */
164#define OVERLAPS overlaps(sector, size, i->sector, i->size) 164#define OVERLAPS overlaps(sector, size, i->i.sector, i->i.size)
165 slot = tl_hash_slot(mdev, sector); 165 slot = tl_hash_slot(mdev, sector);
166 hlist_for_each_entry(i, n, slot, collision) { 166 hlist_for_each_entry(i, n, slot, collision) {
167 if (OVERLAPS) { 167 if (OVERLAPS) {
168 dev_alert(DEV, "LOGIC BUG: completed: %p %llus +%u; " 168 dev_alert(DEV, "LOGIC BUG: completed: %p %llus +%u; "
169 "other: %p %llus +%u\n", 169 "other: %p %llus +%u\n",
170 req, (unsigned long long)sector, size, 170 req, (unsigned long long)sector, size,
171 i, (unsigned long long)i->sector, i->size); 171 i, (unsigned long long)i->i.sector, i->i.size);
172 } 172 }
173 } 173 }
174 174
@@ -186,7 +186,7 @@ static void _about_to_complete_local_write(struct drbd_conf *mdev,
186 * we just have to do a wake_up. */ 186 * we just have to do a wake_up. */
187#undef OVERLAPS 187#undef OVERLAPS
188#define OVERLAPS overlaps(sector, size, e->sector, e->size) 188#define OVERLAPS overlaps(sector, size, e->sector, e->size)
189 slot = ee_hash_slot(mdev, req->sector); 189 slot = ee_hash_slot(mdev, req->i.sector);
190 hlist_for_each_entry(e, n, slot, collision) { 190 hlist_for_each_entry(e, n, slot, collision) {
191 if (OVERLAPS) { 191 if (OVERLAPS) {
192 wake_up(&mdev->misc_wait); 192 wake_up(&mdev->misc_wait);
@@ -322,8 +322,8 @@ static void _req_may_be_done_not_susp(struct drbd_request *req, struct bio_and_e
322static int _req_conflicts(struct drbd_request *req) 322static int _req_conflicts(struct drbd_request *req)
323{ 323{
324 struct drbd_conf *mdev = req->mdev; 324 struct drbd_conf *mdev = req->mdev;
325 const sector_t sector = req->sector; 325 const sector_t sector = req->i.sector;
326 const int size = req->size; 326 const int size = req->i.size;
327 struct drbd_request *i; 327 struct drbd_request *i;
328 struct drbd_epoch_entry *e; 328 struct drbd_epoch_entry *e;
329 struct hlist_node *n; 329 struct hlist_node *n;
@@ -339,7 +339,7 @@ static int _req_conflicts(struct drbd_request *req)
339 goto out_no_conflict; 339 goto out_no_conflict;
340 BUG_ON(mdev->tl_hash == NULL); 340 BUG_ON(mdev->tl_hash == NULL);
341 341
342#define OVERLAPS overlaps(i->sector, i->size, sector, size) 342#define OVERLAPS overlaps(i->i.sector, i->i.size, sector, size)
343 slot = tl_hash_slot(mdev, sector); 343 slot = tl_hash_slot(mdev, sector);
344 hlist_for_each_entry(i, n, slot, collision) { 344 hlist_for_each_entry(i, n, slot, collision) {
345 if (OVERLAPS) { 345 if (OVERLAPS) {
@@ -348,7 +348,7 @@ static int _req_conflicts(struct drbd_request *req)
348 "pending: %llus +%u\n", 348 "pending: %llus +%u\n",
349 current->comm, current->pid, 349 current->comm, current->pid,
350 (unsigned long long)sector, size, 350 (unsigned long long)sector, size,
351 (unsigned long long)i->sector, i->size); 351 (unsigned long long)i->i.sector, i->i.size);
352 goto out_conflict; 352 goto out_conflict;
353 } 353 }
354 } 354 }
@@ -430,9 +430,9 @@ int __req_mod(struct drbd_request *req, enum drbd_req_event what,
430 430
431 case completed_ok: 431 case completed_ok:
432 if (bio_data_dir(req->master_bio) == WRITE) 432 if (bio_data_dir(req->master_bio) == WRITE)
433 mdev->writ_cnt += req->size>>9; 433 mdev->writ_cnt += req->i.size >> 9;
434 else 434 else
435 mdev->read_cnt += req->size>>9; 435 mdev->read_cnt += req->i.size >> 9;
436 436
437 req->rq_state |= (RQ_LOCAL_COMPLETED|RQ_LOCAL_OK); 437 req->rq_state |= (RQ_LOCAL_COMPLETED|RQ_LOCAL_OK);
438 req->rq_state &= ~RQ_LOCAL_PENDING; 438 req->rq_state &= ~RQ_LOCAL_PENDING;
@@ -459,7 +459,7 @@ int __req_mod(struct drbd_request *req, enum drbd_req_event what,
459 break; 459 break;
460 460
461 case read_completed_with_error: 461 case read_completed_with_error:
462 drbd_set_out_of_sync(mdev, req->sector, req->size); 462 drbd_set_out_of_sync(mdev, req->i.sector, req->i.size);
463 463
464 req->rq_state |= RQ_LOCAL_COMPLETED; 464 req->rq_state |= RQ_LOCAL_COMPLETED;
465 req->rq_state &= ~RQ_LOCAL_PENDING; 465 req->rq_state &= ~RQ_LOCAL_PENDING;
@@ -491,7 +491,7 @@ int __req_mod(struct drbd_request *req, enum drbd_req_event what,
491 491
492 /* so we can verify the handle in the answer packet 492 /* so we can verify the handle in the answer packet
493 * corresponding hlist_del is in _req_may_be_done() */ 493 * corresponding hlist_del is in _req_may_be_done() */
494 hlist_add_head(&req->collision, ar_hash_slot(mdev, req->sector)); 494 hlist_add_head(&req->collision, ar_hash_slot(mdev, req->i.sector));
495 495
496 set_bit(UNPLUG_REMOTE, &mdev->flags); 496 set_bit(UNPLUG_REMOTE, &mdev->flags);
497 497
@@ -507,7 +507,7 @@ int __req_mod(struct drbd_request *req, enum drbd_req_event what,
507 /* assert something? */ 507 /* assert something? */
508 /* from drbd_make_request_common only */ 508 /* from drbd_make_request_common only */
509 509
510 hlist_add_head(&req->collision, tl_hash_slot(mdev, req->sector)); 510 hlist_add_head(&req->collision, tl_hash_slot(mdev, req->i.sector));
511 /* corresponding hlist_del is in _req_may_be_done() */ 511 /* corresponding hlist_del is in _req_may_be_done() */
512 512
513 /* NOTE 513 /* NOTE
@@ -572,7 +572,7 @@ int __req_mod(struct drbd_request *req, enum drbd_req_event what,
572 case handed_over_to_network: 572 case handed_over_to_network:
573 /* assert something? */ 573 /* assert something? */
574 if (bio_data_dir(req->master_bio) == WRITE) 574 if (bio_data_dir(req->master_bio) == WRITE)
575 atomic_add(req->size>>9, &mdev->ap_in_flight); 575 atomic_add(req->i.size >> 9, &mdev->ap_in_flight);
576 576
577 if (bio_data_dir(req->master_bio) == WRITE && 577 if (bio_data_dir(req->master_bio) == WRITE &&
578 mdev->net_conf->wire_protocol == DRBD_PROT_A) { 578 mdev->net_conf->wire_protocol == DRBD_PROT_A) {
@@ -608,7 +608,7 @@ int __req_mod(struct drbd_request *req, enum drbd_req_event what,
608 req->rq_state &= ~(RQ_NET_OK|RQ_NET_PENDING); 608 req->rq_state &= ~(RQ_NET_OK|RQ_NET_PENDING);
609 req->rq_state |= RQ_NET_DONE; 609 req->rq_state |= RQ_NET_DONE;
610 if (req->rq_state & RQ_NET_SENT && req->rq_state & RQ_WRITE) 610 if (req->rq_state & RQ_NET_SENT && req->rq_state & RQ_WRITE)
611 atomic_sub(req->size>>9, &mdev->ap_in_flight); 611 atomic_sub(req->i.size >> 9, &mdev->ap_in_flight);
612 612
613 /* if it is still queued, we may not complete it here. 613 /* if it is still queued, we may not complete it here.
614 * it will be canceled soon. */ 614 * it will be canceled soon. */
@@ -625,7 +625,7 @@ int __req_mod(struct drbd_request *req, enum drbd_req_event what,
625 if (what == conflict_discarded_by_peer) 625 if (what == conflict_discarded_by_peer)
626 dev_alert(DEV, "Got DiscardAck packet %llus +%u!" 626 dev_alert(DEV, "Got DiscardAck packet %llus +%u!"
627 " DRBD is not a random data generator!\n", 627 " DRBD is not a random data generator!\n",
628 (unsigned long long)req->sector, req->size); 628 (unsigned long long)req->i.sector, req->i.size);
629 req->rq_state |= RQ_NET_DONE; 629 req->rq_state |= RQ_NET_DONE;
630 /* fall through */ 630 /* fall through */
631 case write_acked_by_peer: 631 case write_acked_by_peer:
@@ -647,7 +647,7 @@ int __req_mod(struct drbd_request *req, enum drbd_req_event what,
647 req->rq_state |= RQ_NET_OK; 647 req->rq_state |= RQ_NET_OK;
648 D_ASSERT(req->rq_state & RQ_NET_PENDING); 648 D_ASSERT(req->rq_state & RQ_NET_PENDING);
649 dec_ap_pending(mdev); 649 dec_ap_pending(mdev);
650 atomic_sub(req->size>>9, &mdev->ap_in_flight); 650 atomic_sub(req->i.size >> 9, &mdev->ap_in_flight);
651 req->rq_state &= ~RQ_NET_PENDING; 651 req->rq_state &= ~RQ_NET_PENDING;
652 _req_may_be_done_not_susp(req, m); 652 _req_may_be_done_not_susp(req, m);
653 break; 653 break;
@@ -656,7 +656,7 @@ int __req_mod(struct drbd_request *req, enum drbd_req_event what,
656 /* assert something? */ 656 /* assert something? */
657 if (req->rq_state & RQ_NET_PENDING) { 657 if (req->rq_state & RQ_NET_PENDING) {
658 dec_ap_pending(mdev); 658 dec_ap_pending(mdev);
659 atomic_sub(req->size>>9, &mdev->ap_in_flight); 659 atomic_sub(req->i.size >> 9, &mdev->ap_in_flight);
660 } 660 }
661 req->rq_state &= ~(RQ_NET_OK|RQ_NET_PENDING); 661 req->rq_state &= ~(RQ_NET_OK|RQ_NET_PENDING);
662 662
@@ -715,7 +715,7 @@ int __req_mod(struct drbd_request *req, enum drbd_req_event what,
715 if ((req->rq_state & RQ_NET_MASK) != 0) { 715 if ((req->rq_state & RQ_NET_MASK) != 0) {
716 req->rq_state |= RQ_NET_DONE; 716 req->rq_state |= RQ_NET_DONE;
717 if (mdev->net_conf->wire_protocol == DRBD_PROT_A) 717 if (mdev->net_conf->wire_protocol == DRBD_PROT_A)
718 atomic_sub(req->size>>9, &mdev->ap_in_flight); 718 atomic_sub(req->i.size >> 9, &mdev->ap_in_flight);
719 } 719 }
720 _req_may_be_done(req, m); /* Allowed while state.susp */ 720 _req_may_be_done(req, m); /* Allowed while state.susp */
721 break; 721 break;
diff --git a/drivers/block/drbd/drbd_req.h b/drivers/block/drbd/drbd_req.h
index a773636cca9d..2520186c4c2b 100644
--- a/drivers/block/drbd/drbd_req.h
+++ b/drivers/block/drbd/drbd_req.h
@@ -272,8 +272,8 @@ static inline struct drbd_request *drbd_req_new(struct drbd_conf *mdev,
272 req->mdev = mdev; 272 req->mdev = mdev;
273 req->master_bio = bio_src; 273 req->master_bio = bio_src;
274 req->epoch = 0; 274 req->epoch = 0;
275 req->sector = bio_src->bi_sector; 275 req->i.sector = bio_src->bi_sector;
276 req->size = bio_src->bi_size; 276 req->i.size = bio_src->bi_size;
277 INIT_HLIST_NODE(&req->collision); 277 INIT_HLIST_NODE(&req->collision);
278 INIT_LIST_HEAD(&req->tl_requests); 278 INIT_LIST_HEAD(&req->tl_requests);
279 INIT_LIST_HEAD(&req->w.list); 279 INIT_LIST_HEAD(&req->w.list);
diff --git a/drivers/block/drbd/drbd_worker.c b/drivers/block/drbd/drbd_worker.c
index 43a9fefd29b8..a1eff6e9c0e7 100644
--- a/drivers/block/drbd/drbd_worker.c
+++ b/drivers/block/drbd/drbd_worker.c
@@ -1288,7 +1288,7 @@ int w_send_read_req(struct drbd_conf *mdev, struct drbd_work *w, int cancel)
1288 return 1; 1288 return 1;
1289 } 1289 }
1290 1290
1291 ok = drbd_send_drequest(mdev, P_DATA_REQUEST, req->sector, req->size, 1291 ok = drbd_send_drequest(mdev, P_DATA_REQUEST, req->i.sector, req->i.size,
1292 (unsigned long)req); 1292 (unsigned long)req);
1293 1293
1294 if (!ok) { 1294 if (!ok) {
@@ -1307,7 +1307,7 @@ int w_restart_disk_io(struct drbd_conf *mdev, struct drbd_work *w, int cancel)
1307 struct drbd_request *req = container_of(w, struct drbd_request, w); 1307 struct drbd_request *req = container_of(w, struct drbd_request, w);
1308 1308
1309 if (bio_data_dir(req->master_bio) == WRITE && req->rq_state & RQ_IN_ACT_LOG) 1309 if (bio_data_dir(req->master_bio) == WRITE && req->rq_state & RQ_IN_ACT_LOG)
1310 drbd_al_begin_io(mdev, req->sector); 1310 drbd_al_begin_io(mdev, req->i.sector);
1311 /* Calling drbd_al_begin_io() out of the worker might deadlocks 1311 /* Calling drbd_al_begin_io() out of the worker might deadlocks
1312 theoretically. Practically it can not deadlock, since this is 1312 theoretically. Practically it can not deadlock, since this is
1313 only used when unfreezing IOs. All the extents of the requests 1313 only used when unfreezing IOs. All the extents of the requests