Lines Matching defs:peer_device

233 		struct drbd_peer_device *peer_device;
236 peer_device = conn_peer_device(connection, req->device->vnr);
237 _req_mod(req, BARRIER_ACKED, peer_device);
260 struct drbd_peer_device *peer_device;
264 peer_device = conn_peer_device(connection, req->device->vnr);
265 _req_mod(req, what, peer_device);
476 struct drbd_peer_device *peer_device;
480 peer_device = idr_get_next(&connection->peer_devices, &vnr);
481 if (peer_device)
482 minor = device_to_minor(peer_device->device);
626 void *drbd_prepare_command(struct drbd_peer_device *peer_device, struct drbd_socket *sock)
628 return conn_prepare_command(peer_device->connection, sock);
680 int drbd_send_command(struct drbd_peer_device *peer_device, struct drbd_socket *sock,
686 err = __send_command(peer_device->connection, peer_device->device->vnr,
712 int drbd_send_sync_param(struct drbd_peer_device *peer_device)
717 const int apv = peer_device->connection->agreed_pro_version;
722 sock = &peer_device->connection->data;
723 p = drbd_prepare_command(peer_device, sock);
728 nc = rcu_dereference(peer_device->connection->net_conf);
742 if (get_ldev(peer_device->device)) {
743 dc = rcu_dereference(peer_device->device->ldev->disk_conf);
749 put_ldev(peer_device->device);
764 return drbd_send_command(peer_device, sock, cmd, size, NULL, 0);
822 static int _drbd_send_uuids(struct drbd_peer_device *peer_device, u64 uuid_flags)
824 struct drbd_device *device = peer_device->device;
832 sock = &peer_device->connection->data;
833 p = drbd_prepare_command(peer_device, sock);
846 uuid_flags |= rcu_dereference(peer_device->connection->net_conf)->discard_my_data ? 1 : 0;
853 return drbd_send_command(peer_device, sock, P_UUIDS, sizeof(*p), NULL, 0);
856 int drbd_send_uuids(struct drbd_peer_device *peer_device)
858 return _drbd_send_uuids(peer_device, 0);
861 int drbd_send_uuids_skip_initial_sync(struct drbd_peer_device *peer_device)
863 return _drbd_send_uuids(peer_device, 8);
884 void drbd_gen_and_send_sync_uuid(struct drbd_peer_device *peer_device)
886 struct drbd_device *device = peer_device->device;
902 sock = &peer_device->connection->data;
903 p = drbd_prepare_command(peer_device, sock);
906 drbd_send_command(peer_device, sock, P_SYNC_UUID, sizeof(*p), NULL, 0);
910 int drbd_send_sizes(struct drbd_peer_device *peer_device, int trigger_reply, enum dds_flags flags)
912 struct drbd_device *device = peer_device->device;
920 sock = &peer_device->connection->data;
921 p = drbd_prepare_command(peer_device, sock);
926 if (peer_device->connection->agreed_features & DRBD_FF_WSAME)
969 if (peer_device->connection->agreed_pro_version <= 94)
971 else if (peer_device->connection->agreed_pro_version < 100)
984 return drbd_send_command(peer_device, sock, P_SIZES, packet_size, NULL, 0);
989 * @peer_device: DRBD peer device.
991 int drbd_send_current_state(struct drbd_peer_device *peer_device)
996 sock = &peer_device->connection->data;
997 p = drbd_prepare_command(peer_device, sock);
1000 p->state = cpu_to_be32(peer_device->device->state.i); /* Within the send mutex */
1001 return drbd_send_command(peer_device, sock, P_STATE, sizeof(*p), NULL, 0);
1006 * @peer_device: DRBD peer device.
1014 int drbd_send_state(struct drbd_peer_device *peer_device, union drbd_state state)
1019 sock = &peer_device->connection->data;
1020 p = drbd_prepare_command(peer_device, sock);
1024 return drbd_send_command(peer_device, sock, P_STATE, sizeof(*p), NULL, 0);
1027 int drbd_send_state_req(struct drbd_peer_device *peer_device, union drbd_state mask, union drbd_state val)
1032 sock = &peer_device->connection->data;
1033 p = drbd_prepare_command(peer_device, sock);
1038 return drbd_send_command(peer_device, sock, P_STATE_CHG_REQ, sizeof(*p), NULL, 0);
1057 void drbd_send_sr_reply(struct drbd_peer_device *peer_device, enum drbd_state_rv retcode)
1062 sock = &peer_device->connection->meta;
1063 p = drbd_prepare_command(peer_device, sock);
1066 drbd_send_command(peer_device, sock, P_STATE_CHG_REPLY, sizeof(*p), NULL, 0);
1205 send_bitmap_rle_or_plain(struct drbd_peer_device *peer_device, struct bm_xfer_ctx *c)
1207 struct drbd_device *device = peer_device->device;
1208 struct drbd_socket *sock = &peer_device->connection->data;
1209 unsigned int header_size = drbd_header_size(peer_device->connection);
1220 err = __send_command(peer_device->connection, device->vnr, sock,
1241 err = __send_command(peer_device->connection, device->vnr, sock, P_BITMAP,
1254 INFO_bm_xfer_stats(peer_device, "send", c);
1264 struct drbd_peer_device *peer_device)
1276 if (drbd_bm_write(device, peer_device)) {
1295 err = send_bitmap_rle_or_plain(peer_device, &c);
1301 int drbd_send_bitmap(struct drbd_device *device, struct drbd_peer_device *peer_device)
1303 struct drbd_socket *sock = &peer_device->connection->data;
1308 err = !_drbd_send_bitmap(device, peer_device);
1332 * @peer_device: DRBD peer device.
1338 static int _drbd_send_ack(struct drbd_peer_device *peer_device, enum drbd_packet cmd,
1344 if (peer_device->device->state.conn < C_CONNECTED)
1347 sock = &peer_device->connection->meta;
1348 p = drbd_prepare_command(peer_device, sock);
1354 p->seq_num = cpu_to_be32(atomic_inc_return(&peer_device->device->packet_seq));
1355 return drbd_send_command(peer_device, sock, cmd, sizeof(*p), NULL, 0);
1361 void drbd_send_ack_dp(struct drbd_peer_device *peer_device, enum drbd_packet cmd,
1364 if (peer_device->connection->peer_integrity_tfm)
1365 data_size -= crypto_shash_digestsize(peer_device->connection->peer_integrity_tfm);
1366 _drbd_send_ack(peer_device, cmd, dp->sector, cpu_to_be32(data_size),
1370 void drbd_send_ack_rp(struct drbd_peer_device *peer_device, enum drbd_packet cmd,
1373 _drbd_send_ack(peer_device, cmd, rp->sector, rp->blksize, rp->block_id);
1378 * @peer_device: DRBD peer device
1382 int drbd_send_ack(struct drbd_peer_device *peer_device, enum drbd_packet cmd,
1385 return _drbd_send_ack(peer_device, cmd,
1393 int drbd_send_ack_ex(struct drbd_peer_device *peer_device, enum drbd_packet cmd,
1396 return _drbd_send_ack(peer_device, cmd,
1402 int drbd_send_rs_deallocated(struct drbd_peer_device *peer_device,
1408 sock = &peer_device->connection->data;
1409 p = drbd_prepare_command(peer_device, sock);
1415 return drbd_send_command(peer_device, sock, P_RS_DEALLOCATED, sizeof(*p), NULL, 0);
1418 int drbd_send_drequest(struct drbd_peer_device *peer_device, int cmd,
1424 sock = &peer_device->connection->data;
1425 p = drbd_prepare_command(peer_device, sock);
1431 return drbd_send_command(peer_device, sock, cmd, sizeof(*p), NULL, 0);
1434 int drbd_send_drequest_csum(struct drbd_peer_device *peer_device, sector_t sector, int size,
1442 sock = &peer_device->connection->data;
1443 p = drbd_prepare_command(peer_device, sock);
1449 return drbd_send_command(peer_device, sock, cmd, sizeof(*p), digest, digest_size);
1452 int drbd_send_ov_request(struct drbd_peer_device *peer_device, sector_t sector, int size)
1457 sock = &peer_device->connection->data;
1458 p = drbd_prepare_command(peer_device, sock);
1464 return drbd_send_command(peer_device, sock, P_OV_REQUEST, sizeof(*p), NULL, 0);
1522 static int _drbd_no_send_page(struct drbd_peer_device *peer_device, struct page *page,
1529 socket = peer_device->connection->data.socket;
1531 err = drbd_send_all(peer_device->connection, socket, addr, size, msg_flags);
1534 peer_device->device->send_cnt += size >> 9;
1538 static int _drbd_send_page(struct drbd_peer_device *peer_device, struct page *page,
1541 struct socket *socket = peer_device->connection->data.socket;
1556 drbd_update_congested(peer_device->connection);
1566 if (we_should_drop_the_connection(peer_device->connection, socket))
1570 drbd_warn(peer_device->device, "%s: size=%d len=%d sent=%d\n",
1579 clear_bit(NET_CONGESTED, &peer_device->connection->flags);
1583 peer_device->device->send_cnt += size >> 9;
1588 static int _drbd_send_bio(struct drbd_peer_device *peer_device, struct bio *bio)
1597 err = _drbd_no_send_page(peer_device, bvec.bv_page,
1607 static int _drbd_send_zc_bio(struct drbd_peer_device *peer_device, struct bio *bio)
1616 err = _drbd_send_page(peer_device, bvec.bv_page,
1625 static int _drbd_send_zc_ee(struct drbd_peer_device *peer_device,
1636 err = _drbd_send_page(peer_device, page, 0, l,
1665 int drbd_send_dblock(struct drbd_peer_device *peer_device, struct drbd_request *req)
1667 struct drbd_device *device = peer_device->device;
1675 sock = &peer_device->connection->data;
1676 p = drbd_prepare_command(peer_device, sock);
1677 digest_size = peer_device->connection->integrity_tfm ?
1678 crypto_shash_digestsize(peer_device->connection->integrity_tfm) : 0;
1685 dp_flags = bio_flags_to_wire(peer_device->connection, req->master_bio);
1689 if (peer_device->connection->agreed_pro_version >= 100) {
1704 err = __send_command(peer_device->connection, device->vnr, sock, cmd, sizeof(*t), NULL, 0);
1712 drbd_csum_bio(peer_device->connection->integrity_tfm, req->master_bio, digest_out);
1713 err = __send_command(peer_device->connection, device->vnr, sock, P_DATA,
1728 err = _drbd_send_bio(peer_device, req->master_bio);
1730 err = _drbd_send_zc_bio(peer_device, req->master_bio);
1737 drbd_csum_bio(peer_device->connection->integrity_tfm, req->master_bio, digest);
1757 int drbd_send_block(struct drbd_peer_device *peer_device, enum drbd_packet cmd,
1760 struct drbd_device *device = peer_device->device;
1766 sock = &peer_device->connection->data;
1767 p = drbd_prepare_command(peer_device, sock);
1769 digest_size = peer_device->connection->integrity_tfm ?
1770 crypto_shash_digestsize(peer_device->connection->integrity_tfm) : 0;
1779 drbd_csum_ee(peer_device->connection->integrity_tfm, peer_req, p + 1);
1780 err = __send_command(peer_device->connection, device->vnr, sock, cmd, sizeof(*p) + digest_size, NULL, peer_req->i.size);
1782 err = _drbd_send_zc_ee(peer_device, peer_req);
1788 int drbd_send_out_of_sync(struct drbd_peer_device *peer_device, struct drbd_request *req)
1793 sock = &peer_device->connection->data;
1794 p = drbd_prepare_command(peer_device, sock);
1799 return drbd_send_command(peer_device, sock, P_OUT_OF_SYNC, sizeof(*p), NULL, 0);
2197 struct drbd_peer_device *peer_device, *tmp_peer_device;
2228 for_each_peer_device_safe(peer_device, tmp_peer_device, device) {
2229 kref_put(&peer_device->connection->kref, drbd_destroy_connection);
2230 kfree(peer_device);
2688 struct drbd_peer_device *peer_device, *tmp_peer_device;
2762 peer_device = kzalloc(sizeof(struct drbd_peer_device), GFP_KERNEL);
2763 if (!peer_device)
2765 peer_device->connection = connection;
2766 peer_device->device = device;
2768 list_add(&peer_device->peer_devices, &device->peer_devices);
2771 id = idr_alloc(&connection->peer_devices, peer_device, vnr, vnr + 1, GFP_KERNEL);
2778 INIT_WORK(&peer_device->send_acks_work, drbd_send_acks_wf);
2793 for_each_peer_device(peer_device, device)
2794 drbd_connected(peer_device);
2797 for_each_peer_device(peer_device, device)
2798 drbd_debugfs_peer_device_add(peer_device);
2806 peer_device = idr_remove(&connection->peer_devices, vnr);
2807 if (peer_device)
2810 for_each_peer_device_safe(peer_device, tmp_peer_device, device) {
2811 list_del(&peer_device->peer_devices);
2812 kfree(peer_device);
2834 struct drbd_peer_device *peer_device;
2837 for_each_peer_device(peer_device, device)
2838 drbd_debugfs_peer_device_cleanup(peer_device);
2955 struct drbd_peer_device *peer_device;
2959 idr_for_each_entry(&connection->peer_devices, peer_device, vnr) {
2960 struct drbd_device *device = peer_device->device;
3422 struct drbd_peer_device *peer_device) __must_hold(local)
3431 rv = drbd_bm_write(device, peer_device);
3448 struct drbd_peer_device *peer_device) __must_hold(local)
3453 return drbd_bm_write(device, peer_device);
3472 rv = work->io_fn(device, work->peer_device);
3510 struct drbd_peer_device *peer_device)
3512 D_ASSERT(device, current == peer_device->connection->worker.task);
3521 device->bm_io_work.peer_device = peer_device;
3533 drbd_queue_work(&peer_device->connection->sender_work,
3552 struct drbd_peer_device *peer_device)
3564 rv = io_fn(device, peer_device);