Skip to content

RFC Intel(R) Smart Response Technology mdadm enumeration/assembly

Dan Williams linux-raid 1 version New

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 RFC Latest11 patches 0 repliesNew

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/11sysfs: fix sysfs_set_array() to accept valid negative array levelssysfs.c+3 -20 replies
2/11make must_be_container() more selectiveutil.c+9 -80 replies
3/11Assemble: show the uuid in the verbose caseAssemble.c+15 -30 replies
4/11Assemble: teardown partially assembled arraysAssemble.c+5 -40 replies
5/11Examine: support for coalescing "cache legs"Examine.c mdadm.h+83 -120 replies
6/11imsm: immutable volume idsuper-intel.c+65 -120 replies
7/11imsm: cache metadata definitionsMakefile isrt-intel.h super-intel.c+271 -30 replies
8/11imsm: read cache metadatasuper-intel.c+47 -80 replies
9/11imsm: examine cache configurationsisrt-intel.h super-intel.c+172 -240 replies
10/11imsm: assemble cache volumesisrt-intel.h maps.c mdadm.h +3 more+198 -60 replies
11/11imsm: support cache enabled arrayssuper-intel.c+2 -10 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.

Read the v1 thread

Cover letter [RFC mdadm PATCH 00/11] Intel(R) Smart Response Technology mdadm enumeration/assembly

As mentioned in the kernel enabling [1] these cache volumes augment the existing imsm model in that cache legs each imply a container. In the standard cache configuration two single-drive-raid0 volumes (from separate containers) are associated into a cached volume. The diagram below attempts to make this clearer.

+-----------------------+              +----------------------+             
|          sda          | SSD          |         sdb          | HDD         
| +-------------------+ |              | +------------------+ |             
| |   /dev/md/imsm0   | | Container0   | |  /dev/md/imsm1   | | Container1  
| | +---------------+ | |              | | +--------------+ | |             
| | | /dev/md/vol0  | | | RAID Volume0 | | | /dev/md/vol1 | | | RAID Volume1
| | |  +---------+  | | |              | | | +----------+ | | |             
| | |  |SRT Cache|  | | |              | | | |SRT Target| | | |             
+-+-+--+----+----+--+-+-+              +-+-+-+----+-----+-+-+-+             
            |                                     |                         
            |                                     |                         
            |          HDD Cached by SSD          |                         
            |           +--------------+          |                         
            +-----------+ /dev/md/isrt +----------+                         
                        +--------------+                                    

In support of the standard mdadm volume discovery model a uuid a synthesized from the combination of the two container-family-numbers and immutable volume-ids. Examine_brief is modified to aggregate cache legs across containers.

Create support is not included, but existing volumes can be auto-assembled:

mdadm -Ebs > conf
mdadm -Asc conf

To facilitate testing the patches are also available on github, but note that this branch will rebase according to review feedback.

git://github.com/djbw/mdadm isrt

[1]: http://marc.info/?l=linux-raid&m=139832034826379&w=2

---

Dan Williams (11):
sysfs: fix sysfs_set_array() to accept valid negative array levels make must_be_container() more selective
Assemble: show the uuid in the verbose case
Assemble: teardown partially assembled arrays
Examine: support for coalescing "cache legs"
imsm: immutable volume id
imsm: cache metadata definitions
imsm: read cache metadata
imsm: examine cache configurations
imsm: assemble cache volumes
imsm: support cache enabled arrays

 Assemble.c    |   27 ++-
 Examine.c     |   92 +++++++++-
 Makefile      |    2 
 isrt-intel.h  |  270 ++++++++++++++++++++++++++++++
 maps.c        |    1 
 mdadm.h       |    4 
 super-intel.c |  516 ++++++++++++++++++++++++++++++++++++++++++++++++++++-----
 sysfs.c       |   13 +
 util.c        |   18 +-
 9 files changed, 865 insertions(+), 78 deletions(-)
 create mode 100644 isrt-intel.h