summaryrefslogtreecommitdiffstats
path: root/super1.c (follow)
Commit message (Collapse)AuthorAgeFilesLines
* mdadm: improve the dlm locking mechanism for clustered raidGuoqing Jiang2018-03-081-42/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, the dlm locking only protects several functions which writes to superblock (update_super, add_to_super and store_super), and we missed other funcs such as add_internal_bitmap. We also need to call the funcs which read superblock under the locking protection to avoid consistent issue. So let's remove the dlm stuffs from super1.c, and provide the locking mechanism to the main() except assemble mode which will be handled in next commit. And since we can identify it is a clustered raid or not based on check the different conditions of each mode, so the change should not have effect on native array. And we improve the existed locking stuffs as follows: 1. replace ls_unlock with ls_unlock_wait since we should return when unlock operation is complete. 2. inspired by lvm, let's also try to use the existed lockspace first before creat a lockspace blindly if the lockspace not released for some reason. 3. try more times before quit if EAGAIN happened for locking. Note: for MANAGE mode, we do not need to get lock if node just want to confirm device change, otherwise we can't add a disk to cluster since all nodes are compete for the lock. Reviewed-by: NeilBrown <neilb@suse.com> Signed-off-by: Guoqing Jiang <gqjiang@suse.com> Signed-off-by: Jes Sorensen <jsorensen@fb.com>
* Zeroout whole ppl space during creation/force assemblePawel Baldysiak2017-10-021-0/+5
| | | | | | | | | | | PPL area should be cleared before creation/force assemble. If the drive was used in other RAID array, it might contains PPL from it. There is a risk that mdadm recognizes those PPLs and refuses to assemble the RAID due to PPL conflict with created array. Signed-off-by: Pawel Baldysiak <pawel.baldysiak@intel.com> Signed-off-by: Jes Sorensen <jsorensen@fb.com>
* super1: Add support for multiple-pplsPawel Baldysiak2017-10-021-28/+37
| | | | | | | | | | | Add support for super1 with multiple ppls. Extend ppl area size to 1MB. Use 1MB as default during creation. Always start array as single ppl - if kernel is capable of multiple ppls and there is enough space reserved - it will switch the policy during first metadata update. Signed-off-by: Pawel Baldysiak <pawel.baldysiak@intel.com> Signed-off-by: Artur Paszkiewicz <artur.paszkiewicz@intel.com> Signed-off-by: Jes Sorensen <jsorensen@fb.com>
* mdadm: fixes some trivial typos in commentsZhilong Liu2017-10-021-4/+4
| | | | | | | fix some trivial typos in comments. Signed-off-by: Zhilong Liu <zlliu@suse.com> Signed-off-by: Jes Sorensen <jsorensen@fb.com>
* super1: only set clustered flag when bitmap is presentNeilBrown2017-08-161-2/+2
| | | | | | | | | | | | If no bitmap is present, then the test if (__le32_to_cpu(bsb->nodes) > 1) accesses uninitialised memory. So move that test inside a test for a bitmap being present. Signed-off-by: NeilBrown <neilb@suse.com> Signed-off-by: Jes Sorensen <jsorensen@fb.com>
* super1: Always round data offset to 1MPawel Baldysiak2017-07-271-2/+1
| | | | | | | | | | Currently if metadata requires more then 1M, data offset will be rounded down to closest MB. This is not correct, since less then required space is reserved. Always round data offset up to multiple of 1M. Signed-off-by: Pawel Baldysiak <pawel.baldysiak@intel.com> Signed-off-by: Jes Sorensen <jsorensen@fb.com>
* super1: fix sb->max_dev when adding a new disk in linear arrayLidong Zhong2017-05-261-1/+6
| | | | | | | | | | | | | | | | | | | The value of sb->max_dev will always be increased by 1 when adding a new disk in linear array. It causes an inconsistence between each disk in the array and the "Array State" value of "mdadm --examine DISK" is wrong. For example, when adding the first new disk into linear array it will be: Array State : RAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ('A' == active, '.' == missing, 'R' == replacing) Adding the second disk into linear array it will be Array State : .AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ('A' == active, '.' == missing, 'R' == replacing) Signed-off-by: Lidong Zhong <lzhong@suse.com> Signed-off-by: Jes Sorensen <jsorensen@fb.com>
* super1: Clean up various style abusesJes Sorensen2017-04-111-140/+223
| | | | | | | | Code is 80 characters wide, so lets try to respect that. In addition, we should never have one-line 'if () action()' statements. Fixup various whitespace abuse. Signed-off-by: Jes Sorensen <jsorensen@fb.com>
* Retire mdassembleJes Sorensen2017-04-111-18/+3
| | | | | | | | mdassemble doesn't handle container based arrays, no support for sysfs, etc. It has not been actively maintained for years, so time to send it off to retirement. Signed-off-by: Jes Sorensen <jsorensen@fb.com>
* super1: replace hard-coded values with bit definitionsGioh Kim2017-03-291-3/+4
| | | | | | | | Some hard-coded values for disk status are replaced with bit definitions. Signed-off-by: Gioh Kim <gi-oh.kim@profitbricks.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@gmail.com>
* Add 'ppl' and 'no-ppl' options for --update=Artur Paszkiewicz2017-03-291-0/+49
| | | | | | | | This can be used with --assemble for super1 and with --update-subarray for imsm to enable or disable PPL in the metadata. Signed-off-by: Artur Paszkiewicz <artur.paszkiewicz@intel.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@gmail.com>
* super1: PPL supportArtur Paszkiewicz2017-03-291-18/+132
| | | | | | | | | | | | | | | | Enable creating and assembling raid5 arrays with PPL for 1.x metadata. When creating, reserve enough space for PPL and store its size and location in the superblock and set MD_FEATURE_PPL bit. Write an initial empty header in the PPL area on each device. PPL is stored in the metadata region reserved for internal write-intent bitmap, so don't allow using bitmap and PPL together. While at it, fix two endianness issues in write_empty_r5l_meta_block() and write_init_super1(). Signed-off-by: Artur Paszkiewicz <artur.paszkiewicz@intel.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@gmail.com>
* Detail: show consistency policyArtur Paszkiewicz2017-03-291-4/+5
| | | | | | | | | Show the currently enabled consistency policy in the output from --detail. Add 3 spaces to all existing items in Detail output to align with "Consistency Policy : ". Signed-off-by: Artur Paszkiewicz <artur.paszkiewicz@intel.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@gmail.com>
* Generic support for --consistency-policy and PPLArtur Paszkiewicz2017-03-291-3/+3
| | | | | | | | | | | | | Add a new parameter to mdadm: --consistency-policy=. It determines how the array maintains consistency in case of unexpected shutdown. This maps to the md sysfs attribute 'consistency_policy'. It can be used to create a raid5 array using PPL. Add the necessary plumbing to pass this option to metadata handlers. The write journal and bitmap functionalities are treated as different policies, which are implicitly selected when using --write-journal or --bitmap options. Signed-off-by: Artur Paszkiewicz <artur.paszkiewicz@intel.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@gmail.com>
* super1: ignore failfast flag for setting device roleGioh Kim2017-03-281-3/+5
| | | | | | | | | | There is corner case for setting device role, if new device has failfast flag. The failfast flag should be ignored. Signed-off-by: Gioh Kim <gi-oh.kim@profitbricks.com> Signed-off-by: Jack Wang <jinpu.wang@profitbricks.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@gmail.com>
* mdadm:check the nodes when operate clustered arrayZhilong Liu2017-03-061-8/+1
| | | | | | | | | It doesn't make sense to write_bitmap with less than 2 nodes, in order to avoid 'write_bitmap' received invalid nodes number, it would be better to do checking nodes in getopt operations. Signed-off-by: Zhilong Liu <zlliu@suse.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@gmail.com>
* Add failfast support.NeilBrown2016-11-281-0/+13
| | | | | | | | | | | | | Allow per-device "failfast" flag to be set when creating an array or adding devices to an array. When re-adding a device which had the failfast flag, it can be removed using --nofailfast. failfast status is printed in --detail and --examine output. Signed-off-by: NeilBrown <neilb@suse.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
* Add function for getting member drive sector sizePawel Baldysiak2016-11-171-2/+1
| | | | | | | | This patch introduces the function for getting sector size of given device (fd). Signed-off-by: Pawel Baldysiak <pawel.baldysiak@intel.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
* super1: fix setting bad block log offset in write_init_super1()Artur Paszkiewicz2016-11-161-24/+23
| | | | | | | | | | | | | Commit f79bbf4f6904 ("super1: don't put the bblog at the end of the free space.") changed the location of the bad block log to be after the write-intent bitmap, but a fixed offset was used and it can make bbl overlap with the bitmap, especially when using a small bitmap chunk. This patch changes it to use the actual offset and size of the bitmap. It also joins the cases for v1.1 and v1.2 superblock because the code was very similar. Signed-off-by: Artur Paszkiewicz <artur.paszkiewicz@intel.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
* super1: make internal bitmap size calculations more consistentArtur Paszkiewicz2016-11-161-16/+9
| | | | | | | | | | | | | | | | | | Determining internal bitmap size is performed using two different functions (bitmap_sectors() and calc_bitmap_size()) and in getinfo_super1() it is calculated in yet another way. Each of these methods give slightly different results. The most accurate is calc_bitmap_size() but it also has a rounding issue. So: - fix the rounding issue in calc_bitmap_size() using bitmap_bits() - replace usages of bitmap_sectors() and open-coded calculations with calc_bitmap_size() - remove bitmap_sectors() - move bitmap_bits() to mdadm.h as inline - otherwise mdassemble won't compile (it does not use bitmap.c) Signed-off-by: Artur Paszkiewicz <artur.paszkiewicz@intel.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
* super1: make write_bitmap1 compatible with previous mdadm versionsGuoqing Jiang2016-10-191-1/+9
| | | | | | | | | | | | | | | | | | | For older mdadm version, v1.x metadata has different bitmap_offset, we can't ensure all the bitmaps are on a 4K boundary since writing 4K for bitmap could corrupt the superblock, and Anthony reported the bug about it at below link. https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=837964 So let's check about the alignment for bitmap_offset before set the boundary to 4096 unconditionally. Thanks for Neil's detailed explanation. Reported-by: Anthony DeRobertis <anthony@derobert.net> Fixes: 95a05b37e8eb ("Create n bitmaps for clustered mode") Cc: Neil Brown <neilb@suse.com> Signed-off-by: Guoqing Jiang <gqjiang@suse.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
* mdadm: fix a buffer overflowSong Liu2016-09-121-2/+2
| | | | | | | | | struct mdp_superblock_1.set_name is 32B long, but struct mdinfo.name is 33B long. So we need strncpy instead strcpy to avoid buffer overflow. Signed-off-by: Song Liu <songliubraving@fb.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
* Introduce random_uuid() helper functionJes Sorensen2016-08-151-33/+6
| | | | | | | This gets rid of 5 nearly identical copies of the same code, and reduces the binary size of mdadm by over 700 bytes on x86_64. Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
* super1: Avoid if and return on the same lineJes Sorensen2016-08-111-1/+2
| | | | Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
* super1: add more checks for NodeNumUpdate optionGuoqing Jiang2016-05-121-3/+19
| | | | | | | | | | | | | There are some cases which didn't need to check the space is enough or not for NodeNumUpdate option. 1. for array which does not have clustered bitmap. 2. "--nodes" parameter is 0 (eg, add a disk to clustered raid). 3. if "--nodes" parameter is set to a smaller num than current bms->nodes. Signed-off-by: Guoqing Jiang <gqjiang@suse.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
* mdadm: Make add_internal_bitmap() return 0 on successJes Sorensen2016-05-121-5/+5
| | | | | | | | add_internal_bitmap() returned 1 on success and 0 on error which is inconsistent. This changes it to return 0 on success and use more reasonable error codes on error. Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
* super1: make the check for NodeNumUpdate more accurateGuoqing Jiang2016-05-091-1/+1
| | | | | | | | | We missed to check the version is BITMAP_MAJOR_CLUSTERED or not, otherwise mdadm can't create array with other 1.x metadatas (1.0 and 1.1). Signed-off-by: Guoqing Jiang <gqjiang@suse.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
* super1: don't update node nums if it is not more than 1Guoqing Jiang2016-05-091-0/+5
| | | | | | | | | We at least need two nodes for cluster raid so make the check before update node nums. Reported-by: Zhilong Liu <zlliu@suse.com> Signed-off-by: Guoqing Jiang <gqjiang@suse.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
* super1: Clear memory allocated for superblock + bitmap before useJes Sorensen2016-04-061-0/+2
| | | | | | | | | | | | | load_super1() did not clear memory allocated for the superblock + bitmap. This causes issues if the superblock does not contain a bitmap as later checks of bitmap features would rely on the bits being cleared. This bug has been around for a long time, but was only exposed in mdadm-3.4 with the introduction of the clustering code. Reported-by: Jan Stodola <jstodola@redhat.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
* Change the option from NoUpdate to NodeNumUpdateGuoqing Jiang2016-03-241-1/+1
| | | | | | | | Actually, we need to use NodeNumUpdate here to ensure there are enough spaces for those nodes. Signed-off-by: Guoqing Jiang <gqjiang@suse.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
* super1: Fix potential buffer overflows when copying cluster_nameJes Sorensen2016-03-091-6/+12
| | | | | | | | | | | cmap_get_string() used to retrieve cluster_name does not restrict it's size. To prevent buffer overflows use the size of the destination buffer, not strlen() of the source, and null terminate the copied string. Fixes: 0aa2f15b ("mdadm: add the ability to change cluster name)" Reviewed-by: NeilBrown <neilb@suse.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
* Fix wrong bitmap output for cluster raidGuoqing Jiang2016-03-071-6/+6
| | | | | | | | | | | | For cluster raid, we need to displays bitmap related contents from different bitmaps which are based on node num. So bitmap_file_open and locate_bitmap are changed a little bit for the purpose. Reported-by: Jes Sorensen <Jes.Sorensen@redhat.com> Fixes: b98043a2f8 ("Show all bitmaps while examining bitmap") Signed-off-by: Guoqing Jiang <gqjiang@suse.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
* super1: Fix bblog_size accesses on big-ending machines.NeilBrown2016-02-011-5/+5
| | | | | | | | | | | bblog_size is 16bit so using le32_to_cpu on it is not wise and leads to errors on big-endian machines. Change all such calls to use le16. Bug was introduced in mdadm-3.3 Signed-off-by: NeilBrown <neilb@suse.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
* Assorted fixed for a "make everything" buildNeilBrown2016-01-281-2/+4
| | | | Signed-off-by: NeilBrown <neilb@suse.com>
* super1: allow reshape that hasn't really started to be reverted.NeilBrown2016-01-281-1/+20
| | | | | | | | | | | | A simple revert doesn't work here because the reshape_position is in the critical section. The best approach is to let the reshape progress a bit and then go backwards. If that isn't possible, assembling with --update=revert-reshape and --invalid-backup should work. Reported-by-tested-by: George Rapp <george.rapp@gmail.com> Signed-off-by: NeilBrown <neilb@suse.com>
* super1: fix calculation of space_beforeNeilBrown2016-01-281-1/+1
| | | | | | | | | This code was meant to update 'earliest' but clearly never doesn't. This bug would only affect an array with a very large bitmap so it is unlikely to be significant. Signed-off-by: NeilBrown <neilb@suse.com>
* Add --update=force-no-bbl.NeilBrown2015-12-211-0/+5
| | | | | | | This forcibly removed the bad-block log. There can be situations where it is hard to remove bad blocks by writing to them - partiularly on RAID5. Signed-off-by: NeilBrown <neilb@suse.com>
* mdadm: improve the safeguard for change cluster raid's sbGuoqing Jiang2015-12-161-15/+18
| | | | | | | | | | | | | | | | This commit does the following jobs: 1. rename is_clustered to dlm_funs_ready since it match the function better. 2. st->cluster_name can't be use to identify the raid is a clustered or not, we should check the bitmap's version to perform the identification. 3. for cluster_get_dlmlock/cluster_release_dlmlock funcs, both of them just need the lockid as parameter since the cluster name can get by get_cluster_name(). Signed-off-by: Guoqing Jiang <gqjiang@suse.com> Signed-off-by: NeilBrown <neilb@suse.com>
* mdadm: do not try to hold dlm lock in free_super1Guoqing Jiang2015-12-161-11/+0
| | | | | | | | | | | Since free_super1 actually doesn't change the sb, it just free the addr space of sb. Also free_super1 is called in lots of place within mdadm, so remove dlm lock code since the func doesn't need the protection and also reduce latency. Signed-off-by: Guoqing Jiang <gqjiang@suse.com> Signed-off-by: NeilBrown <neilb@suse.com>
* mdadm: do not display bitmap info if it is clearedGuoqing Jiang2015-12-161-3/+9
| | | | | | | | | | | | "mdadm -X DISK" is used to report information about a bitmap file, it is better to not display all the related infos if bitmap is cleared with "--bitmap=none" under grow mode. To do that, the locate_bitmap is changed a little to have a return value based on MD_FEATURE_BITMAP_OFFSET. Signed-off-by: Guoqing Jiang <gqjiang@suse.com> Signed-off-by: NeilBrown <neilb@suse.com>
* mdadm: don't show cluster name once the bitmap is clearedGuoqing Jiang2015-12-161-2/+2
| | | | | | | Don't show cluster name if bitmap is cleared. Signed-off-by: Guoqing Jiang <gqjiang@suse.com> Signed-off-by: NeilBrown <neilb@suse.com>
* recreate journal in mdadmSong Liu2015-12-161-1/+2
| | | | | | | | | | | | | | | | | | | | | | | This patch tries recreates missing/faulty journal in mdadm. Example: ./mdadm --fail /dev/md1 /dev/sdb2 mdadm: set /dev/sdb2 faulty in /dev/md1 ./mdadm --stop /dev/md1 mdadm: stopped /dev/md1 ./mdadm -A --scan --force mdadm: Journal is missing or stale, starting array read only. mdadm: /dev/md/1 has been started with 15 drives. ./mdadm --add-journal /dev/md1 /dev/sdb2 mdadm: added /dev/sdb2 Signed-off-by: Song Liu <songliubraving@fb.com> Signed-off-by: Shaohua Li <shli@fb.com> Signed-off-by: NeilBrown <neilb@suse.com>
* add crc32c and use it for r5l checksumSong Liu2015-10-301-7/+4
| | | | | | | | | | | | | In kernel space, r5l checksum will use crc32c: http://marc.info/?l=linux-raid&m=144598970529191 mdadm need to change too. This patch ports a simplified crc32c algorithm from kernel code, and used in super1.c:write_empty_r5l_meta_block(); Signed-off-by: Song Liu <songliubraving@fb.com> Signed-off-by: Shaohua Li <shli@fb.com> Signed-off-by: NeilBrown <neilb@suse.com>
* mdadm: refactor write journal code in Assemble and IncrementalSong Liu2015-10-221-16/+3
| | | | | | | | | | | | | | | | | | As discussed, standalone require_journal() in struct superswitch is not a very good idea. Instead, journal related information fits well in struct mdinfo. This patch simplifies journal support code in Assemble and Incremental as: - Add journal_device_required and journal_clean to struct mdinfo; - Remove function require_journal from struct superswitch; - Update Assemble and Incremental to use journal_device_required and journal_clean from struct mdinfo (instead of separate var). Signed-off-by: Song Liu <songliubraving@fb.com> Signed-off-by: Shaohua Li <shli@fb.com> Signed-off-by: NeilBrown <neilb@suse.com>
* Safeguard against writing to an active device of another nodeGuoqing Jiang2015-10-211-0/+51
| | | | | | | | | | | | | | Modifying an exiting device's superblock or creating a new superblock on an existing device needs to be checked because the device could be in use by another node in another array. So, we check this by taking all superblock locks in userspace so that we don't step onto an active device used by another node and safeguard against accidental edits. After the edit is complete, we release all locks and the lockspace so that it can be used by the kernel space. Signed-off-by: Goldwyn Rodrigues <rgoldwyn@suse.com> Signed-off-by: Guoqing Jiang <gqjiang@suse.com> Signed-off-by: NeilBrown <neilb@suse.com>
* Assemble array with write journalSong Liu2015-10-191-5/+32
| | | | | | | | | | | | | | | | | | | | | | | Example output: ./mdadm --assemble /dev/md0 /dev/sd[c-f] /dev/sdb1 mdadm: /dev/md0 has been started with 4 drives and 1 journal. mdadm checks superblock for journal devices. If the journal device is missing or faulty, mdadm will show warning ./mdadm --assemble /dev/md0 /dev/sd[c-q] /dev/sdb1 mdadm: Not safe to assemble with missing or stale journal device, consider --force. User can insist to start the array (read only) with --force ./mdadm --assemble /dev/md0 /dev/sd[c-q] /dev/sdb1 --force mdadm: Journal is missing or stale, starting array read only. mdadm: /dev/md0 has been started with 15 drives. Signed-off-by: Song Liu <songliubraving@fb.com> Signed-off-by: Shaohua Li <shli@fb.com> Signed-off-by: NeilBrown <neilb@suse.com>
* Enable create array with write journal (--write-journal DEVICE).Song Liu2015-10-191-1/+69
| | | | | | | | | | | | | | | | | | | | | Specify the write journal device with --write-journal DEVICE ./mdadm --create -f /dev/md0 --assume-clean -c 32 --raid-devices=4 --level=5 /dev/sd[c-f] --write-journal /dev/sdb1 mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md0 started. Only one journal device is allowed. If multiple --write-journal are given, mdadm will use the first and ignore others ./mdadm --create -f /dev/md0 --assume-clean -c 32 --raid-devices=4 --level=5 /dev/sd[c-f] --write-journal /dev/sdb1 --write-journal /dev/sdx mdadm: Please specify only one journal device for the array. mdadm: Ignoring --write-journal /dev/sdx... mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md0 started. Signed-off-by: Song Liu <songliubraving@fb.com> Signed-off-by: Shaohua Li <shli@fb.com> Signed-off-by: NeilBrown <neilb@suse.com>
* Show device as journal in --detail --examineSong Liu2015-10-191-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Example output: ./mdadm --detail /dev/md127 /dev/md127: Version : 1.2 Creation Time : Wed May 13 17:01:12 2015 Raid Level : raid5 Array Size : 11720662464 (11177.69 GiB 12001.96 GB) Used Dev Size : 3906887488 (3725.90 GiB 4000.65 GB) Raid Devices : 4 Total Devices : 5 Persistence : Superblock is persistent Intent Bitmap : Internal Update Time : Wed May 13 17:01:12 2015 State : clean Active Devices : 4 Working Devices : 5 Failed Devices : 0 Spare Devices : 1 Layout : left-symmetric Chunk Size : 32K Name : 0 UUID : 8fb9ee05:3831d52f:e5c23825:28cd6881 Events : 0 Number Major Minor RaidDevice State 0 8 32 0 active sync /dev/sdc 1 8 48 1 active sync /dev/sdd 2 8 64 2 active sync /dev/sde 3 8 80 3 active sync /dev/sdf 4 8 17 - journal /dev/sdb1 ./mdadm -E /dev/sdb2 /dev/sdb2: Magic : a92b4efc Version : 1.2 Feature Map : 0x201 Array UUID : 562b2334:35b9bcc1:add50892:1f30c4bd Name : 0 Creation Time : Thu Aug 27 12:55:26 2015 Raid Level : raid5 Raid Devices : 15 Avail Dev Size : 249796608 (119.11 GiB 127.90 GB) Array Size : 54696423936 (52162.57 GiB 56009.14 GB) Used Dev Size : 7813774848 (3725.90 GiB 4000.65 GB) Data Offset : 262144 sectors Super Offset : 8 sectors Unused Space : before=262056 sectors, after=0 sectors State : active Device UUID : 5015e522:d39ba566:5909cf3c:9c51f2ff Internal Bitmap : 8 sectors from superblock Update Time : Thu Aug 27 13:16:55 2015 Bad Block Log : 512 entries available at offset 72 sectors Checksum : 4e6fd76d - correct Events : 262 Layout : left-symmetric Chunk Size : 256K Device Role : Journal Array State : AAAAAAAAAAAAAAA ('A' == active, '.' == missing, 'R' == replacing) Signed-off-by: Song Liu <songliubraving@fb.com> Signed-off-by: Shaohua Li <shli@fb.com> Signed-off-by: NeilBrown <neilb@suse.com>
* add macros for MD_DISK_ROLE_(SPARE/FAULTY)Song Liu2015-10-191-15/+15
| | | | | | | | | | | | | | Replace special disk roles (0xffff, 0xfffe) with macros: define MD_DISK_ROLE_SPARE 0xffff define MD_DISK_ROLE_FAULTY 0xfffe Will add macro for journal device in next patch: define MD_DISK_ROLE_JOURNAL 0xfffd Signed-off-by: Song Liu <songliubraving@fb.com> Signed-off-by: Shaohua Li <shli@fb.com> Signed-off-by: NeilBrown <neilb@suse.com>
* super1: Do not create bad block log for clustered devices.NeilBrown2015-09-281-1/+2
| | | | | | | | We currently have no synchronization techniques for the bad block log, so disable it for the cluster. Reported-by: Goldwyn Rodrigues <rgoldwyn@suse.com> Signed-off-by: NeilBrown <neilb@suse.com>