diff options
author | Philipp Reisner <philipp.reisner@linbit.com> | 2010-08-20 07:36:10 -0400 |
---|---|---|
committer | Philipp Reisner <philipp.reisner@linbit.com> | 2010-10-14 12:38:23 -0400 |
commit | 0b70a13dac014ec9274640b9e945bde493ba365e (patch) | |
tree | cf771e2f8018c0b59bc14fbf00c5c9cdc9caed7c /drivers/block/drbd/drbd_receiver.c | |
parent | 204bba9965c4cc175bf5bc65ddd19889e9085c72 (diff) |
drbd: Sending of big packets, for payloads from 64KByte to 4GByte
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.c | 94 |
1 files changed, 47 insertions, 47 deletions
diff --git a/drivers/block/drbd/drbd_receiver.c b/drivers/block/drbd/drbd_receiver.c index 591a171291d9..9b3321e2c3cd 100644 --- a/drivers/block/drbd/drbd_receiver.c +++ b/drivers/block/drbd/drbd_receiver.c | |||
@@ -720,14 +720,14 @@ out: | |||
720 | static int drbd_send_fp(struct drbd_conf *mdev, | 720 | static int drbd_send_fp(struct drbd_conf *mdev, |
721 | struct socket *sock, enum drbd_packets cmd) | 721 | struct socket *sock, enum drbd_packets cmd) |
722 | { | 722 | { |
723 | struct p_header *h = (struct p_header *) &mdev->data.sbuf.header; | 723 | struct p_header80 *h = (struct p_header80 *) &mdev->data.sbuf.header; |
724 | 724 | ||
725 | return _drbd_send_cmd(mdev, sock, cmd, h, sizeof(*h), 0); | 725 | return _drbd_send_cmd(mdev, sock, cmd, h, sizeof(*h), 0); |
726 | } | 726 | } |
727 | 727 | ||
728 | static enum drbd_packets drbd_recv_fp(struct drbd_conf *mdev, struct socket *sock) | 728 | static enum drbd_packets drbd_recv_fp(struct drbd_conf *mdev, struct socket *sock) |
729 | { | 729 | { |
730 | struct p_header *h = (struct p_header *) &mdev->data.sbuf.header; | 730 | struct p_header80 *h = (struct p_header80 *) &mdev->data.sbuf.header; |
731 | int rr; | 731 | int rr; |
732 | 732 | ||
733 | rr = drbd_recv_short(mdev, sock, h, sizeof(*h), 0); | 733 | rr = drbd_recv_short(mdev, sock, h, sizeof(*h), 0); |
@@ -944,7 +944,7 @@ out_release_sockets: | |||
944 | return -1; | 944 | return -1; |
945 | } | 945 | } |
946 | 946 | ||
947 | static int drbd_recv_header(struct drbd_conf *mdev, struct p_header *h) | 947 | static int drbd_recv_header(struct drbd_conf *mdev, struct p_header80 *h) |
948 | { | 948 | { |
949 | int r; | 949 | int r; |
950 | 950 | ||
@@ -1266,7 +1266,7 @@ int w_e_reissue(struct drbd_conf *mdev, struct drbd_work *w, int cancel) __relea | |||
1266 | return 1; | 1266 | return 1; |
1267 | } | 1267 | } |
1268 | 1268 | ||
1269 | static int receive_Barrier(struct drbd_conf *mdev, struct p_header *h) | 1269 | static int receive_Barrier(struct drbd_conf *mdev, struct p_header80 *h) |
1270 | { | 1270 | { |
1271 | int rv, issue_flush; | 1271 | int rv, issue_flush; |
1272 | struct p_barrier *p = (struct p_barrier *)h; | 1272 | struct p_barrier *p = (struct p_barrier *)h; |
@@ -1570,7 +1570,7 @@ fail: | |||
1570 | return FALSE; | 1570 | return FALSE; |
1571 | } | 1571 | } |
1572 | 1572 | ||
1573 | static int receive_DataReply(struct drbd_conf *mdev, struct p_header *h) | 1573 | static int receive_DataReply(struct drbd_conf *mdev, struct p_header80 *h) |
1574 | { | 1574 | { |
1575 | struct drbd_request *req; | 1575 | struct drbd_request *req; |
1576 | sector_t sector; | 1576 | sector_t sector; |
@@ -1610,7 +1610,7 @@ static int receive_DataReply(struct drbd_conf *mdev, struct p_header *h) | |||
1610 | return ok; | 1610 | return ok; |
1611 | } | 1611 | } |
1612 | 1612 | ||
1613 | static int receive_RSDataReply(struct drbd_conf *mdev, struct p_header *h) | 1613 | static int receive_RSDataReply(struct drbd_conf *mdev, struct p_header80 *h) |
1614 | { | 1614 | { |
1615 | sector_t sector; | 1615 | sector_t sector; |
1616 | unsigned int header_size, data_size; | 1616 | unsigned int header_size, data_size; |
@@ -1767,7 +1767,7 @@ static int drbd_wait_peer_seq(struct drbd_conf *mdev, const u32 packet_seq) | |||
1767 | } | 1767 | } |
1768 | 1768 | ||
1769 | /* mirrored write */ | 1769 | /* mirrored write */ |
1770 | static int receive_Data(struct drbd_conf *mdev, struct p_header *h) | 1770 | static int receive_Data(struct drbd_conf *mdev, struct p_header80 *h) |
1771 | { | 1771 | { |
1772 | sector_t sector; | 1772 | sector_t sector; |
1773 | struct drbd_epoch_entry *e; | 1773 | struct drbd_epoch_entry *e; |
@@ -2066,7 +2066,7 @@ int drbd_rs_should_slow_down(struct drbd_conf *mdev) | |||
2066 | } | 2066 | } |
2067 | 2067 | ||
2068 | 2068 | ||
2069 | static int receive_DataRequest(struct drbd_conf *mdev, struct p_header *h) | 2069 | static int receive_DataRequest(struct drbd_conf *mdev, struct p_header80 *h) |
2070 | { | 2070 | { |
2071 | sector_t sector; | 2071 | sector_t sector; |
2072 | const sector_t capacity = drbd_get_capacity(mdev->this_bdev); | 2072 | const sector_t capacity = drbd_get_capacity(mdev->this_bdev); |
@@ -2756,7 +2756,7 @@ static int cmp_after_sb(enum drbd_after_sb_p peer, enum drbd_after_sb_p self) | |||
2756 | return 1; | 2756 | return 1; |
2757 | } | 2757 | } |
2758 | 2758 | ||
2759 | static int receive_protocol(struct drbd_conf *mdev, struct p_header *h) | 2759 | static int receive_protocol(struct drbd_conf *mdev, struct p_header80 *h) |
2760 | { | 2760 | { |
2761 | struct p_protocol *p = (struct p_protocol *)h; | 2761 | struct p_protocol *p = (struct p_protocol *)h; |
2762 | int header_size, data_size; | 2762 | int header_size, data_size; |
@@ -2862,7 +2862,7 @@ struct crypto_hash *drbd_crypto_alloc_digest_safe(const struct drbd_conf *mdev, | |||
2862 | return tfm; | 2862 | return tfm; |
2863 | } | 2863 | } |
2864 | 2864 | ||
2865 | static int receive_SyncParam(struct drbd_conf *mdev, struct p_header *h) | 2865 | static int receive_SyncParam(struct drbd_conf *mdev, struct p_header80 *h) |
2866 | { | 2866 | { |
2867 | int ok = TRUE; | 2867 | int ok = TRUE; |
2868 | struct p_rs_param_95 *p = (struct p_rs_param_95 *)h; | 2868 | struct p_rs_param_95 *p = (struct p_rs_param_95 *)h; |
@@ -3032,7 +3032,7 @@ static void warn_if_differ_considerably(struct drbd_conf *mdev, | |||
3032 | (unsigned long long)a, (unsigned long long)b); | 3032 | (unsigned long long)a, (unsigned long long)b); |
3033 | } | 3033 | } |
3034 | 3034 | ||
3035 | static int receive_sizes(struct drbd_conf *mdev, struct p_header *h) | 3035 | static int receive_sizes(struct drbd_conf *mdev, struct p_header80 *h) |
3036 | { | 3036 | { |
3037 | struct p_sizes *p = (struct p_sizes *)h; | 3037 | struct p_sizes *p = (struct p_sizes *)h; |
3038 | enum determine_dev_size dd = unchanged; | 3038 | enum determine_dev_size dd = unchanged; |
@@ -3148,7 +3148,7 @@ static int receive_sizes(struct drbd_conf *mdev, struct p_header *h) | |||
3148 | return TRUE; | 3148 | return TRUE; |
3149 | } | 3149 | } |
3150 | 3150 | ||
3151 | static int receive_uuids(struct drbd_conf *mdev, struct p_header *h) | 3151 | static int receive_uuids(struct drbd_conf *mdev, struct p_header80 *h) |
3152 | { | 3152 | { |
3153 | struct p_uuids *p = (struct p_uuids *)h; | 3153 | struct p_uuids *p = (struct p_uuids *)h; |
3154 | u64 *p_uuid; | 3154 | u64 *p_uuid; |
@@ -3241,7 +3241,7 @@ static union drbd_state convert_state(union drbd_state ps) | |||
3241 | return ms; | 3241 | return ms; |
3242 | } | 3242 | } |
3243 | 3243 | ||
3244 | static int receive_req_state(struct drbd_conf *mdev, struct p_header *h) | 3244 | static int receive_req_state(struct drbd_conf *mdev, struct p_header80 *h) |
3245 | { | 3245 | { |
3246 | struct p_req_state *p = (struct p_req_state *)h; | 3246 | struct p_req_state *p = (struct p_req_state *)h; |
3247 | union drbd_state mask, val; | 3247 | union drbd_state mask, val; |
@@ -3271,7 +3271,7 @@ static int receive_req_state(struct drbd_conf *mdev, struct p_header *h) | |||
3271 | return TRUE; | 3271 | return TRUE; |
3272 | } | 3272 | } |
3273 | 3273 | ||
3274 | static int receive_state(struct drbd_conf *mdev, struct p_header *h) | 3274 | static int receive_state(struct drbd_conf *mdev, struct p_header80 *h) |
3275 | { | 3275 | { |
3276 | struct p_state *p = (struct p_state *)h; | 3276 | struct p_state *p = (struct p_state *)h; |
3277 | enum drbd_conns nconn, oconn; | 3277 | enum drbd_conns nconn, oconn; |
@@ -3395,7 +3395,7 @@ static int receive_state(struct drbd_conf *mdev, struct p_header *h) | |||
3395 | return TRUE; | 3395 | return TRUE; |
3396 | } | 3396 | } |
3397 | 3397 | ||
3398 | static int receive_sync_uuid(struct drbd_conf *mdev, struct p_header *h) | 3398 | static int receive_sync_uuid(struct drbd_conf *mdev, struct p_header80 *h) |
3399 | { | 3399 | { |
3400 | struct p_rs_uuid *p = (struct p_rs_uuid *)h; | 3400 | struct p_rs_uuid *p = (struct p_rs_uuid *)h; |
3401 | 3401 | ||
@@ -3428,7 +3428,7 @@ static int receive_sync_uuid(struct drbd_conf *mdev, struct p_header *h) | |||
3428 | enum receive_bitmap_ret { OK, DONE, FAILED }; | 3428 | enum receive_bitmap_ret { OK, DONE, FAILED }; |
3429 | 3429 | ||
3430 | static enum receive_bitmap_ret | 3430 | static enum receive_bitmap_ret |
3431 | receive_bitmap_plain(struct drbd_conf *mdev, struct p_header *h, | 3431 | receive_bitmap_plain(struct drbd_conf *mdev, struct p_header80 *h, |
3432 | unsigned long *buffer, struct bm_xfer_ctx *c) | 3432 | unsigned long *buffer, struct bm_xfer_ctx *c) |
3433 | { | 3433 | { |
3434 | unsigned num_words = min_t(size_t, BM_PACKET_WORDS, c->bm_words - c->word_offset); | 3434 | unsigned num_words = min_t(size_t, BM_PACKET_WORDS, c->bm_words - c->word_offset); |
@@ -3533,7 +3533,7 @@ void INFO_bm_xfer_stats(struct drbd_conf *mdev, | |||
3533 | const char *direction, struct bm_xfer_ctx *c) | 3533 | const char *direction, struct bm_xfer_ctx *c) |
3534 | { | 3534 | { |
3535 | /* what would it take to transfer it "plaintext" */ | 3535 | /* what would it take to transfer it "plaintext" */ |
3536 | unsigned plain = sizeof(struct p_header) * | 3536 | unsigned plain = sizeof(struct p_header80) * |
3537 | ((c->bm_words+BM_PACKET_WORDS-1)/BM_PACKET_WORDS+1) | 3537 | ((c->bm_words+BM_PACKET_WORDS-1)/BM_PACKET_WORDS+1) |
3538 | + c->bm_words * sizeof(long); | 3538 | + c->bm_words * sizeof(long); |
3539 | unsigned total = c->bytes[0] + c->bytes[1]; | 3539 | unsigned total = c->bytes[0] + c->bytes[1]; |
@@ -3571,7 +3571,7 @@ void INFO_bm_xfer_stats(struct drbd_conf *mdev, | |||
3571 | in order to be agnostic to the 32 vs 64 bits issue. | 3571 | in order to be agnostic to the 32 vs 64 bits issue. |
3572 | 3572 | ||
3573 | returns 0 on failure, 1 if we successfully received it. */ | 3573 | returns 0 on failure, 1 if we successfully received it. */ |
3574 | static int receive_bitmap(struct drbd_conf *mdev, struct p_header *h) | 3574 | static int receive_bitmap(struct drbd_conf *mdev, struct p_header80 *h) |
3575 | { | 3575 | { |
3576 | struct bm_xfer_ctx c; | 3576 | struct bm_xfer_ctx c; |
3577 | void *buffer; | 3577 | void *buffer; |
@@ -3623,7 +3623,7 @@ static int receive_bitmap(struct drbd_conf *mdev, struct p_header *h) | |||
3623 | } | 3623 | } |
3624 | 3624 | ||
3625 | c.packets[h->command == P_BITMAP]++; | 3625 | c.packets[h->command == P_BITMAP]++; |
3626 | c.bytes[h->command == P_BITMAP] += sizeof(struct p_header) + h->length; | 3626 | c.bytes[h->command == P_BITMAP] += sizeof(struct p_header80) + h->length; |
3627 | 3627 | ||
3628 | if (ret != OK) | 3628 | if (ret != OK) |
3629 | break; | 3629 | break; |
@@ -3659,7 +3659,7 @@ static int receive_bitmap(struct drbd_conf *mdev, struct p_header *h) | |||
3659 | return ok; | 3659 | return ok; |
3660 | } | 3660 | } |
3661 | 3661 | ||
3662 | static int receive_skip_(struct drbd_conf *mdev, struct p_header *h, int silent) | 3662 | static int receive_skip_(struct drbd_conf *mdev, struct p_header80 *h, int silent) |
3663 | { | 3663 | { |
3664 | /* TODO zero copy sink :) */ | 3664 | /* TODO zero copy sink :) */ |
3665 | static char sink[128]; | 3665 | static char sink[128]; |
@@ -3679,17 +3679,17 @@ static int receive_skip_(struct drbd_conf *mdev, struct p_header *h, int silent) | |||
3679 | return size == 0; | 3679 | return size == 0; |
3680 | } | 3680 | } |
3681 | 3681 | ||
3682 | static int receive_skip(struct drbd_conf *mdev, struct p_header *h) | 3682 | static int receive_skip(struct drbd_conf *mdev, struct p_header80 *h) |
3683 | { | 3683 | { |
3684 | return receive_skip_(mdev, h, 0); | 3684 | return receive_skip_(mdev, h, 0); |
3685 | } | 3685 | } |
3686 | 3686 | ||
3687 | static int receive_skip_silent(struct drbd_conf *mdev, struct p_header *h) | 3687 | static int receive_skip_silent(struct drbd_conf *mdev, struct p_header80 *h) |
3688 | { | 3688 | { |
3689 | return receive_skip_(mdev, h, 1); | 3689 | return receive_skip_(mdev, h, 1); |
3690 | } | 3690 | } |
3691 | 3691 | ||
3692 | static int receive_UnplugRemote(struct drbd_conf *mdev, struct p_header *h) | 3692 | static int receive_UnplugRemote(struct drbd_conf *mdev, struct p_header80 *h) |
3693 | { | 3693 | { |
3694 | if (mdev->state.disk >= D_INCONSISTENT) | 3694 | if (mdev->state.disk >= D_INCONSISTENT) |
3695 | drbd_kick_lo(mdev); | 3695 | drbd_kick_lo(mdev); |
@@ -3701,7 +3701,7 @@ static int receive_UnplugRemote(struct drbd_conf *mdev, struct p_header *h) | |||
3701 | return TRUE; | 3701 | return TRUE; |
3702 | } | 3702 | } |
3703 | 3703 | ||
3704 | typedef int (*drbd_cmd_handler_f)(struct drbd_conf *, struct p_header *); | 3704 | typedef int (*drbd_cmd_handler_f)(struct drbd_conf *, struct p_header80 *); |
3705 | 3705 | ||
3706 | static drbd_cmd_handler_f drbd_default_handler[] = { | 3706 | static drbd_cmd_handler_f drbd_default_handler[] = { |
3707 | [P_DATA] = receive_Data, | 3707 | [P_DATA] = receive_Data, |
@@ -3736,7 +3736,7 @@ static drbd_cmd_handler_f *drbd_opt_cmd_handler; | |||
3736 | static void drbdd(struct drbd_conf *mdev) | 3736 | static void drbdd(struct drbd_conf *mdev) |
3737 | { | 3737 | { |
3738 | drbd_cmd_handler_f handler; | 3738 | drbd_cmd_handler_f handler; |
3739 | struct p_header *header = &mdev->data.rbuf.header; | 3739 | struct p_header80 *header = &mdev->data.rbuf.header; |
3740 | 3740 | ||
3741 | while (get_t_state(&mdev->receiver) == Running) { | 3741 | while (get_t_state(&mdev->receiver) == Running) { |
3742 | drbd_thread_current_set_cpu(mdev); | 3742 | drbd_thread_current_set_cpu(mdev); |
@@ -3964,7 +3964,7 @@ static int drbd_send_handshake(struct drbd_conf *mdev) | |||
3964 | p->protocol_min = cpu_to_be32(PRO_VERSION_MIN); | 3964 | p->protocol_min = cpu_to_be32(PRO_VERSION_MIN); |
3965 | p->protocol_max = cpu_to_be32(PRO_VERSION_MAX); | 3965 | p->protocol_max = cpu_to_be32(PRO_VERSION_MAX); |
3966 | ok = _drbd_send_cmd( mdev, mdev->data.socket, P_HAND_SHAKE, | 3966 | ok = _drbd_send_cmd( mdev, mdev->data.socket, P_HAND_SHAKE, |
3967 | (struct p_header *)p, sizeof(*p), 0 ); | 3967 | (struct p_header80 *)p, sizeof(*p), 0 ); |
3968 | mutex_unlock(&mdev->data.mutex); | 3968 | mutex_unlock(&mdev->data.mutex); |
3969 | return ok; | 3969 | return ok; |
3970 | } | 3970 | } |
@@ -3981,7 +3981,7 @@ static int drbd_do_handshake(struct drbd_conf *mdev) | |||
3981 | /* ASSERT current == mdev->receiver ... */ | 3981 | /* ASSERT current == mdev->receiver ... */ |
3982 | struct p_handshake *p = &mdev->data.rbuf.handshake; | 3982 | struct p_handshake *p = &mdev->data.rbuf.handshake; |
3983 | const int expect = sizeof(struct p_handshake) | 3983 | const int expect = sizeof(struct p_handshake) |
3984 | -sizeof(struct p_header); | 3984 | -sizeof(struct p_header80); |
3985 | int rv; | 3985 | int rv; |
3986 | 3986 | ||
3987 | rv = drbd_send_handshake(mdev); | 3987 | rv = drbd_send_handshake(mdev); |
@@ -4058,7 +4058,7 @@ static int drbd_do_auth(struct drbd_conf *mdev) | |||
4058 | char *response = NULL; | 4058 | char *response = NULL; |
4059 | char *right_response = NULL; | 4059 | char *right_response = NULL; |
4060 | char *peers_ch = NULL; | 4060 | char *peers_ch = NULL; |
4061 | struct p_header p; | 4061 | struct p_header80 p; |
4062 | unsigned int key_len = strlen(mdev->net_conf->shared_secret); | 4062 | unsigned int key_len = strlen(mdev->net_conf->shared_secret); |
4063 | unsigned int resp_size; | 4063 | unsigned int resp_size; |
4064 | struct hash_desc desc; | 4064 | struct hash_desc desc; |
@@ -4231,7 +4231,7 @@ int drbdd_init(struct drbd_thread *thi) | |||
4231 | 4231 | ||
4232 | /* ********* acknowledge sender ******** */ | 4232 | /* ********* acknowledge sender ******** */ |
4233 | 4233 | ||
4234 | static int got_RqSReply(struct drbd_conf *mdev, struct p_header *h) | 4234 | static int got_RqSReply(struct drbd_conf *mdev, struct p_header80 *h) |
4235 | { | 4235 | { |
4236 | struct p_req_state_reply *p = (struct p_req_state_reply *)h; | 4236 | struct p_req_state_reply *p = (struct p_req_state_reply *)h; |
4237 | 4237 | ||
@@ -4249,13 +4249,13 @@ static int got_RqSReply(struct drbd_conf *mdev, struct p_header *h) | |||
4249 | return TRUE; | 4249 | return TRUE; |
4250 | } | 4250 | } |
4251 | 4251 | ||
4252 | static int got_Ping(struct drbd_conf *mdev, struct p_header *h) | 4252 | static int got_Ping(struct drbd_conf *mdev, struct p_header80 *h) |
4253 | { | 4253 | { |
4254 | return drbd_send_ping_ack(mdev); | 4254 | return drbd_send_ping_ack(mdev); |
4255 | 4255 | ||
4256 | } | 4256 | } |
4257 | 4257 | ||
4258 | static int got_PingAck(struct drbd_conf *mdev, struct p_header *h) | 4258 | static int got_PingAck(struct drbd_conf *mdev, struct p_header80 *h) |
4259 | { | 4259 | { |
4260 | /* restore idle timeout */ | 4260 | /* restore idle timeout */ |
4261 | mdev->meta.socket->sk->sk_rcvtimeo = mdev->net_conf->ping_int*HZ; | 4261 | mdev->meta.socket->sk->sk_rcvtimeo = mdev->net_conf->ping_int*HZ; |
@@ -4265,7 +4265,7 @@ static int got_PingAck(struct drbd_conf *mdev, struct p_header *h) | |||
4265 | return TRUE; | 4265 | return TRUE; |
4266 | } | 4266 | } |
4267 | 4267 | ||
4268 | static int got_IsInSync(struct drbd_conf *mdev, struct p_header *h) | 4268 | static int got_IsInSync(struct drbd_conf *mdev, struct p_header80 *h) |
4269 | { | 4269 | { |
4270 | struct p_block_ack *p = (struct p_block_ack *)h; | 4270 | struct p_block_ack *p = (struct p_block_ack *)h; |
4271 | sector_t sector = be64_to_cpu(p->sector); | 4271 | sector_t sector = be64_to_cpu(p->sector); |
@@ -4336,7 +4336,7 @@ static int validate_req_change_req_state(struct drbd_conf *mdev, | |||
4336 | return TRUE; | 4336 | return TRUE; |
4337 | } | 4337 | } |
4338 | 4338 | ||
4339 | static int got_BlockAck(struct drbd_conf *mdev, struct p_header *h) | 4339 | static int got_BlockAck(struct drbd_conf *mdev, struct p_header80 *h) |
4340 | { | 4340 | { |
4341 | struct p_block_ack *p = (struct p_block_ack *)h; | 4341 | struct p_block_ack *p = (struct p_block_ack *)h; |
4342 | sector_t sector = be64_to_cpu(p->sector); | 4342 | sector_t sector = be64_to_cpu(p->sector); |
@@ -4376,7 +4376,7 @@ static int got_BlockAck(struct drbd_conf *mdev, struct p_header *h) | |||
4376 | _ack_id_to_req, __func__ , what); | 4376 | _ack_id_to_req, __func__ , what); |
4377 | } | 4377 | } |
4378 | 4378 | ||
4379 | static int got_NegAck(struct drbd_conf *mdev, struct p_header *h) | 4379 | static int got_NegAck(struct drbd_conf *mdev, struct p_header80 *h) |
4380 | { | 4380 | { |
4381 | struct p_block_ack *p = (struct p_block_ack *)h; | 4381 | struct p_block_ack *p = (struct p_block_ack *)h; |
4382 | sector_t sector = be64_to_cpu(p->sector); | 4382 | sector_t sector = be64_to_cpu(p->sector); |
@@ -4396,7 +4396,7 @@ static int got_NegAck(struct drbd_conf *mdev, struct p_header *h) | |||
4396 | _ack_id_to_req, __func__ , neg_acked); | 4396 | _ack_id_to_req, __func__ , neg_acked); |
4397 | } | 4397 | } |
4398 | 4398 | ||
4399 | static int got_NegDReply(struct drbd_conf *mdev, struct p_header *h) | 4399 | static int got_NegDReply(struct drbd_conf *mdev, struct p_header80 *h) |
4400 | { | 4400 | { |
4401 | struct p_block_ack *p = (struct p_block_ack *)h; | 4401 | struct p_block_ack *p = (struct p_block_ack *)h; |
4402 | sector_t sector = be64_to_cpu(p->sector); | 4402 | sector_t sector = be64_to_cpu(p->sector); |
@@ -4409,7 +4409,7 @@ static int got_NegDReply(struct drbd_conf *mdev, struct p_header *h) | |||
4409 | _ar_id_to_req, __func__ , neg_acked); | 4409 | _ar_id_to_req, __func__ , neg_acked); |
4410 | } | 4410 | } |
4411 | 4411 | ||
4412 | static int got_NegRSDReply(struct drbd_conf *mdev, struct p_header *h) | 4412 | static int got_NegRSDReply(struct drbd_conf *mdev, struct p_header80 *h) |
4413 | { | 4413 | { |
4414 | sector_t sector; | 4414 | sector_t sector; |
4415 | int size; | 4415 | int size; |
@@ -4431,7 +4431,7 @@ static int got_NegRSDReply(struct drbd_conf *mdev, struct p_header *h) | |||
4431 | return TRUE; | 4431 | return TRUE; |
4432 | } | 4432 | } |
4433 | 4433 | ||
4434 | static int got_BarrierAck(struct drbd_conf *mdev, struct p_header *h) | 4434 | static int got_BarrierAck(struct drbd_conf *mdev, struct p_header80 *h) |
4435 | { | 4435 | { |
4436 | struct p_barrier_ack *p = (struct p_barrier_ack *)h; | 4436 | struct p_barrier_ack *p = (struct p_barrier_ack *)h; |
4437 | 4437 | ||
@@ -4440,7 +4440,7 @@ static int got_BarrierAck(struct drbd_conf *mdev, struct p_header *h) | |||
4440 | return TRUE; | 4440 | return TRUE; |
4441 | } | 4441 | } |
4442 | 4442 | ||
4443 | static int got_OVResult(struct drbd_conf *mdev, struct p_header *h) | 4443 | static int got_OVResult(struct drbd_conf *mdev, struct p_header80 *h) |
4444 | { | 4444 | { |
4445 | struct p_block_ack *p = (struct p_block_ack *)h; | 4445 | struct p_block_ack *p = (struct p_block_ack *)h; |
4446 | struct drbd_work *w; | 4446 | struct drbd_work *w; |
@@ -4474,7 +4474,7 @@ static int got_OVResult(struct drbd_conf *mdev, struct p_header *h) | |||
4474 | return TRUE; | 4474 | return TRUE; |
4475 | } | 4475 | } |
4476 | 4476 | ||
4477 | static int got_something_to_ignore_m(struct drbd_conf *mdev, struct p_header *h) | 4477 | static int got_something_to_ignore_m(struct drbd_conf *mdev, struct p_header80 *h) |
4478 | { | 4478 | { |
4479 | /* IGNORE */ | 4479 | /* IGNORE */ |
4480 | return TRUE; | 4480 | return TRUE; |
@@ -4482,7 +4482,7 @@ static int got_something_to_ignore_m(struct drbd_conf *mdev, struct p_header *h) | |||
4482 | 4482 | ||
4483 | struct asender_cmd { | 4483 | struct asender_cmd { |
4484 | size_t pkt_size; | 4484 | size_t pkt_size; |
4485 | int (*process)(struct drbd_conf *mdev, struct p_header *h); | 4485 | int (*process)(struct drbd_conf *mdev, struct p_header80 *h); |
4486 | }; | 4486 | }; |
4487 | 4487 | ||
4488 | static struct asender_cmd *get_asender_cmd(int cmd) | 4488 | static struct asender_cmd *get_asender_cmd(int cmd) |
@@ -4491,8 +4491,8 @@ static struct asender_cmd *get_asender_cmd(int cmd) | |||
4491 | /* anything missing from this table is in | 4491 | /* anything missing from this table is in |
4492 | * the drbd_cmd_handler (drbd_default_handler) table, | 4492 | * the drbd_cmd_handler (drbd_default_handler) table, |
4493 | * see the beginning of drbdd() */ | 4493 | * see the beginning of drbdd() */ |
4494 | [P_PING] = { sizeof(struct p_header), got_Ping }, | 4494 | [P_PING] = { sizeof(struct p_header80), got_Ping }, |
4495 | [P_PING_ACK] = { sizeof(struct p_header), got_PingAck }, | 4495 | [P_PING_ACK] = { sizeof(struct p_header80), got_PingAck }, |
4496 | [P_RECV_ACK] = { sizeof(struct p_block_ack), got_BlockAck }, | 4496 | [P_RECV_ACK] = { sizeof(struct p_block_ack), got_BlockAck }, |
4497 | [P_WRITE_ACK] = { sizeof(struct p_block_ack), got_BlockAck }, | 4497 | [P_WRITE_ACK] = { sizeof(struct p_block_ack), got_BlockAck }, |
4498 | [P_RS_WRITE_ACK] = { sizeof(struct p_block_ack), got_BlockAck }, | 4498 | [P_RS_WRITE_ACK] = { sizeof(struct p_block_ack), got_BlockAck }, |
@@ -4504,7 +4504,7 @@ static struct asender_cmd *get_asender_cmd(int cmd) | |||
4504 | [P_BARRIER_ACK] = { sizeof(struct p_barrier_ack), got_BarrierAck }, | 4504 | [P_BARRIER_ACK] = { sizeof(struct p_barrier_ack), got_BarrierAck }, |
4505 | [P_STATE_CHG_REPLY] = { sizeof(struct p_req_state_reply), got_RqSReply }, | 4505 | [P_STATE_CHG_REPLY] = { sizeof(struct p_req_state_reply), got_RqSReply }, |
4506 | [P_RS_IS_IN_SYNC] = { sizeof(struct p_block_ack), got_IsInSync }, | 4506 | [P_RS_IS_IN_SYNC] = { sizeof(struct p_block_ack), got_IsInSync }, |
4507 | [P_DELAY_PROBE] = { sizeof(struct p_delay_probe), got_something_to_ignore_m }, | 4507 | [P_DELAY_PROBE] = { sizeof(struct p_delay_probe93), got_something_to_ignore_m }, |
4508 | [P_MAX_CMD] = { 0, NULL }, | 4508 | [P_MAX_CMD] = { 0, NULL }, |
4509 | }; | 4509 | }; |
4510 | if (cmd > P_MAX_CMD || asender_tbl[cmd].process == NULL) | 4510 | if (cmd > P_MAX_CMD || asender_tbl[cmd].process == NULL) |
@@ -4515,13 +4515,13 @@ static struct asender_cmd *get_asender_cmd(int cmd) | |||
4515 | int drbd_asender(struct drbd_thread *thi) | 4515 | int drbd_asender(struct drbd_thread *thi) |
4516 | { | 4516 | { |
4517 | struct drbd_conf *mdev = thi->mdev; | 4517 | struct drbd_conf *mdev = thi->mdev; |
4518 | struct p_header *h = &mdev->meta.rbuf.header; | 4518 | struct p_header80 *h = &mdev->meta.rbuf.header; |
4519 | struct asender_cmd *cmd = NULL; | 4519 | struct asender_cmd *cmd = NULL; |
4520 | 4520 | ||
4521 | int rv, len; | 4521 | int rv, len; |
4522 | void *buf = h; | 4522 | void *buf = h; |
4523 | int received = 0; | 4523 | int received = 0; |
4524 | int expect = sizeof(struct p_header); | 4524 | int expect = sizeof(struct p_header80); |
4525 | int empty; | 4525 | int empty; |
4526 | 4526 | ||
4527 | sprintf(current->comm, "drbd%d_asender", mdev_to_minor(mdev)); | 4527 | sprintf(current->comm, "drbd%d_asender", mdev_to_minor(mdev)); |
@@ -4621,7 +4621,7 @@ int drbd_asender(struct drbd_thread *thi) | |||
4621 | goto disconnect; | 4621 | goto disconnect; |
4622 | } | 4622 | } |
4623 | expect = cmd->pkt_size; | 4623 | expect = cmd->pkt_size; |
4624 | ERR_IF(len != expect-sizeof(struct p_header)) | 4624 | ERR_IF(len != expect-sizeof(struct p_header80)) |
4625 | goto reconnect; | 4625 | goto reconnect; |
4626 | } | 4626 | } |
4627 | if (received == expect) { | 4627 | if (received == expect) { |
@@ -4631,7 +4631,7 @@ int drbd_asender(struct drbd_thread *thi) | |||
4631 | 4631 | ||
4632 | buf = h; | 4632 | buf = h; |
4633 | received = 0; | 4633 | received = 0; |
4634 | expect = sizeof(struct p_header); | 4634 | expect = sizeof(struct p_header80); |
4635 | cmd = NULL; | 4635 | cmd = NULL; |
4636 | } | 4636 | } |
4637 | } | 4637 | } |