Commit d81dc4f45b0aaa7e02adc01a9a12dfd9b9d36bba

Authored by Andreas Gruenbacher
Committed by Philipp Reisner
1 parent 05f7a7d6a7

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>

Showing 1 changed file with 38 additions and 0 deletions Side-by-side Diff

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.