Lines Matching refs:pi
795 struct packet_info pi; in receive_first_packet() local
814 err = decode_header(connection, connection->data.rbuf, &pi); in receive_first_packet()
817 return pi.cmd; in receive_first_packet()
1123 static int decode_header(struct drbd_connection *connection, void *header, struct packet_info *pi) in decode_header() argument
1134 pi->vnr = be16_to_cpu(h->volume); in decode_header()
1135 pi->cmd = be16_to_cpu(h->command); in decode_header()
1136 pi->size = be32_to_cpu(h->length); in decode_header()
1140 pi->cmd = be16_to_cpu(h->command); in decode_header()
1141 pi->size = be32_to_cpu(h->length); in decode_header()
1142 pi->vnr = 0; in decode_header()
1146 pi->cmd = be16_to_cpu(h->command); in decode_header()
1147 pi->size = be16_to_cpu(h->length); in decode_header()
1148 pi->vnr = 0; in decode_header()
1155 pi->data = header + header_size; in decode_header()
1159 static int drbd_recv_header(struct drbd_connection *connection, struct packet_info *pi) in drbd_recv_header() argument
1168 err = decode_header(connection, buffer, pi); in drbd_recv_header()
1516 static int receive_Barrier(struct drbd_connection *connection, struct packet_info *pi) in receive_Barrier() argument
1519 struct p_barrier *p = pi->data; in receive_Barrier()
1588 struct packet_info *pi) __must_hold(local) in read_in_block() argument
1595 unsigned int data_size = pi->size, ds; in read_in_block()
1599 struct p_trim *trim = (pi->cmd == P_TRIM) ? pi->data : NULL; in read_in_block()
1783 struct packet_info *pi) __releases(local) in recv_resync_read() argument
1788 peer_req = read_in_block(peer_device, ID_SYNCER, sector, pi); in recv_resync_read()
1805 atomic_add(pi->size >> 9, &device->rs_sect_ev); in recv_resync_read()
1838 static int receive_DataReply(struct drbd_connection *connection, struct packet_info *pi) in receive_DataReply() argument
1845 struct p_data *p = pi->data; in receive_DataReply()
1847 peer_device = conn_peer_device(connection, pi->vnr); in receive_DataReply()
1863 err = recv_dless_read(peer_device, req, sector, pi->size); in receive_DataReply()
1873 static int receive_RSDataReply(struct drbd_connection *connection, struct packet_info *pi) in receive_RSDataReply() argument
1879 struct p_data *p = pi->data; in receive_RSDataReply()
1881 peer_device = conn_peer_device(connection, pi->vnr); in receive_RSDataReply()
1893 err = recv_resync_read(peer_device, sector, pi); in receive_RSDataReply()
1898 err = drbd_drain_block(peer_device, pi->size); in receive_RSDataReply()
1900 drbd_send_ack_dp(peer_device, P_NEG_ACK, p, pi->size); in receive_RSDataReply()
1903 atomic_add(pi->size >> 9, &device->rs_sect_in); in receive_RSDataReply()
2270 static int receive_Data(struct drbd_connection *connection, struct packet_info *pi) in receive_Data() argument
2277 struct p_data *p = pi->data; in receive_Data()
2283 peer_device = conn_peer_device(connection, pi->vnr); in receive_Data()
2292 drbd_send_ack_dp(peer_device, P_NEG_ACK, p, pi->size); in receive_Data()
2294 err2 = drbd_drain_block(peer_device, pi->size); in receive_Data()
2307 peer_req = read_in_block(peer_device, p->block_id, sector, pi); in receive_Data()
2319 if (pi->cmd == P_TRIM) { in receive_Data()
2512 static int receive_DataRequest(struct drbd_connection *connection, struct packet_info *pi) in receive_DataRequest() argument
2522 struct p_block_req *p = pi->data; in receive_DataRequest()
2524 peer_device = conn_peer_device(connection, pi->vnr); in receive_DataRequest()
2546 switch (pi->cmd) { in receive_DataRequest()
2568 return drbd_drain_block(peer_device, pi->size); in receive_DataRequest()
2581 switch (pi->cmd) { in receive_DataRequest()
2599 di = kmalloc(sizeof(*di) + pi->size, GFP_NOIO); in receive_DataRequest()
2603 di->digest_size = pi->size; in receive_DataRequest()
2609 if (drbd_recv_all(peer_device->connection, di->digest, pi->size)) in receive_DataRequest()
2612 if (pi->cmd == P_CSUM_RS_REQUEST) { in receive_DataRequest()
2619 } else if (pi->cmd == P_OV_REPLY) { in receive_DataRequest()
3290 static int receive_protocol(struct drbd_connection *connection, struct packet_info *pi) in receive_protocol() argument
3292 struct p_protocol *p = pi->data; in receive_protocol()
3311 if (pi->size > sizeof(integrity_alg)) in receive_protocol()
3313 err = drbd_recv_all(connection, integrity_alg, pi->size); in receive_protocol()
3319 if (pi->cmd != P_PROTOCOL_UPDATE) { in receive_protocol()
3462 static int ignore_remaining_packet(struct drbd_connection *connection, struct packet_info *pi) in ignore_remaining_packet() argument
3465 int size = pi->size; in ignore_remaining_packet()
3493 static int config_unknown_volume(struct drbd_connection *connection, struct packet_info *pi) in config_unknown_volume() argument
3496 cmdname(pi->cmd), pi->vnr); in config_unknown_volume()
3497 return ignore_remaining_packet(connection, pi); in config_unknown_volume()
3500 static int receive_SyncParam(struct drbd_connection *connection, struct packet_info *pi) in receive_SyncParam() argument
3515 peer_device = conn_peer_device(connection, pi->vnr); in receive_SyncParam()
3517 return config_unknown_volume(connection, pi); in receive_SyncParam()
3526 if (pi->size > exp_max_sz) { in receive_SyncParam()
3528 pi->size, exp_max_sz); in receive_SyncParam()
3534 data_size = pi->size - header_size; in receive_SyncParam()
3537 data_size = pi->size - header_size; in receive_SyncParam()
3541 data_size = pi->size - header_size; in receive_SyncParam()
3546 p = pi->data; in receive_SyncParam()
3725 static int receive_sizes(struct drbd_connection *connection, struct packet_info *pi) in receive_sizes() argument
3729 struct p_sizes *p = pi->data; in receive_sizes()
3735 peer_device = conn_peer_device(connection, pi->vnr); in receive_sizes()
3737 return config_unknown_volume(connection, pi); in receive_sizes()
3866 static int receive_uuids(struct drbd_connection *connection, struct packet_info *pi) in receive_uuids() argument
3870 struct p_uuids *p = pi->data; in receive_uuids()
3874 peer_device = conn_peer_device(connection, pi->vnr); in receive_uuids()
3876 return config_unknown_volume(connection, pi); in receive_uuids()
3973 static int receive_req_state(struct drbd_connection *connection, struct packet_info *pi) in receive_req_state() argument
3977 struct p_req_state *p = pi->data; in receive_req_state()
3981 peer_device = conn_peer_device(connection, pi->vnr); in receive_req_state()
4006 static int receive_req_conn_state(struct drbd_connection *connection, struct packet_info *pi) in receive_req_conn_state() argument
4008 struct p_req_state *p = pi->data; in receive_req_conn_state()
4030 static int receive_state(struct drbd_connection *connection, struct packet_info *pi) in receive_state() argument
4034 struct p_state *p = pi->data; in receive_state()
4040 peer_device = conn_peer_device(connection, pi->vnr); in receive_state()
4042 return config_unknown_volume(connection, pi); in receive_state()
4208 static int receive_sync_uuid(struct drbd_connection *connection, struct packet_info *pi) in receive_sync_uuid() argument
4212 struct p_rs_uuid *p = pi->data; in receive_sync_uuid()
4214 peer_device = conn_peer_device(connection, pi->vnr); in receive_sync_uuid()
4432 static int receive_bitmap(struct drbd_connection *connection, struct packet_info *pi) in receive_bitmap() argument
4439 peer_device = conn_peer_device(connection, pi->vnr); in receive_bitmap()
4454 if (pi->cmd == P_BITMAP) in receive_bitmap()
4455 err = receive_bitmap_plain(peer_device, pi->size, pi->data, &c); in receive_bitmap()
4456 else if (pi->cmd == P_COMPRESSED_BITMAP) { in receive_bitmap()
4459 struct p_compressed_bm *p = pi->data; in receive_bitmap()
4461 if (pi->size > DRBD_SOCKET_BUFFER_SIZE - drbd_header_size(connection)) { in receive_bitmap()
4466 if (pi->size <= sizeof(*p)) { in receive_bitmap()
4467 drbd_err(device, "ReportCBitmap packet too small (l:%u)\n", pi->size); in receive_bitmap()
4471 err = drbd_recv_all(peer_device->connection, p, pi->size); in receive_bitmap()
4474 err = decode_bitmap_c(peer_device, p, &c, pi->size); in receive_bitmap()
4476 …drbd_warn(device, "receive_bitmap: cmd neither ReportBitMap nor ReportCBitMap (is 0x%x)", pi->cmd); in receive_bitmap()
4481 c.packets[pi->cmd == P_BITMAP]++; in receive_bitmap()
4482 c.bytes[pi->cmd == P_BITMAP] += drbd_header_size(connection) + pi->size; in receive_bitmap()
4489 err = drbd_recv_header(peer_device->connection, pi); in receive_bitmap()
4520 static int receive_skip(struct drbd_connection *connection, struct packet_info *pi) in receive_skip() argument
4523 pi->cmd, pi->size); in receive_skip()
4525 return ignore_remaining_packet(connection, pi); in receive_skip()
4528 static int receive_UnplugRemote(struct drbd_connection *connection, struct packet_info *pi) in receive_UnplugRemote() argument
4537 static int receive_out_of_sync(struct drbd_connection *connection, struct packet_info *pi) in receive_out_of_sync() argument
4541 struct p_block_desc *p = pi->data; in receive_out_of_sync()
4543 peer_device = conn_peer_device(connection, pi->vnr); in receive_out_of_sync()
4599 struct packet_info pi; in drbdd() local
4608 if (drbd_recv_header(connection, &pi)) in drbdd()
4611 cmd = &drbd_cmd_handler[pi.cmd]; in drbdd()
4612 if (unlikely(pi.cmd >= ARRAY_SIZE(drbd_cmd_handler) || !cmd->fn)) { in drbdd()
4614 cmdname(pi.cmd), pi.cmd); in drbdd()
4619 if (pi.size > shs && !cmd->expect_payload) { in drbdd()
4621 cmdname(pi.cmd), pi.size); in drbdd()
4627 err = drbd_recv_all_warn(connection, pi.data, shs); in drbdd()
4630 pi.size -= shs; in drbdd()
4634 err = cmd->fn(connection, &pi); in drbdd()
4637 cmdname(pi.cmd), err, pi.size); in drbdd()
4821 struct packet_info pi; in drbd_do_features() local
4828 err = drbd_recv_header(connection, &pi); in drbd_do_features()
4832 if (pi.cmd != P_CONNECTION_FEATURES) { in drbd_do_features()
4834 cmdname(pi.cmd), pi.cmd); in drbd_do_features()
4838 if (pi.size != expect) { in drbd_do_features()
4840 expect, pi.size); in drbd_do_features()
4844 p = pi.data; in drbd_do_features()
4905 struct packet_info pi; in drbd_do_auth() local
4939 err = drbd_recv_header(connection, &pi); in drbd_do_auth()
4945 if (pi.cmd != P_AUTH_CHALLENGE) { in drbd_do_auth()
4947 cmdname(pi.cmd), pi.cmd); in drbd_do_auth()
4952 if (pi.size > CHALLENGE_LEN * 2) { in drbd_do_auth()
4958 if (pi.size < CHALLENGE_LEN) { in drbd_do_auth()
4964 peers_ch = kmalloc(pi.size, GFP_NOIO); in drbd_do_auth()
4971 err = drbd_recv_all_warn(connection, peers_ch, pi.size); in drbd_do_auth()
4992 sg_set_buf(&sg, peers_ch, pi.size); in drbd_do_auth()
5010 err = drbd_recv_header(connection, &pi); in drbd_do_auth()
5016 if (pi.cmd != P_AUTH_RESPONSE) { in drbd_do_auth()
5018 cmdname(pi.cmd), pi.cmd); in drbd_do_auth()
5023 if (pi.size != resp_size) { in drbd_do_auth()
5098 static int got_conn_RqSReply(struct drbd_connection *connection, struct packet_info *pi) in got_conn_RqSReply() argument
5100 struct p_req_state_reply *p = pi->data; in got_conn_RqSReply()
5115 static int got_RqSReply(struct drbd_connection *connection, struct packet_info *pi) in got_RqSReply() argument
5119 struct p_req_state_reply *p = pi->data; in got_RqSReply()
5122 peer_device = conn_peer_device(connection, pi->vnr); in got_RqSReply()
5129 return got_conn_RqSReply(connection, pi); in got_RqSReply()
5144 static int got_Ping(struct drbd_connection *connection, struct packet_info *pi) in got_Ping() argument
5150 static int got_PingAck(struct drbd_connection *connection, struct packet_info *pi) in got_PingAck() argument
5160 static int got_IsInSync(struct drbd_connection *connection, struct packet_info *pi) in got_IsInSync() argument
5164 struct p_block_ack *p = pi->data; in got_IsInSync()
5168 peer_device = conn_peer_device(connection, pi->vnr); in got_IsInSync()
5212 static int got_BlockAck(struct drbd_connection *connection, struct packet_info *pi) in got_BlockAck() argument
5216 struct p_block_ack *p = pi->data; in got_BlockAck()
5221 peer_device = conn_peer_device(connection, pi->vnr); in got_BlockAck()
5233 switch (pi->cmd) { in got_BlockAck()
5258 static int got_NegAck(struct drbd_connection *connection, struct packet_info *pi) in got_NegAck() argument
5262 struct p_block_ack *p = pi->data; in got_NegAck()
5267 peer_device = conn_peer_device(connection, pi->vnr); in got_NegAck()
5294 static int got_NegDReply(struct drbd_connection *connection, struct packet_info *pi) in got_NegDReply() argument
5298 struct p_block_ack *p = pi->data; in got_NegDReply()
5301 peer_device = conn_peer_device(connection, pi->vnr); in got_NegDReply()
5316 static int got_NegRSDReply(struct drbd_connection *connection, struct packet_info *pi) in got_NegRSDReply() argument
5322 struct p_block_ack *p = pi->data; in got_NegRSDReply()
5324 peer_device = conn_peer_device(connection, pi->vnr); in got_NegRSDReply()
5338 switch (pi->cmd) { in got_NegRSDReply()
5352 static int got_BarrierAck(struct drbd_connection *connection, struct packet_info *pi) in got_BarrierAck() argument
5354 struct p_barrier_ack *p = pi->data; in got_BarrierAck()
5376 static int got_OVResult(struct drbd_connection *connection, struct packet_info *pi) in got_OVResult() argument
5380 struct p_block_ack *p = pi->data; in got_OVResult()
5385 peer_device = conn_peer_device(connection, pi->vnr); in got_OVResult()
5428 static int got_skip(struct drbd_connection *connection, struct packet_info *pi) in got_skip() argument
5499 struct packet_info pi; in drbd_asender() local
5603 if (decode_header(connection, connection->meta.rbuf, &pi)) in drbd_asender()
5605 cmd = &asender_tbl[pi.cmd]; in drbd_asender()
5606 if (pi.cmd >= ARRAY_SIZE(asender_tbl) || !cmd->fn) { in drbd_asender()
5608 cmdname(pi.cmd), pi.cmd); in drbd_asender()
5612 if (pi.size != expect - header_size) { in drbd_asender()
5614 pi.cmd, pi.size); in drbd_asender()
5621 err = cmd->fn(connection, &pi); in drbd_asender()