summaryrefslogtreecommitdiffstats
path: root/Documentation
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2014-04-01 22:43:53 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2014-04-01 22:43:53 -0400
commitb33ce442993865180292df2a314ee5251ba38b50 (patch)
tree004b703ea3cd19c932393086fe9cde96e8db8de7 /Documentation
parent7a48837732f87a574ee3e1855927dc250117f565 (diff)
parente84987a1f941b8e2e3173bb38510ddf25cc8c7f0 (diff)
Merge branch 'for-3.15/drivers' of git://git.kernel.dk/linux-block
Pull block driver update from Jens Axboe: "On top of the core pull request, here's the pull request for the driver related changes for 3.15. It contains: - Improvements for msi-x registration for block drivers (mtip32xx, skd, cciss, nvme) from Alexander Gordeev. - A round of cleanups and improvements for drbd from Andreas Gruenbacher and Rashika Kheria. - A round of clanups and improvements for bcache from Kent. - Removal of sleep_on() and friends in DAC960, ataflop, swim3 from Arnd Bergmann. - Bug fix for a bug in the mtip32xx async completion code from Sam Bradshaw. - Bug fix for accidentally bouncing IO on 32-bit platforms with mtip32xx from Felipe Franciosi" * 'for-3.15/drivers' of git://git.kernel.dk/linux-block: (103 commits) bcache: remove nested function usage bcache: Kill bucket->gc_gen bcache: Kill unused freelist bcache: Rework btree cache reserve handling bcache: Kill btree_io_wq bcache: btree locking rework bcache: Fix a race when freeing btree nodes bcache: Add a real GC_MARK_RECLAIMABLE bcache: Add bch_keylist_init_single() bcache: Improve priority_stats bcache: Better alloc tracepoints bcache: Kill dead cgroup code bcache: stop moving_gc marking buckets that can't be moved. bcache: Fix moving_pred() bcache: Fix moving_gc deadlocking with a foreground write bcache: Fix discard granularity bcache: Fix another bug recovering from unclean shutdown bcache: Fix a bug recovering from unclean shutdown bcache: Fix a journalling reclaim after recovery bug bcache: Fix a null ptr deref in journal replay ...
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/blockdev/drbd/data-structure-v9.txt38
1 files changed, 38 insertions, 0 deletions
diff --git a/Documentation/blockdev/drbd/data-structure-v9.txt b/Documentation/blockdev/drbd/data-structure-v9.txt
new file mode 100644
index 000000000000..1e52a0e32624
--- /dev/null
+++ b/Documentation/blockdev/drbd/data-structure-v9.txt
@@ -0,0 +1,38 @@
1This describes the in kernel data structure for DRBD-9. Starting with
2Linux v3.14 we are reorganizing DRBD to use this data structure.
3
4Basic Data Structure
5====================
6
7A node has a number of DRBD resources. Each such resource has a number of
8devices (aka volumes) and connections to other nodes ("peer nodes"). Each DRBD
9device is represented by a block device locally.
10
11The DRBD objects are interconnected to form a matrix as depicted below; a
12drbd_peer_device object sits at each intersection between a drbd_device and a
13drbd_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
26In this table, horizontally, devices can be accessed from resources by their
27volume number. Likewise, peer_devices can be accessed from connections by
28their volume number. Objects in the vertical direction are connected by double
29linked lists. There are back pointers from peer_devices to their connections a
30devices, and from connections and devices to their resource.
31
32All resources are in the drbd_resources double-linked list. In addition, all
33devices can be accessed by their minor device number via the drbd_devices idr.
34
35The drbd_resource, drbd_connection, and drbd_device objects are reference
36counted. The peer_device objects only serve to establish the links between
37devices and connections; their lifetime is determined by the lifetime of the
38device and connection which they reference.