mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-20 14:18:53 +07:00
aa4d16e44f
README with description of major sysfs entries, sysfs documentation are moved to ABI dir as Bart suggested. Link: https://lore.kernel.org/r/20200511135131.27580-25-danil.kipnis@cloud.ionos.com Signed-off-by: Danil Kipnis <danil.kipnis@cloud.ionos.com> Signed-off-by: Jack Wang <jinpu.wang@cloud.ionos.com> Reviewed-by: Bart Van Assche <bvanassche@acm.org> Acked-by: Jens Axboe <axboe@kernel.dk> Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
93 lines
3.3 KiB
Plaintext
93 lines
3.3 KiB
Plaintext
********************************
|
|
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<N>.
|
|
|
|
|
|
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>
|