aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/block/drbd/drbd_receiver.c
diff options
context:
space:
mode:
authorLars Ellenberg <lars.ellenberg@linbit.com>2012-08-01 06:33:51 -0400
committerPhilipp Reisner <philipp.reisner@linbit.com>2012-11-09 08:05:49 -0500
commitd4dabbe22d38752674c582e5bb40716a72397355 (patch)
tree51a89e48ba52a80fa93b3c37390e5b772a2b7bb8 /drivers/block/drbd/drbd_receiver.c
parent232fd3f4a01f45d5402c2e03f7c8815d80bec25b (diff)
drbd: disambiguation, s/P_DISCARD_WRITE/P_SUPERSEDED/
To avoid confusion with REQ_DISCARD aka TRIM, rename our "discard concurrent write acks" from P_DISCARD_WRITE to P_SUPERSEDED. At the same time, rename the drbd request event DISCARD_WRITE to CONFLICT_RESOLVED. It already triggers both successful completion or restart of the request, depending on our RQ_POSTPONED flag. Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com> Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
Diffstat (limited to 'drivers/block/drbd/drbd_receiver.c')
-rw-r--r--drivers/block/drbd/drbd_receiver.c33
1 files changed, 17 insertions, 16 deletions
diff --git a/drivers/block/drbd/drbd_receiver.c b/drivers/block/drbd/drbd_receiver.c
index d507700df85c..afab66bbc31f 100644
--- a/drivers/block/drbd/drbd_receiver.c
+++ b/drivers/block/drbd/drbd_receiver.c
@@ -425,7 +425,7 @@ static int drbd_finish_peer_reqs(struct drbd_conf *mdev)
425 drbd_free_net_peer_req(mdev, peer_req); 425 drbd_free_net_peer_req(mdev, peer_req);
426 426
427 /* possible callbacks here: 427 /* possible callbacks here:
428 * e_end_block, and e_end_resync_block, e_send_discard_write. 428 * e_end_block, and e_end_resync_block, e_send_superseded.
429 * all ignore the last argument. 429 * all ignore the last argument.
430 */ 430 */
431 list_for_each_entry_safe(peer_req, t, &work_list, w.list) { 431 list_for_each_entry_safe(peer_req, t, &work_list, w.list) {
@@ -1803,7 +1803,7 @@ static void restart_conflicting_writes(struct drbd_conf *mdev,
1803 continue; 1803 continue;
1804 /* as it is RQ_POSTPONED, this will cause it to 1804 /* as it is RQ_POSTPONED, this will cause it to
1805 * be queued on the retry workqueue. */ 1805 * be queued on the retry workqueue. */
1806 __req_mod(req, DISCARD_WRITE, NULL); 1806 __req_mod(req, CONFLICT_RESOLVED, NULL);
1807 } 1807 }
1808} 1808}
1809 1809
@@ -1864,9 +1864,9 @@ static int e_send_ack(struct drbd_work *w, enum drbd_packet ack)
1864 return err; 1864 return err;
1865} 1865}
1866 1866
1867static int e_send_discard_write(struct drbd_work *w, int unused) 1867static int e_send_superseded(struct drbd_work *w, int unused)
1868{ 1868{
1869 return e_send_ack(w, P_DISCARD_WRITE); 1869 return e_send_ack(w, P_SUPERSEDED);
1870} 1870}
1871 1871
1872static int e_send_retry_write(struct drbd_work *w, int unused) 1872static int e_send_retry_write(struct drbd_work *w, int unused)
@@ -1874,7 +1874,7 @@ static int e_send_retry_write(struct drbd_work *w, int unused)
1874 struct drbd_tconn *tconn = w->mdev->tconn; 1874 struct drbd_tconn *tconn = w->mdev->tconn;
1875 1875
1876 return e_send_ack(w, tconn->agreed_pro_version >= 100 ? 1876 return e_send_ack(w, tconn->agreed_pro_version >= 100 ?
1877 P_RETRY_WRITE : P_DISCARD_WRITE); 1877 P_RETRY_WRITE : P_SUPERSEDED);
1878} 1878}
1879 1879
1880static bool seq_greater(u32 a, u32 b) 1880static bool seq_greater(u32 a, u32 b)
@@ -2082,11 +2082,11 @@ static int handle_write_conflicts(struct drbd_conf *mdev,
2082 if (resolve_conflicts) { 2082 if (resolve_conflicts) {
2083 /* 2083 /*
2084 * If the peer request is fully contained within the 2084 * If the peer request is fully contained within the
2085 * overlapping request, it can be discarded; otherwise, 2085 * overlapping request, it can be considered overwritten
2086 * it will be retried once all overlapping requests 2086 * and thus superseded; otherwise, it will be retried
2087 * have completed. 2087 * once all overlapping requests have completed.
2088 */ 2088 */
2089 bool discard = i->sector <= sector && i->sector + 2089 bool superseded = i->sector <= sector && i->sector +
2090 (i->size >> 9) >= sector + (size >> 9); 2090 (i->size >> 9) >= sector + (size >> 9);
2091 2091
2092 if (!equal) 2092 if (!equal)
@@ -2095,10 +2095,10 @@ static int handle_write_conflicts(struct drbd_conf *mdev,
2095 "assuming %s came first\n", 2095 "assuming %s came first\n",
2096 (unsigned long long)i->sector, i->size, 2096 (unsigned long long)i->sector, i->size,
2097 (unsigned long long)sector, size, 2097 (unsigned long long)sector, size,
2098 discard ? "local" : "remote"); 2098 superseded ? "local" : "remote");
2099 2099
2100 inc_unacked(mdev); 2100 inc_unacked(mdev);
2101 peer_req->w.cb = discard ? e_send_discard_write : 2101 peer_req->w.cb = superseded ? e_send_superseded :
2102 e_send_retry_write; 2102 e_send_retry_write;
2103 list_add_tail(&peer_req->w.list, &mdev->done_ee); 2103 list_add_tail(&peer_req->w.list, &mdev->done_ee);
2104 wake_asender(mdev->tconn); 2104 wake_asender(mdev->tconn);
@@ -2119,8 +2119,9 @@ static int handle_write_conflicts(struct drbd_conf *mdev,
2119 !(req->rq_state & RQ_POSTPONED)) { 2119 !(req->rq_state & RQ_POSTPONED)) {
2120 /* 2120 /*
2121 * Wait for the node with the discard flag to 2121 * Wait for the node with the discard flag to
2122 * decide if this request will be discarded or 2122 * decide if this request has been superseded
2123 * retried. Requests that are discarded will 2123 * or needs to be retried.
2124 * Requests that have been superseded will
2124 * disappear from the write_requests tree. 2125 * disappear from the write_requests tree.
2125 * 2126 *
2126 * In addition, wait for the conflicting 2127 * In addition, wait for the conflicting
@@ -4994,8 +4995,8 @@ static int got_BlockAck(struct drbd_tconn *tconn, struct packet_info *pi)
4994 case P_RECV_ACK: 4995 case P_RECV_ACK:
4995 what = RECV_ACKED_BY_PEER; 4996 what = RECV_ACKED_BY_PEER;
4996 break; 4997 break;
4997 case P_DISCARD_WRITE: 4998 case P_SUPERSEDED:
4998 what = DISCARD_WRITE; 4999 what = CONFLICT_RESOLVED;
4999 break; 5000 break;
5000 case P_RETRY_WRITE: 5001 case P_RETRY_WRITE:
5001 what = POSTPONE_WRITE; 5002 what = POSTPONE_WRITE;
@@ -5220,7 +5221,7 @@ static struct asender_cmd asender_tbl[] = {
5220 [P_RECV_ACK] = { sizeof(struct p_block_ack), got_BlockAck }, 5221 [P_RECV_ACK] = { sizeof(struct p_block_ack), got_BlockAck },
5221 [P_WRITE_ACK] = { sizeof(struct p_block_ack), got_BlockAck }, 5222 [P_WRITE_ACK] = { sizeof(struct p_block_ack), got_BlockAck },
5222 [P_RS_WRITE_ACK] = { sizeof(struct p_block_ack), got_BlockAck }, 5223 [P_RS_WRITE_ACK] = { sizeof(struct p_block_ack), got_BlockAck },
5223 [P_DISCARD_WRITE] = { sizeof(struct p_block_ack), got_BlockAck }, 5224 [P_SUPERSEDED] = { sizeof(struct p_block_ack), got_BlockAck },
5224 [P_NEG_ACK] = { sizeof(struct p_block_ack), got_NegAck }, 5225 [P_NEG_ACK] = { sizeof(struct p_block_ack), got_NegAck },
5225 [P_NEG_DREPLY] = { sizeof(struct p_block_ack), got_NegDReply }, 5226 [P_NEG_DREPLY] = { sizeof(struct p_block_ack), got_NegDReply },
5226 [P_NEG_RS_DREPLY] = { sizeof(struct p_block_ack), got_NegRSDReply }, 5227 [P_NEG_RS_DREPLY] = { sizeof(struct p_block_ack), got_NegRSDReply },