summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Release mdadm-4.0mdadm-4.0Jes Sorensen2017-01-097-6/+33
| | | | | | My first release! Signed-off-by: Jes Sorensen <Jes.Sorensen@gmail.com>
* imsm: show correct size for arrays with 4k disksMaksymilian Kunt2017-01-091-6/+12
| | | | | | | | Number of blocks used to calculate array size is based on 512 block size so the size displayed is incorrect for arrays with 4k disks. Signed-off-by: Maksymilian Kunt <maksymilian.kunt@intel.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@gmail.com>
* Add detail information when can not connect monitorXiao Ni2017-01-091-0/+2
| | | | | | | | | | If it can't connect monitor, now the error message is just Error waiting for xxx to be clean. Add detail error message in connect_monitor. Suggested-by: Oleg Samarin <osamarin68@gmail.com> Signed-off-by: Xiao Ni <xni@redhat.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@gmail.com>
* imsm: count arrays under VMD HBAs correctlyAlexey Obitotskiy2017-01-093-12/+47
| | | | | | | | | | | | | | | OROM defines maximum number of arrays supported. On array creation mdadm checks if number of arrays doesn't exceed that limit, however it is not calculated correctly for VMD now. The current code performs a lookup of HBA using the id. VMD HBAs have the same id so each lookup returns the same structure (first encountered). Take a different approach for VMD HBAs. As id is not unique and cannot be used for lookups, iterate over all VMD HBAs and compare both id and HBA path. Signed-off-by: Alexey Obitotskiy <aleksey.obitotskiy@intel.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@gmail.com>
* Don't assume VMD sysfs path ends with a disk entryAlexey Obitotskiy2017-01-041-12/+21
| | | | | | | | | | When VMD is enabled but no drive is attached to the PCIe port, mdadm crashes trying to parse the path. Skip entry if valid path has not been returned. Do it early to avoid unnecessary memory allocation. Signed-off-by: Alexey Obitotskiy <aleksey.obitotskiy@intel.com> Signed-off-by: Tomasz Majchrzak <tomasz.majchrzak@intel.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
* IMSM: Fix signed/unsigned comparisonsPawel Baldysiak2017-01-031-8/+9
| | | | | | | | | Prior to this patch there was an error during compiling on 32-bit arch. This patch fixes this issue. Reported-by: Thomas Backlund <tmb@mageia.org> Signed-off-by: Pawel Baldysiak <pawel.baldysiak@intel.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
* imsm: enable bad block support for imsm metadataTomasz Majchrzak2016-12-291-4/+4
| | | | | | | | | | Enable bad block support for imsm metadata as commit e522751d605d ("seq_file: reset iterator to first record for zero offset") has been accepted in upstream kernel. Prior to that patch mdmon had not been able to read bad blocks sysfs file. Signed-off-by: Tomasz Majchrzak <tomasz.majchrzak@intel.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
* IMSM: Do not update metadata if not able to migratePawel Baldysiak2016-12-221-0/+5
| | | | | | | | | This patch prevents mdadm from updating metadata if migration is not possible. The same check is done in analyse_change(), but in that place - metadata is already modified. Signed-off-by: Pawel Baldysiak <pawel.baldysiak@intel.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
* Make get_component_size() work with named array.NeilBrown2016-12-221-8/+2
| | | | | | | | | | | | | | | | | get_component_size() still assumes that all array are /sys/block/md%d or /sys/block/md_d%d and so doesn't work with e.g. /sys/block/md_foo. This cause "mdadm --detail" to report Used Dev Size : unknown and causes problems when added spares and in other circumstances. So change it to use stat2devnm() which does the right thing with all types of array names. Reported-and-tested-by: Robert LeBlanc <robert@leblancnet.us> Signed-off-by: NeilBrown <neilb@suse.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
* mdadm: add test case for raid5 write back cacheSong Liu2016-12-191-0/+87
| | | | | | | | | | This test cases checks data integrity of raid5 write back cache under various scenarios: degraded mode, non-overwrite, raid-5/6. Signed-off-by: Song Liu <songliubraving@fb.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
* Always return last partition end address in 512B blocksMariusz Dabrowski2016-12-131-2/+5
| | | | | | | | | | For 4K disks 'endofpart' is an index of the last 4K sector used by partition. mdadm is using number of 512-byte sectors, so value returned by get_last_partition_end must be multiplied by 8 for devices with 4K sectors. Also, unused 'ret' variable has been removed. Signed-off-by: Mariusz Dabrowski <mariusz.dabrowski@intel.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
* Use disk sector size value to set offset for reading GPTMariusz Dabrowski2016-12-122-1/+16
| | | | | | | | | | | mdadm is using invalid byte-offset while reading GPT header to get partition info (size, first sector, last sector etc.). Now this offset is hardcoded to 512 bytes and it is not valid for disks with sector size different than 512 bytes because MBR and GPT headers are aligned to LBA, so valid offset for 4k drives is 4096 bytes. Signed-off-by: Mariusz Dabrowski <mariusz.dabrowski@intel.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
* imsm: set generation number when reading superblockMariusz Dabrowski2016-12-121-0/+1
| | | | | | | | | IMSM doesn't set 'events' field with generation number, so sometimes mdadm tries to re-assembly container using metadata which isn't most recent (e. g. from spare disk). Signed-off-by: Mariusz Dabrowski <mariusz.dabrowski@intel.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
* IMSM: Add support for Non-Intel NVMe drives under VMDPawel Baldysiak2016-12-122-3/+16
| | | | | | | | | | This patch adds checking if platform (preOS) supports non-Intel NVMe drives under VMD domain, and - if so - allow creating IMSM Raid Volume with those drives. Signed-off-by: Pawel Baldysiak <pawel.baldysiak@intel.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
* mdopen: open md devices O_RDONLYNeilBrown2016-12-052-4/+2
| | | | | | | | | | | | | | | | | | | | | There is no need to request write access when opening the md device, as we never write to it, and none of the ioctls we use require write access. If we do open with write access, then when we close, udev notices that the device was closed after being open for write access, and it generates a CHANGE event. This is generally unwanted, and particularly problematic when mdadm is trying to --stop the array, as the CHANGE event can cause the array to be re-opened before it completely closed, which results in a new mddev being allocated. So just use O_RDONLY instead of O_RDWR. Reported-by: Marc Smith <marc.smith@mcc.edu> Signed-off-by: NeilBrown <neilb@suse.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
* imsm: 4kn support for bad block logTomasz Majchrzak2016-12-021-0/+38
| | | | | Signed-off-by: Tomasz Majchrzak <tomasz.majchrzak@intel.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
* imsm: implement "--examine-badblocks" commandTomasz Majchrzak2016-12-021-0/+56
| | | | | | | | Implement "--examine-badblocks" command to provide list of bad blocks in metadata for a disk. Signed-off-by: Tomasz Majchrzak <tomasz.majchrzak@intel.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
* imsm: provide list of bad blocks for an arrayTomasz Majchrzak2016-12-021-0/+39
| | | | | | | | Provide list of bad blocks using memory allocated in advance so it's safe to call it from monitor. Signed-off-by: Tomasz Majchrzak <tomasz.majchrzak@intel.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
* imsm: clear bad blocks if disk becomes unavailableTomasz Majchrzak2016-12-021-7/+39
| | | | | | | | If a disk fails or goes missing, clear the bad blocks associated with it from metadata. If necessary, update disk ordinals. Signed-off-by: Tomasz Majchrzak <tomasz.majchrzak@intel.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
* imsm: clear bad block from bad block logTomasz Majchrzak2016-12-021-0/+53
| | | | | Signed-off-by: Tomasz Majchrzak <tomasz.majchrzak@intel.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
* imsm: record new bad block in bad block logTomasz Majchrzak2016-12-021-8/+134
| | | | | | | | | | Check for a duplicate first or try to merge it with existing bad block. If block range exceeds BBM_LOG_MAX_LBA_ENTRY_VAL (256) blocks, it must be split into multiple ranges. Fail if maximum number of bad blocks has been already reached. Signed-off-by: Tomasz Majchrzak <tomasz.majchrzak@intel.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
* imsm: give md list of known bad blocks on startupTomasz Majchrzak2016-12-021-0/+59
| | | | | | | | | | On create set bad block support flag for each drive. On assmble also provide a list of known bad blocks. Bad blocks are stored in metadata per disk so they have to be checked against volume boundaries beforehand. Signed-off-by: Tomasz Majchrzak <tomasz.majchrzak@intel.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
* imsm: write bad block log on metadata syncTomasz Majchrzak2016-12-021-5/+43
| | | | | | | | | | | | | | | Pre-allocate memory for largest possible bad block section when monitor is being opened to avoid a need for memory allocation on metadata sync. If memory for a structure has been allocated in mpb buffer but it hasn't been used yet, it will be taken by next buffer grow, leading to insufficient memory on metadata flush. Start tracking such memory and take it into calculation when growing a buffer. Also assert has been added to debug mode to warn when more metadata has been written than memory allocated. Signed-off-by: Tomasz Majchrzak <tomasz.majchrzak@intel.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
* imsm: parse bad block log in metadata on startupTomasz Majchrzak2016-12-021-46/+94
| | | | | | | | | | Always allocate memory for all log entries to avoid a need for memory allocation when monitor requests to record a bad block. Also some extra checks added to make static code analyzer happy. Signed-off-by: Tomasz Majchrzak <tomasz.majchrzak@intel.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
* Introduce enum flag_mode for setting and clearing flags.NeilBrown2016-11-296-29/+33
| | | | | | | | | | | | | | We currently use '1' to indicate that a flag (writemostly or failfast) needs to be set, and '2' to indicate that it needs to be cleared. Using magic number like this is not a best-practice. So replaced them with values from a enum. No functional change. Signed-off-by: NeilBrown <neilb@suse.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
* mdmon: bad block support for external metadata - clear bad blocksTomasz Majchrzak2016-11-282-2/+86
| | | | | | | | | | | | | | | If an update of acknowledged bad blocks file is notified, read entire bad block list from sysfs file and compare it against local list of bad blocks. If any obsolete entries are found, remove them from metadata. As mdmon cannot perform any memory allocation, new superswitch method get_bad_blocks is expected to return a list of bad blocks in metadata without allocating memory. It's up to metadata handler to allocate all required memory in advance. Signed-off-by: Tomasz Majchrzak <tomasz.majchrzak@intel.com> Reviewed-by: Artur Paszkiewicz <artur.paszkiewicz@intel.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
* mdmon: bad block support for external metadata - store bad blocksTomasz Majchrzak2016-11-282-0/+116
| | | | | | | | | | | | | | If md has changed the state to 'blocked' and metadata handler supports bad blocks, try process them first. If metadata handler has successfully stored bad block, acknowledge it to md via 'badblocks' sysfs file. If metadata handler has failed to store the new bad block (ie. lack of space), remove bad block support for a disk by writing "-external_bbl" to state sysfs file. If all bad blocks have been acknowledged, request to unblock the array. Signed-off-by: Tomasz Majchrzak <tomasz.majchrzak@intel.com> Acked-by: Artur Paszkiewicz <artur.paszkiewicz@intel.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
* mdmon: bad block support for external metadata - sysfs file openTomasz Majchrzak2016-11-283-1/+25
| | | | | | | | | Open 'badblocks' and 'unacknowledged_bad_blocks' sysfs files for each disk in the array. Add them to the list of files observed by monitor. Signed-off-by: Tomasz Majchrzak <tomasz.majchrzak@intel.com> Reviewed-by: Artur Paszkiewicz <artur.paszkiewicz@intel.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
* mdadm: bad block support for external metadata - initializationTomasz Majchrzak2016-11-282-1/+39
| | | | | | | | | | | If metadata handler provides support for bad blocks, tell md by writing 'external_bbl' to rdev state file (both on create and assemble), followed by a list of known bad blocks written via sysfs 'bad_blocks' file. Signed-off-by: Tomasz Majchrzak <tomasz.majchrzak@intel.com> Reviewed-by: Artur Paszkiewicz <artur.paszkiewicz@intel.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
* IMSM: Update num_data_stripes during migrationPawel Baldysiak2016-11-281-7/+46
| | | | | | | | | | | This patch adds updataing num_data_stripes during reshape. Previously this field once set during creation was never updated. Also, num_data_strips value multipied by chunk_size is used for set proper component size for RAID5. Signed-off-by: Pawel Baldysiak <pawel.baldysiak@intel.com> Signed-off-by: Maksymilian Kunt <maksymilian.kunt@intel.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
* Add failfast support.NeilBrown2016-11-2812-6/+148
| | | | | | | | | | | | | 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>
* Increase buffer for sysfs disk stateTomasz Majchrzak2016-11-173-6/+9
| | | | | | | | | | | | Bad block support has incremented sysfs disk state reported by kernel ("external_bbl") so it became longer than 20 bytes. It causes reshape to fail as it reads truncated entry from sysfs. Increase buffer so it can accommodate the string including all state values currently implemented in kernel at the same time. Signed-off-by: Tomasz Majchrzak <tomasz.majchrzak@intel.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
* Increase buffer for sysfs pathTomasz Majchrzak2016-11-171-16/+20
| | | | | | | | | 'unacknowledged_bad_blocks' is a long name for sysfs property and it makes sysfs path over 50 characters long. Increase buffer to the double length of the longest path available in sysfs at the moment. Signed-off-by: Tomasz Majchrzak <tomasz.majchrzak@intel.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
* IMSM: 4Kn drives support - adapt general migration recordPawel Baldysiak2016-11-171-26/+73
| | | | | | | | | | | Convert general migration record for 4Kn drives prior to write and post read. Calculate record location based on sector size, don't just assume it's 512. Assure buffer address is aligned to 4096 so write operation avoids caching. Signed-off-by: Pawel Baldysiak <pawel.baldysiak@intel.com> Signed-off-by: Tomasz Majchrzak <tomasz.majchrzak@intel.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
* IMSM: Add support for 4Kn sector size drivesPawel Baldysiak2016-11-171-45/+156
| | | | | | | | | | | | | | | This patch adds support for drives with 4Kn sector size for IMSM metadata. Mixing member drives with 4kn and 512 is not allowed. Some offsets were aligned with sector size. Internal metadata representation and all calculations are still based on 512-byte sector sizes. This implementation converts only sector based values when reading/writing to drive, because they needs to be stored in metadata according to accual member drive sector size. Signed-off-by: Pawel Baldysiak <pawel.baldysiak@intel.com> Signed-off-by: Tomasz Majchrzak <tomasz.majchrzak@intel.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
* IMSM: Read and store device sector sizePawel Baldysiak2016-11-171-0/+23
| | | | | | | | This patch adds retriving device sector size at startup and set it in intel_super, so it can be used in other places. Signed-off-by: Pawel Baldysiak <pawel.baldysiak@intel.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
* Add function for getting member drive sector sizePawel Baldysiak2016-11-173-3/+19
| | | | | | | | 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-163-32/+17
| | | | | | | | | | | | | | | | | | 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>
* Lib.c: Fix geting devname for devices with long pathPawel Baldysiak2016-10-261-1/+1
| | | | | | | | | | | In scenario where VMD is enabled, and "x8" type of NVMe drive is plugged into PCIe switch - the path will be longer than 200 chars (additional VMD domain + 2 level of PCIe switches). This patch makes the buffer big enough to handle this kind of configurations. Signed-off-by: Pawel Baldysiak <pawel.baldysiak@intel.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
* IMSM: Enable spanning between VMD domainsPawel Baldysiak2016-10-261-16/+3
| | | | | | | | | Each VMD domain adds additional PCI domain. This patch enables RAID creation with NVMe drives from different VMD domains. Signed-off-by: Pawel Baldysiak <pawel.baldysiak@intel.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
* IMSM: Add warning message when x8-type device is usedPawel Baldysiak2016-10-261-0/+44
| | | | | | | | | | | | | This patch adds the warning message when x8-type device is used with IMSM metadata. x8 device is a special NVMe drive - two of them on a single PCIe card. This card could be a single point of failure for RAID levels different than RAID0. x8 devices have serial number ending with "-A/-B" or "-1/-2". Signed-off-by: Pawel Baldysiak <pawel.baldysiak@intel.com> Reviewed-by: Artur Paszkiewicz <artur.paszkiewicz@intel.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
* imsm: load migration record from right diskTomasz Majchrzak2016-10-261-9/+3
| | | | | | | | | | | Migration record is only stored on disks in first and second metadata slot. The function to load the record incorrectly passes disk slot as disk index. If rebuilt has taken place for a container, disk slot doesn't match disk index so it causes migration record to be read from a disk it has not been written to. As a result reshape operation fails. Signed-off-by: Tomasz Majchrzak <tomasz.majchrzak@intel.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
* raid6check.c: fix "misleading-indentation" errorYilong Ren2016-10-261-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | To fix the following error info: root@vm-lkp-nex04-8G-7 /tmp/mdadm# make test cc -Wall -Werror -Wstrict-prototypes -Wextra -Wno-unused-parameter -ggdb -DSendmail=\""/usr/sbin/sendmail -t"\" -DCONFFILE=\"/etc/mdadm.conf\" -DCONFFILE2=\"/etc/mdadm/mdadm.conf\" -DMAP_DIR=\"/run/mdadm\" -DMAP_FILE=\"map\" -DMDMON_DIR=\"/run/mdadm\" -DFAILED_SLOTS_DIR=\"/run/mdadm/failed-slots\" -DNO_COROSYNC -DNO_DLM -DVERSION=\"3.4-43-g1dcee1c\" -DVERS_DATE="\"06th April 2016\"" -DUSE_PTHREADS -DBINDIR=\"/sbin\" -c -o raid6check.o raid6check.c raid6check.c: In function 'manual_repair': raid6check.c:267:4: error: this 'else' clause does not guard... [-Werror=misleading-indentation] else ^~~~ raid6check.c:269:5: note: ...this statement, but the latter is misleadingly indented as if it is guarded by the 'else' printf("Repairing D(%d) and P\n", failed_data); ^~~~~~ cc1: all warnings being treated as errors <builtin>: recipe for target 'raid6check.o' failed make: *** [raid6check.o] Error 1 root@vm-lkp-nex04-8G-7 /tmp/mdadm# Cc: NeilBrown <neilb@suse.com> Cc: linux-raid <linux-raid@vger.kernel.org> Cc: LKP <lkp@eclists.intel.com> Reviewed-by: Jes Sorensen <Jes.Sorensen@redhat.com> Signed-off-by: Yilong Ren <yilongx.ren@intel.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
* Fix bus error when accessing MBR partition recordsJames Clarke2016-10-193-8/+22
| | | | | | | | | | | | Since the MBR layout only has partition records as 2-byte aligned, the 32-bit fields in them are not aligned. Thus, they cannot be accessed on some architectures (such as SPARC) by using a "struct MBR_part_record *" pointer, as the compiler can assume that the pointer is properly aligned. Instead, the records must be accessed by going through the MBR struct itself every time. Signed-off-by: James Clarke <jrtc27@jrtc27.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
* super-intel: Reduce excessive parenthesis abuseJes Sorensen2016-10-191-72/+60
| | | | Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
* Allow level migration only for single-array containerMariusz Dabrowski2016-10-191-0/+20
| | | | | | | | | | | IMSM doesn't allow to change RAID level of array in container with two arrays but array count check is being done too late (after removing disks) and in some cases (e. g. RAID 0 and RAID 1 migrated to RAID 0) both arrays become degraded. This patch adds array count check before disks are being removed. Signed-off-by: Mariusz Dabrowski <mariusz.dabrowski@intel.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
* imsm: block chunk size change for RAID 10Mariusz Dabrowski2016-10-191-2/+8
| | | | | | | | | Chunk size change of RAID 10 array fails because it is not supported but invalid values still are being written to metadata and array cannot be assembled after stop. Operation should be blocked before metadata update. Signed-off-by: Mariusz Dabrowski <mariusz.dabrowski@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>
* Fix some issues found by clangNeilBrown2016-10-074-4/+4
| | | | | | | | | | | | | | | | | | The clang compiler complained about each of these. The mdmon.h error will only affect 'far' RAID10 arrays using intel or DDF metadata, and there is no such thing. The mdopen.c will cause a problem if there are no free md device numbers in the first 512. That is fairly unlikely. The restripe.c error would only affect the 'test_stripe' command, and probably doesn't change its behaviour. The super-intel.c fix is purely cosmetic. Signed-off-by: NeilBrown <neilb@suse.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>