Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drbd: Describe the future high-level structure of DRBD

The following commits will successively transform DRBD into the structure
described here.

Signed-off-by: Andreas Gruenbacher <agruen@linbit.com>
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com>

authored by

Andreas Gruenbacher and committed by
Philipp Reisner
d81dc4f4 05f7a7d6

+38
+38
Documentation/blockdev/drbd/data-structure-v9.txt
··· 1 + This describes the in kernel data structure for DRBD-9. Starting with 2 + Linux v3.14 we are reorganizing DRBD to use this data structure. 3 + 4 + Basic Data Structure 5 + ==================== 6 + 7 + A node has a number of DRBD resources. Each such resource has a number of 8 + devices (aka volumes) and connections to other nodes ("peer nodes"). Each DRBD 9 + device is represented by a block device locally. 10 + 11 + The DRBD objects are interconnected to form a matrix as depicted below; a 12 + drbd_peer_device object sits at each intersection between a drbd_device and a 13 + drbd_connection: 14 + 15 + /--------------+---------------+.....+---------------\ 16 + | resource | device | | device | 17 + +--------------+---------------+.....+---------------+ 18 + | connection | peer_device | | peer_device | 19 + +--------------+---------------+.....+---------------+ 20 + : : : : : 21 + : : : : : 22 + +--------------+---------------+.....+---------------+ 23 + | connection | peer_device | | peer_device | 24 + \--------------+---------------+.....+---------------/ 25 + 26 + In this table, horizontally, devices can be accessed from resources by their 27 + volume number. Likewise, peer_devices can be accessed from connections by 28 + their volume number. Objects in the vertical direction are connected by double 29 + linked lists. There are back pointers from peer_devices to their connections a 30 + devices, and from connections and devices to their resource. 31 + 32 + All resources are in the drbd_resources double-linked list. In addition, all 33 + devices can be accessed by their minor device number via the drbd_devices idr. 34 + 35 + The drbd_resource, drbd_connection, and drbd_device objects are reference 36 + counted. The peer_device objects only serve to establish the links between 37 + devices and connections; their lifetime is determined by the lifetime of the 38 + device and connection which they reference.