Lines Matching defs:peer_device

485 	struct drbd_peer_device *peer_device;
489 peer_device = idr_get_next(&connection->peer_devices, &vnr);
490 if (peer_device)
491 minor = device_to_minor(peer_device->device);
636 void *drbd_prepare_command(struct drbd_peer_device *peer_device, struct drbd_socket *sock)
638 return conn_prepare_command(peer_device->connection, sock);
690 int drbd_send_command(struct drbd_peer_device *peer_device, struct drbd_socket *sock,
696 err = __send_command(peer_device->connection, peer_device->device->vnr,
722 int drbd_send_sync_param(struct drbd_peer_device *peer_device)
727 const int apv = peer_device->connection->agreed_pro_version;
732 sock = &peer_device->connection->data;
733 p = drbd_prepare_command(peer_device, sock);
738 nc = rcu_dereference(peer_device->connection->net_conf);
751 if (get_ldev(peer_device->device)) {
752 dc = rcu_dereference(peer_device->device->ldev->disk_conf);
758 put_ldev(peer_device->device);
773 return drbd_send_command(peer_device, sock, cmd, size, NULL, 0);
831 static int _drbd_send_uuids(struct drbd_peer_device *peer_device, u64 uuid_flags)
833 struct drbd_device *device = peer_device->device;
841 sock = &peer_device->connection->data;
842 p = drbd_prepare_command(peer_device, sock);
855 uuid_flags |= rcu_dereference(peer_device->connection->net_conf)->discard_my_data ? 1 : 0;
862 return drbd_send_command(peer_device, sock, P_UUIDS, sizeof(*p), NULL, 0);
865 int drbd_send_uuids(struct drbd_peer_device *peer_device)
867 return _drbd_send_uuids(peer_device, 0);
870 int drbd_send_uuids_skip_initial_sync(struct drbd_peer_device *peer_device)
872 return _drbd_send_uuids(peer_device, 8);
893 void drbd_gen_and_send_sync_uuid(struct drbd_peer_device *peer_device)
895 struct drbd_device *device = peer_device->device;
911 sock = &peer_device->connection->data;
912 p = drbd_prepare_command(peer_device, sock);
915 drbd_send_command(peer_device, sock, P_SYNC_UUID, sizeof(*p), NULL, 0);
944 int drbd_send_sizes(struct drbd_peer_device *peer_device, int trigger_reply, enum dds_flags flags)
946 struct drbd_device *device = peer_device->device;
954 sock = &peer_device->connection->data;
955 p = drbd_prepare_command(peer_device, sock);
960 if (peer_device->connection->agreed_features & DRBD_FF_WSAME)
983 if (peer_device->connection->agreed_pro_version <= 94)
985 else if (peer_device->connection->agreed_pro_version < 100)
998 return drbd_send_command(peer_device, sock, P_SIZES, packet_size, NULL, 0);
1003 * @peer_device: DRBD peer device.
1005 int drbd_send_current_state(struct drbd_peer_device *peer_device)
1010 sock = &peer_device->connection->data;
1011 p = drbd_prepare_command(peer_device, sock);
1014 p->state = cpu_to_be32(peer_device->device->state.i); /* Within the send mutex */
1015 return drbd_send_command(peer_device, sock, P_STATE, sizeof(*p), NULL, 0);
1020 * @peer_device: DRBD peer device.
1028 int drbd_send_state(struct drbd_peer_device *peer_device, union drbd_state state)
1033 sock = &peer_device->connection->data;
1034 p = drbd_prepare_command(peer_device, sock);
1038 return drbd_send_command(peer_device, sock, P_STATE, sizeof(*p), NULL, 0);
1041 int drbd_send_state_req(struct drbd_peer_device *peer_device, union drbd_state mask, union drbd_state val)
1046 sock = &peer_device->connection->data;
1047 p = drbd_prepare_command(peer_device, sock);
1052 return drbd_send_command(peer_device, sock, P_STATE_CHG_REQ, sizeof(*p), NULL, 0);
1071 void drbd_send_sr_reply(struct drbd_peer_device *peer_device, enum drbd_state_rv retcode)
1076 sock = &peer_device->connection->meta;
1077 p = drbd_prepare_command(peer_device, sock);
1080 drbd_send_command(peer_device, sock, P_STATE_CHG_REPLY, sizeof(*p), NULL, 0);
1349 static int _drbd_send_ack(struct drbd_peer_device *peer_device, enum drbd_packet cmd,
1355 if (peer_device->device->state.conn < C_CONNECTED)
1358 sock = &peer_device->connection->meta;
1359 p = drbd_prepare_command(peer_device, sock);
1365 p->seq_num = cpu_to_be32(atomic_inc_return(&peer_device->device->packet_seq));
1366 return drbd_send_command(peer_device, sock, cmd, sizeof(*p), NULL, 0);
1372 void drbd_send_ack_dp(struct drbd_peer_device *peer_device, enum drbd_packet cmd,
1375 if (peer_device->connection->peer_integrity_tfm)
1376 data_size -= crypto_shash_digestsize(peer_device->connection->peer_integrity_tfm);
1377 _drbd_send_ack(peer_device, cmd, dp->sector, cpu_to_be32(data_size),
1381 void drbd_send_ack_rp(struct drbd_peer_device *peer_device, enum drbd_packet cmd,
1384 _drbd_send_ack(peer_device, cmd, rp->sector, rp->blksize, rp->block_id);
1393 int drbd_send_ack(struct drbd_peer_device *peer_device, enum drbd_packet cmd,
1396 return _drbd_send_ack(peer_device, cmd,
1404 int drbd_send_ack_ex(struct drbd_peer_device *peer_device, enum drbd_packet cmd,
1407 return _drbd_send_ack(peer_device, cmd,
1413 int drbd_send_rs_deallocated(struct drbd_peer_device *peer_device,
1419 sock = &peer_device->connection->data;
1420 p = drbd_prepare_command(peer_device, sock);
1426 return drbd_send_command(peer_device, sock, P_RS_DEALLOCATED, sizeof(*p), NULL, 0);
1429 int drbd_send_drequest(struct drbd_peer_device *peer_device, int cmd,
1435 sock = &peer_device->connection->data;
1436 p = drbd_prepare_command(peer_device, sock);
1442 return drbd_send_command(peer_device, sock, cmd, sizeof(*p), NULL, 0);
1445 int drbd_send_drequest_csum(struct drbd_peer_device *peer_device, sector_t sector, int size,
1453 sock = &peer_device->connection->data;
1454 p = drbd_prepare_command(peer_device, sock);
1460 return drbd_send_command(peer_device, sock, cmd, sizeof(*p), digest, digest_size);
1463 int drbd_send_ov_request(struct drbd_peer_device *peer_device, sector_t sector, int size)
1468 sock = &peer_device->connection->data;
1469 p = drbd_prepare_command(peer_device, sock);
1475 return drbd_send_command(peer_device, sock, P_OV_REQUEST, sizeof(*p), NULL, 0);
1533 static int _drbd_no_send_page(struct drbd_peer_device *peer_device, struct page *page,
1540 socket = peer_device->connection->data.socket;
1542 err = drbd_send_all(peer_device->connection, socket, addr, size, msg_flags);
1545 peer_device->device->send_cnt += size >> 9;
1549 static int _drbd_send_page(struct drbd_peer_device *peer_device, struct page *page,
1552 struct socket *socket = peer_device->connection->data.socket;
1563 return _drbd_no_send_page(peer_device, page, offset, size, msg_flags);
1566 drbd_update_congested(peer_device->connection);
1573 if (we_should_drop_the_connection(peer_device->connection, socket))
1577 drbd_warn(peer_device->device, "%s: size=%d len=%d sent=%d\n",
1586 clear_bit(NET_CONGESTED, &peer_device->connection->flags);
1590 peer_device->device->send_cnt += size >> 9;
1595 static int _drbd_send_bio(struct drbd_peer_device *peer_device, struct bio *bio)
1604 err = _drbd_no_send_page(peer_device, bvec.bv_page,
1617 static int _drbd_send_zc_bio(struct drbd_peer_device *peer_device, struct bio *bio)
1626 err = _drbd_send_page(peer_device, bvec.bv_page,
1638 static int _drbd_send_zc_ee(struct drbd_peer_device *peer_device,
1649 err = _drbd_send_page(peer_device, page, 0, l,
1679 int drbd_send_dblock(struct drbd_peer_device *peer_device, struct drbd_request *req)
1681 struct drbd_device *device = peer_device->device;
1690 sock = &peer_device->connection->data;
1691 p = drbd_prepare_command(peer_device, sock);
1692 digest_size = peer_device->connection->integrity_tfm ?
1693 crypto_shash_digestsize(peer_device->connection->integrity_tfm) : 0;
1700 dp_flags = bio_flags_to_wire(peer_device->connection, req->master_bio);
1704 if (peer_device->connection->agreed_pro_version >= 100) {
1719 err = __send_command(peer_device->connection, device->vnr, sock, cmd, sizeof(*t), NULL, 0);
1735 drbd_csum_bio(peer_device->connection->integrity_tfm, req->master_bio, digest_out);
1738 __send_command(peer_device->connection, device->vnr, sock, P_WSAME,
1743 __send_command(peer_device->connection, device->vnr, sock, P_DATA,
1758 err = _drbd_send_bio(peer_device, req->master_bio);
1760 err = _drbd_send_zc_bio(peer_device, req->master_bio);
1767 drbd_csum_bio(peer_device->connection->integrity_tfm, req->master_bio, digest);
1787 int drbd_send_block(struct drbd_peer_device *peer_device, enum drbd_packet cmd,
1790 struct drbd_device *device = peer_device->device;
1796 sock = &peer_device->connection->data;
1797 p = drbd_prepare_command(peer_device, sock);
1799 digest_size = peer_device->connection->integrity_tfm ?
1800 crypto_shash_digestsize(peer_device->connection->integrity_tfm) : 0;
1809 drbd_csum_ee(peer_device->connection->integrity_tfm, peer_req, p + 1);
1810 err = __send_command(peer_device->connection, device->vnr, sock, cmd, sizeof(*p) + digest_size, NULL, peer_req->i.size);
1812 err = _drbd_send_zc_ee(peer_device, peer_req);
1818 int drbd_send_out_of_sync(struct drbd_peer_device *peer_device, struct drbd_request *req)
1823 sock = &peer_device->connection->data;
1824 p = drbd_prepare_command(peer_device, sock);
1829 return drbd_send_command(peer_device, sock, P_OUT_OF_SYNC, sizeof(*p), NULL, 0);
2231 struct drbd_peer_device *peer_device, *tmp_peer_device;
2263 for_each_peer_device_safe(peer_device, tmp_peer_device, device) {
2264 kref_put(&peer_device->connection->kref, drbd_destroy_connection);
2265 kfree(peer_device);
2725 struct drbd_peer_device *peer_device, *tmp_peer_device;
2801 peer_device = kzalloc(sizeof(struct drbd_peer_device), GFP_KERNEL);
2802 if (!peer_device)
2804 peer_device->connection = connection;
2805 peer_device->device = device;
2807 list_add(&peer_device->peer_devices, &device->peer_devices);
2810 id = idr_alloc(&connection->peer_devices, peer_device, vnr, vnr + 1, GFP_KERNEL);
2817 INIT_WORK(&peer_device->send_acks_work, drbd_send_acks_wf);
2830 for_each_peer_device(peer_device, device)
2831 drbd_connected(peer_device);
2834 for_each_peer_device(peer_device, device)
2835 drbd_debugfs_peer_device_add(peer_device);
2841 peer_device = idr_remove(&connection->peer_devices, vnr);
2842 if (peer_device)
2845 for_each_peer_device_safe(peer_device, tmp_peer_device, device) {
2846 list_del(&peer_device->peer_devices);
2847 kfree(peer_device);
2871 struct drbd_peer_device *peer_device;
2874 for_each_peer_device(peer_device, device)
2875 drbd_debugfs_peer_device_cleanup(peer_device);
2992 struct drbd_peer_device *peer_device;
2996 idr_for_each_entry(&connection->peer_devices, peer_device, vnr) {
2997 struct drbd_device *device = peer_device->device;