linux-yocto/drivers/block/rnbd
Md Haris Iqbal f6f84be089 block/rnbd-srv: Add sanity check and remove redundant assignment
The bio->bi_iter.bi_size is updated when bio_add_page() is called. So we
do not need to assign msg->bi_size again to it, since its redudant and
can also be harmful. Instead we can use it to add a sanity check, which
checks the locally calculated bi_size, with the one sent in msg.

Signed-off-by: Md Haris Iqbal <haris.iqbal@ionos.com>
Signed-off-by: Jack Wang <jinpu.wang@ionos.com>
Signed-off-by: Grzegorz Prajsner <grzegorz.prajsner@ionos.com>
Link: https://lore.kernel.org/r/20240809135346.978320-1-haris.iqbal@ionos.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2024-08-28 08:50:35 -06:00
..
Kconfig block/rnbd: Select SG_POOL for RNBD_CLIENT 2021-01-08 08:19:18 -07:00
Makefile block/rnbd: introduce rnbd_access_modes 2023-06-11 19:48:42 -06:00
README block/rnbd: Adding name to the Contributors List 2021-01-08 08:19:18 -07:00
rnbd-clt-sysfs.c block/rnbd: Constify struct kobj_type 2024-07-09 11:52:03 -06:00
rnbd-clt.c rnbd-cnt: don't set QUEUE_FLAG_SAME_FORCE 2024-06-28 10:37:34 -06:00
rnbd-clt.h rnbd-clt: pass sector_t type for resize capacity 2022-08-02 17:14:45 -06:00
rnbd-log.h
rnbd-proto.h block/rnbd: add support for REQ_OP_WRITE_ZEROES 2023-11-27 09:11:12 -07:00
rnbd-srv-sysfs.c block/rnbd: Constify struct kobj_type 2024-07-09 11:52:03 -06:00
rnbd-srv-trace.c block/rnbd-srv: Add event tracing support 2022-08-22 07:52:51 -06:00
rnbd-srv-trace.h tracing/treewide: Remove second parameter of __assign_str() 2024-05-22 20:14:47 -04:00
rnbd-srv.c block/rnbd-srv: Add sanity check and remove redundant assignment 2024-08-28 08:50:35 -06:00
rnbd-srv.h rnbd: port block device access to file 2024-02-25 12:05:23 +01:00


RDMA Network Block Device (RNBD)


Introduction

RNBD (RDMA Network Block Device) is a pair of kernel modules (client and server) that allow for remote access of a block device on the server over RTRS protocol using the RDMA (InfiniBand, RoCE, iWARP) transport. After being mapped, the remote block devices can be accessed on the client side as local block devices.

I/O is transferred between client and server by the RTRS transport modules. The administration of RNBD and RTRS modules is done via sysfs entries.

Requirements

RTRS kernel modules

Quick Start

Server side:

modprobe rnbd_server

Client side:

modprobe rnbd_client

echo "sessname=blya path=ip:10.50.100.66 device_path=/dev/ram0" > \

        /sys/devices/virtual/rnbd-client/ctl/map_device

Where "sessname=" is a session name, a string to identify the session on client and on server sides; "path=" is a destination IP address or a pair of a source and a destination IPs, separated by comma. Multiple "path=" options can be specified in order to use multipath (see RTRS description for details); "device_path=" is the block device to be mapped from the server side. After the session to the server machine is established, the mapped device will appear on the client side under /dev/rnbd.

RNBD-Server Module Parameters

dev_search_path

When a device is mapped from the client, the server generates the path to the block device on the server side by concatenating dev_search_path and the "device_path" that was specified in the map_device operation.

The default dev_search_path is: "/".

dev_search_path option can also contain %SESSNAME% in order to provide different device namespaces for different sessions. See "device_path" option for details.

============================ Protocol (rnbd/rnbd-proto.h)

  1. Before mapping first device from a given server, client sends an RNBD_MSG_SESS_INFO to the server. Server responds with RNBD_MSG_SESS_INFO_RSP. Currently the messages only contain the protocol version for backward compatibility.

  2. Client requests to open a device by sending RNBD_MSG_OPEN message. This contains the path to the device and access mode (read-only or writable). Server responds to the message with RNBD_MSG_OPEN_RSP. This contains a 32 bit device id to be used for IOs and device "geometry" related information: side, max_hw_sectors, etc.

  3. Client attaches RNBD_MSG_IO to each IO message send to a device. This message contains device id, provided by server in his rnbd_msg_open_rsp, sector to be accessed, read-write flags and bi_size.

  4. Client closes a device by sending RNBD_MSG_CLOSE which contains only the device id provided by the server.

========================================= Contributors List(in alphabetical order)

Danil Kipnis danil.kipnis@profitbricks.com Fabian Holler mail@fholler.de Guoqing Jiang guoqing.jiang@cloud.ionos.com Jack Wang jinpu.wang@profitbricks.com Kleber Souza kleber.souza@profitbricks.com Lutz Pogrell lutz.pogrell@cloud.ionos.com Milind Dumbare Milind.dumbare@gmail.com Roman Penyaev roman.penyaev@profitbricks.com Swapnil Ingle ingleswapnil@gmail.com