Lines Matching refs:pi
796 struct packet_info pi; in receive_first_packet() local
815 err = decode_header(connection, connection->data.rbuf, &pi); in receive_first_packet()
818 return pi.cmd; in receive_first_packet()
1124 static int decode_header(struct drbd_connection *connection, void *header, struct packet_info *pi) in decode_header() argument
1135 pi->vnr = be16_to_cpu(h->volume); in decode_header()
1136 pi->cmd = be16_to_cpu(h->command); in decode_header()
1137 pi->size = be32_to_cpu(h->length); in decode_header()
1141 pi->cmd = be16_to_cpu(h->command); in decode_header()
1142 pi->size = be32_to_cpu(h->length); in decode_header()
1143 pi->vnr = 0; in decode_header()
1147 pi->cmd = be16_to_cpu(h->command); in decode_header()
1148 pi->size = be16_to_cpu(h->length); in decode_header()
1149 pi->vnr = 0; in decode_header()
1156 pi->data = header + header_size; in decode_header()
1160 static int drbd_recv_header(struct drbd_connection *connection, struct packet_info *pi) in drbd_recv_header() argument
1169 err = decode_header(connection, buffer, pi); in drbd_recv_header()
1517 static int receive_Barrier(struct drbd_connection *connection, struct packet_info *pi) in receive_Barrier() argument
1520 struct p_barrier *p = pi->data; in receive_Barrier()
1589 struct packet_info *pi) __must_hold(local) in read_in_block() argument
1596 unsigned int data_size = pi->size, ds; in read_in_block()
1600 struct p_trim *trim = (pi->cmd == P_TRIM) ? pi->data : NULL; in read_in_block()
1784 struct packet_info *pi) __releases(local) in recv_resync_read() argument
1789 peer_req = read_in_block(peer_device, ID_SYNCER, sector, pi); in recv_resync_read()
1806 atomic_add(pi->size >> 9, &device->rs_sect_ev); in recv_resync_read()
1839 static int receive_DataReply(struct drbd_connection *connection, struct packet_info *pi) in receive_DataReply() argument
1846 struct p_data *p = pi->data; in receive_DataReply()
1848 peer_device = conn_peer_device(connection, pi->vnr); in receive_DataReply()
1864 err = recv_dless_read(peer_device, req, sector, pi->size); in receive_DataReply()
1874 static int receive_RSDataReply(struct drbd_connection *connection, struct packet_info *pi) in receive_RSDataReply() argument
1880 struct p_data *p = pi->data; in receive_RSDataReply()
1882 peer_device = conn_peer_device(connection, pi->vnr); in receive_RSDataReply()
1894 err = recv_resync_read(peer_device, sector, pi); in receive_RSDataReply()
1899 err = drbd_drain_block(peer_device, pi->size); in receive_RSDataReply()
1901 drbd_send_ack_dp(peer_device, P_NEG_ACK, p, pi->size); in receive_RSDataReply()
1904 atomic_add(pi->size >> 9, &device->rs_sect_in); in receive_RSDataReply()
2271 static int receive_Data(struct drbd_connection *connection, struct packet_info *pi) in receive_Data() argument
2278 struct p_data *p = pi->data; in receive_Data()
2284 peer_device = conn_peer_device(connection, pi->vnr); in receive_Data()
2293 drbd_send_ack_dp(peer_device, P_NEG_ACK, p, pi->size); in receive_Data()
2295 err2 = drbd_drain_block(peer_device, pi->size); in receive_Data()
2308 peer_req = read_in_block(peer_device, p->block_id, sector, pi); in receive_Data()
2320 if (pi->cmd == P_TRIM) { in receive_Data()
2513 static int receive_DataRequest(struct drbd_connection *connection, struct packet_info *pi) in receive_DataRequest() argument
2523 struct p_block_req *p = pi->data; in receive_DataRequest()
2525 peer_device = conn_peer_device(connection, pi->vnr); in receive_DataRequest()
2547 switch (pi->cmd) { in receive_DataRequest()
2569 return drbd_drain_block(peer_device, pi->size); in receive_DataRequest()
2582 switch (pi->cmd) { in receive_DataRequest()
2600 di = kmalloc(sizeof(*di) + pi->size, GFP_NOIO); in receive_DataRequest()
2604 di->digest_size = pi->size; in receive_DataRequest()
2610 if (drbd_recv_all(peer_device->connection, di->digest, pi->size)) in receive_DataRequest()
2613 if (pi->cmd == P_CSUM_RS_REQUEST) { in receive_DataRequest()
2620 } else if (pi->cmd == P_OV_REPLY) { in receive_DataRequest()
3291 static int receive_protocol(struct drbd_connection *connection, struct packet_info *pi) in receive_protocol() argument
3293 struct p_protocol *p = pi->data; in receive_protocol()
3312 if (pi->size > sizeof(integrity_alg)) in receive_protocol()
3314 err = drbd_recv_all(connection, integrity_alg, pi->size); in receive_protocol()
3320 if (pi->cmd != P_PROTOCOL_UPDATE) { in receive_protocol()
3463 static int ignore_remaining_packet(struct drbd_connection *connection, struct packet_info *pi) in ignore_remaining_packet() argument
3466 int size = pi->size; in ignore_remaining_packet()
3494 static int config_unknown_volume(struct drbd_connection *connection, struct packet_info *pi) in config_unknown_volume() argument
3497 cmdname(pi->cmd), pi->vnr); in config_unknown_volume()
3498 return ignore_remaining_packet(connection, pi); in config_unknown_volume()
3501 static int receive_SyncParam(struct drbd_connection *connection, struct packet_info *pi) in receive_SyncParam() argument
3516 peer_device = conn_peer_device(connection, pi->vnr); in receive_SyncParam()
3518 return config_unknown_volume(connection, pi); in receive_SyncParam()
3527 if (pi->size > exp_max_sz) { in receive_SyncParam()
3529 pi->size, exp_max_sz); in receive_SyncParam()
3535 data_size = pi->size - header_size; in receive_SyncParam()
3538 data_size = pi->size - header_size; in receive_SyncParam()
3542 data_size = pi->size - header_size; in receive_SyncParam()
3547 p = pi->data; in receive_SyncParam()
3726 static int receive_sizes(struct drbd_connection *connection, struct packet_info *pi) in receive_sizes() argument
3730 struct p_sizes *p = pi->data; in receive_sizes()
3736 peer_device = conn_peer_device(connection, pi->vnr); in receive_sizes()
3738 return config_unknown_volume(connection, pi); in receive_sizes()
3867 static int receive_uuids(struct drbd_connection *connection, struct packet_info *pi) in receive_uuids() argument
3871 struct p_uuids *p = pi->data; in receive_uuids()
3875 peer_device = conn_peer_device(connection, pi->vnr); in receive_uuids()
3877 return config_unknown_volume(connection, pi); in receive_uuids()
3974 static int receive_req_state(struct drbd_connection *connection, struct packet_info *pi) in receive_req_state() argument
3978 struct p_req_state *p = pi->data; in receive_req_state()
3982 peer_device = conn_peer_device(connection, pi->vnr); in receive_req_state()
4007 static int receive_req_conn_state(struct drbd_connection *connection, struct packet_info *pi) in receive_req_conn_state() argument
4009 struct p_req_state *p = pi->data; in receive_req_conn_state()
4031 static int receive_state(struct drbd_connection *connection, struct packet_info *pi) in receive_state() argument
4035 struct p_state *p = pi->data; in receive_state()
4041 peer_device = conn_peer_device(connection, pi->vnr); in receive_state()
4043 return config_unknown_volume(connection, pi); in receive_state()
4209 static int receive_sync_uuid(struct drbd_connection *connection, struct packet_info *pi) in receive_sync_uuid() argument
4213 struct p_rs_uuid *p = pi->data; in receive_sync_uuid()
4215 peer_device = conn_peer_device(connection, pi->vnr); in receive_sync_uuid()
4433 static int receive_bitmap(struct drbd_connection *connection, struct packet_info *pi) in receive_bitmap() argument
4440 peer_device = conn_peer_device(connection, pi->vnr); in receive_bitmap()
4455 if (pi->cmd == P_BITMAP) in receive_bitmap()
4456 err = receive_bitmap_plain(peer_device, pi->size, pi->data, &c); in receive_bitmap()
4457 else if (pi->cmd == P_COMPRESSED_BITMAP) { in receive_bitmap()
4460 struct p_compressed_bm *p = pi->data; in receive_bitmap()
4462 if (pi->size > DRBD_SOCKET_BUFFER_SIZE - drbd_header_size(connection)) { in receive_bitmap()
4467 if (pi->size <= sizeof(*p)) { in receive_bitmap()
4468 drbd_err(device, "ReportCBitmap packet too small (l:%u)\n", pi->size); in receive_bitmap()
4472 err = drbd_recv_all(peer_device->connection, p, pi->size); in receive_bitmap()
4475 err = decode_bitmap_c(peer_device, p, &c, pi->size); in receive_bitmap()
4477 …drbd_warn(device, "receive_bitmap: cmd neither ReportBitMap nor ReportCBitMap (is 0x%x)", pi->cmd); in receive_bitmap()
4482 c.packets[pi->cmd == P_BITMAP]++; in receive_bitmap()
4483 c.bytes[pi->cmd == P_BITMAP] += drbd_header_size(connection) + pi->size; in receive_bitmap()
4490 err = drbd_recv_header(peer_device->connection, pi); in receive_bitmap()
4521 static int receive_skip(struct drbd_connection *connection, struct packet_info *pi) in receive_skip() argument
4524 pi->cmd, pi->size); in receive_skip()
4526 return ignore_remaining_packet(connection, pi); in receive_skip()
4529 static int receive_UnplugRemote(struct drbd_connection *connection, struct packet_info *pi) in receive_UnplugRemote() argument
4538 static int receive_out_of_sync(struct drbd_connection *connection, struct packet_info *pi) in receive_out_of_sync() argument
4542 struct p_block_desc *p = pi->data; in receive_out_of_sync()
4544 peer_device = conn_peer_device(connection, pi->vnr); in receive_out_of_sync()
4600 struct packet_info pi; in drbdd() local
4609 if (drbd_recv_header(connection, &pi)) in drbdd()
4612 cmd = &drbd_cmd_handler[pi.cmd]; in drbdd()
4613 if (unlikely(pi.cmd >= ARRAY_SIZE(drbd_cmd_handler) || !cmd->fn)) { in drbdd()
4615 cmdname(pi.cmd), pi.cmd); in drbdd()
4620 if (pi.size > shs && !cmd->expect_payload) { in drbdd()
4622 cmdname(pi.cmd), pi.size); in drbdd()
4628 err = drbd_recv_all_warn(connection, pi.data, shs); in drbdd()
4631 pi.size -= shs; in drbdd()
4635 err = cmd->fn(connection, &pi); in drbdd()
4638 cmdname(pi.cmd), err, pi.size); in drbdd()
4822 struct packet_info pi; in drbd_do_features() local
4829 err = drbd_recv_header(connection, &pi); in drbd_do_features()
4833 if (pi.cmd != P_CONNECTION_FEATURES) { in drbd_do_features()
4835 cmdname(pi.cmd), pi.cmd); in drbd_do_features()
4839 if (pi.size != expect) { in drbd_do_features()
4841 expect, pi.size); in drbd_do_features()
4845 p = pi.data; in drbd_do_features()
4906 struct packet_info pi; in drbd_do_auth() local
4940 err = drbd_recv_header(connection, &pi); in drbd_do_auth()
4946 if (pi.cmd != P_AUTH_CHALLENGE) { in drbd_do_auth()
4948 cmdname(pi.cmd), pi.cmd); in drbd_do_auth()
4953 if (pi.size > CHALLENGE_LEN * 2) { in drbd_do_auth()
4959 if (pi.size < CHALLENGE_LEN) { in drbd_do_auth()
4965 peers_ch = kmalloc(pi.size, GFP_NOIO); in drbd_do_auth()
4972 err = drbd_recv_all_warn(connection, peers_ch, pi.size); in drbd_do_auth()
4993 sg_set_buf(&sg, peers_ch, pi.size); in drbd_do_auth()
5011 err = drbd_recv_header(connection, &pi); in drbd_do_auth()
5017 if (pi.cmd != P_AUTH_RESPONSE) { in drbd_do_auth()
5019 cmdname(pi.cmd), pi.cmd); in drbd_do_auth()
5024 if (pi.size != resp_size) { in drbd_do_auth()
5099 static int got_conn_RqSReply(struct drbd_connection *connection, struct packet_info *pi) in got_conn_RqSReply() argument
5101 struct p_req_state_reply *p = pi->data; in got_conn_RqSReply()
5116 static int got_RqSReply(struct drbd_connection *connection, struct packet_info *pi) in got_RqSReply() argument
5120 struct p_req_state_reply *p = pi->data; in got_RqSReply()
5123 peer_device = conn_peer_device(connection, pi->vnr); in got_RqSReply()
5130 return got_conn_RqSReply(connection, pi); in got_RqSReply()
5145 static int got_Ping(struct drbd_connection *connection, struct packet_info *pi) in got_Ping() argument
5151 static int got_PingAck(struct drbd_connection *connection, struct packet_info *pi) in got_PingAck() argument
5161 static int got_IsInSync(struct drbd_connection *connection, struct packet_info *pi) in got_IsInSync() argument
5165 struct p_block_ack *p = pi->data; in got_IsInSync()
5169 peer_device = conn_peer_device(connection, pi->vnr); in got_IsInSync()
5213 static int got_BlockAck(struct drbd_connection *connection, struct packet_info *pi) in got_BlockAck() argument
5217 struct p_block_ack *p = pi->data; in got_BlockAck()
5222 peer_device = conn_peer_device(connection, pi->vnr); in got_BlockAck()
5234 switch (pi->cmd) { in got_BlockAck()
5259 static int got_NegAck(struct drbd_connection *connection, struct packet_info *pi) in got_NegAck() argument
5263 struct p_block_ack *p = pi->data; in got_NegAck()
5268 peer_device = conn_peer_device(connection, pi->vnr); in got_NegAck()
5295 static int got_NegDReply(struct drbd_connection *connection, struct packet_info *pi) in got_NegDReply() argument
5299 struct p_block_ack *p = pi->data; in got_NegDReply()
5302 peer_device = conn_peer_device(connection, pi->vnr); in got_NegDReply()
5317 static int got_NegRSDReply(struct drbd_connection *connection, struct packet_info *pi) in got_NegRSDReply() argument
5323 struct p_block_ack *p = pi->data; in got_NegRSDReply()
5325 peer_device = conn_peer_device(connection, pi->vnr); in got_NegRSDReply()
5339 switch (pi->cmd) { in got_NegRSDReply()
5353 static int got_BarrierAck(struct drbd_connection *connection, struct packet_info *pi) in got_BarrierAck() argument
5355 struct p_barrier_ack *p = pi->data; in got_BarrierAck()
5377 static int got_OVResult(struct drbd_connection *connection, struct packet_info *pi) in got_OVResult() argument
5381 struct p_block_ack *p = pi->data; in got_OVResult()
5386 peer_device = conn_peer_device(connection, pi->vnr); in got_OVResult()
5429 static int got_skip(struct drbd_connection *connection, struct packet_info *pi) in got_skip() argument
5500 struct packet_info pi; in drbd_asender() local
5604 if (decode_header(connection, connection->meta.rbuf, &pi)) in drbd_asender()
5606 cmd = &asender_tbl[pi.cmd]; in drbd_asender()
5607 if (pi.cmd >= ARRAY_SIZE(asender_tbl) || !cmd->fn) { in drbd_asender()
5609 cmdname(pi.cmd), pi.cmd); in drbd_asender()
5613 if (pi.size != expect - header_size) { in drbd_asender()
5615 pi.cmd, pi.size); in drbd_asender()
5622 err = cmd->fn(connection, &pi); in drbd_asender()