Use separate bitmaps for each nodes in the cluster
authorGoldwyn Rodrigues <rgoldwyn@suse.com>
Fri, 6 Jun 2014 16:50:56 +0000 (11:50 -0500)
committerGoldwyn Rodrigues <rgoldwyn@suse.com>
Mon, 23 Feb 2015 13:30:11 +0000 (07:30 -0600)
commitb97e92574c0bf335db1cd2ec491d8ff5cd5d0b49
treeacb492fceb25430e7a9c1b8404fe70f17062c3b9
parentcf921cc19cf7c1e99f730a2faa02d80817d684a2
Use separate bitmaps for each nodes in the cluster

On-disk format:

0                    4k                     8k                    12k
-------------------------------------------------------------------
| idle                | md super            | bm super [0] + bits |
| bm bits[0, contd]   | bm super[1] + bits  | bm bits[1, contd]   |
| bm super[2] + bits  | bm bits [2, contd]  | bm super[3] + bits  |
| bm bits [3, contd]  |                     |                     |

Bitmap super has a field nodes, which defines the maximum number
of nodes the device can use. While reading the bitmap super, if
the cluster finds out that the number of nodes is > 0:
1. Requests the md-cluster module.
2. Calls md_cluster_ops->join(), which sets up clustering such as
   joining DLM lockspace.

Since the first time, the first bitmap is read. After the call
to the cluster_setup, the bitmap offset is adjusted and the
superblock is re-read. This also ensures the bitmap is read
the bitmap lock (when bitmap lock is introduced in later patches)

Questions:
1. cluster name is repeated in all bitmap supers. Is that okay?

Signed-off-by: Goldwyn Rodrigues <rgoldwyn@suse.com>
drivers/md/bitmap.c
drivers/md/bitmap.h
drivers/md/md-cluster.c