summaryrefslogtreecommitdiffstats
path: root/super-ddf.c (follow)
Commit message (Collapse)AuthorAgeFilesLines
* imsm: add verbose flag to compare_superMariusz Tkaczyk2021-03-081-1/+2
| | | | | | | | | | | IMSM does more than comparing metadata and errors reported directly from compare_super_imsm can be useful. Add verbose flag to compare_super method and make all not critical error printing configurable. Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com> Signed-off-by: Jes Sorensen <jsorensen@fb.com>
* imsm: pass subarray id to kill_subarray functionBlazej Kucman2020-02-241-1/+1
| | | | | | | | | | | After patch b6180160f ("imsm: save current_vol number") current_vol for imsm is not set and kill_subarray() cannot determine which volume has to be deleted. Volume has to be passed as "subarray_id". The parameter affects only IMSM metadata. Signed-off-by: Blazej Kucman <blazej.kucman@intel.com> Signed-off-by: Jes Sorensen <jsorensen@fb.com>
* imsm: return correct uuid for volume in detailBlazej Kucman2019-12-021-2/+3
| | | | | | | | | | | Fixes the side effect of the patch b6180160f ("imsm: save current_vol number") - wrong UUID is printed in detail for each volume. New parameter "subarray" is added to determine what info should be extracted from metadata (subarray or container). The parameter affects only IMSM metadata. Signed-off-by: Blazej Kucman <blazej.kucman@intel.com> Signed-off-by: Jes Sorensen <jsorensen@fb.com>
* Fix spelling typos.Dimitri John Ledkov2019-02-111-1/+1
| | | | | Signed-off-by: Dimitri John Ledkov <xnox@ubuntu.com> Signed-off-by: Jes Sorensen <jsorensen@fb.com>
* super-ddf: Fix gcc-8.1 overflow warningsJes Sorensen2018-05-311-2/+3
| | | | | | | Cast to types that are big enough to hold the values, but also guarantee no overflow of the buffer keepts gcc happy. Signed-off-by: Jes Sorensen <jsorensen@fb.com>
* mdadm: Fixup != broken formattingJes Sorensen2017-05-161-4/+4
| | | | Signed-off-by: Jes Sorensen <jsorensen@fb.com>
* mdadm: Fix '==' broken formattingJes Sorensen2017-05-161-8/+8
| | | | Signed-off-by: Jes Sorensen <jsorensen@fb.com>
* mdadm: Fixup more broken logical operator formattingJes Sorensen2017-05-161-8/+7
| | | | Signed-off-by: Jes Sorensen <jsorensen@fb.com>
* mdadm: Fixup a large number of bad formatting of logical operatorsJes Sorensen2017-05-161-17/+16
| | | | | | Logical oprators never belong at the beginning of a line. Signed-off-by: Jes Sorensen <jsorensen@fb.com>
* super-ddf: sysfs_read() takes a pointer as device name argumentJes Sorensen2017-05-161-1/+1
| | | | Signed-off-by: Jes Sorensen <jsorensen@fb.com>
* mdadm: Uninitialized variable rdevJames Puthukattukaran2017-05-161-1/+1
| | | | | | | rdev is not initialized properly causing compiler complaint. Signed-off-by: James Puthukattukaran <joejames70@gmail.com> Signed-off-by: Jes Sorensen <jsorensen@fb.com>
* mdadm/util: unify stat checking blkdev into functionZhilong Liu2017-05-051-6/+4
| | | | | | | | | | | | declare function stat_is_blkdev() to integrate repeated stat checking blkdev operations, it returns 'true/1' when it is a block device, and returns 'false/0' when it isn't. The devname is necessary parameter, *rdev is optional, parse the pointer of dev_t *rdev, if valid, assigned device number to dev_t *rdev, if NULL, ignores. Signed-off-by: Zhilong Liu <zlliu@suse.com> Signed-off-by: Jes Sorensen <jsorensen@fb.com>
* Retire mdassembleJes Sorensen2017-04-111-30/+0
| | | | | | | | 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>
* Detail: show consistency policyArtur Paszkiewicz2017-03-291-3/+3
| | | | | | | | | 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>
* ddf: use 64bit 'size', not 32bit 'info->size' for create.NeilBrown2016-03-101-2/+2
| | | | | | | | | | | | The 'size' field of mdu_disk_info_t is 32bit and should not be used except for legacy ioctls. super-ddf got this wrong :-( This change makes it possible to create ddf arrays which used more than 2TB of each device. Reported-by: Dan Russell <dpr@aol.com> Signed-off-by: NeilBrown <neilb@suse.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
* DDF: _write_super_to_disk: fix anchor header typeMartin Wilck2015-05-131-0/+1
| | | | | | | | | | | | | Since commit 30bee0201, the anchor is updated from the active DDF header. This requires fixing the header type before the anchor is written. The LSI Software RAID code will reject DDF meta data with wrong anchor type and will erase all meta data when it encounters such a broken anchor. Thus starting Linux md once on a system with LSI RAID BIOS may cause the meta data to get destroyed. Signed-off-by: NeilBrown <neilb@suse.de>
* Don't break long strings onto multiple lines.NeilBrown2015-02-121-18/+9
| | | | | | | | | | | | | | | | | It is best to keep strings all together so that they are easier to search for in the source code. If a string is so long that it looks ugly one line, them maybe it should be broken into multiple lines for display too. Only strings which contain a newline can be broken into multiple lines: "It is OK to\n" "break this string\n" Signed-off-by: NeilBrown <neilb@suse.de>
* Consistently print program Name and __func__ in debug messages.NeilBrown2015-02-121-100/+78
| | | | | | | | | | | | make dprintf() print program name and __func__, so that this messaging is consistent. Also remove all __func__ messages from pr_err(). We shouldn't leak that internal data in error message. If we really want function name there, we new pr_XXX might be wanted. Signed-off-by: NeilBrown <neilb@suse.de>
* DDF: cast print arguments in super-ddf.cGuy Menanteau2014-08-051-2/+4
| | | | | | | | | | | | | | | | | | | | mdadm fails to build on ppc64 and ppc64le architectures. === super-ddf.c: In function '_set_config_size': super-ddf.c:2849:4: error: format '%llx' expects argument of type 'long long unsigned int', but argument 6 has type '__u64' [-Werror=format=] pr_err("%s: %x:%x: workspace size 0x%llx too big, ignoring\n", ^ super-ddf.c:2855:2: error: format '%llx' expects argument of type 'long long unsigned int', but argument 6 has type '__u64' [-Werror=format=] dprintf("%s: %x:%x config_size %llx, DDF structure is %llx blocks\n", ^ cc1: all warnings being treated as errors <builtin>: recipe for target 'super-ddf.o' failed === Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1125883 Signed-off-by: <menantea@linux.vnet.ibm.com> Signed-off-by: Michel Normand <normand@linux.vnet.ibm.com> Signed-off-by: NeilBrown <neilb@suse.de>
* DDF: validate metadata_update size before using it.NeilBrown2014-07-101-2/+8
| | | | | | | | | | | | process_update already checks update->len, for all but the 'magic', prepare_update doesn't at all. So add tests to prepare_update that we don't exceed the buffer. This will consequently protect process_update from looking for a 'magic' which isn't there. Reported-by: Vincent Berg <vberg@ioactive.com> Signed-off-by: NeilBrown <neilb@suse.de>
* mdmon: allow prepare_update to report failure.NeilBrown2014-07-101-3/+5
| | | | | | | | | If 'prepare_update' fails for some reason there is little point continuing on to 'process_update'. For now only malloc failures are caught, but other failures will be considered in future. Signed-off-by: NeilBrown <neilb@suse.de>
* Make sure "make everything" builds again.NeilBrown2014-06-051-1/+3
| | | | Signed-off-by: NeilBrown <neilb@suse.de>
* DDF: remove "BVD xx is missing".NeilBrown2014-05-221-1/+1
| | | | | | | This can happen in normal cases during incremental assembly so printing an error message is confusing. Signed-off-by: NeilBrown <neilb@suse.de>
* mdadm: Do not reimplment offsetofCristian Rodríguez2014-05-221-4/+1
| | | | | | Proper implementations have offsetof in stddef.h Signed-off-by: NeilBrown <neilb@suse.de>
* DDF: remove some pointless code in validate_geometryNeilBrown2014-05-211-9/+1
| | | | | | | | I'm not sure what this was supposed to do, but it isn't needed as creating on a container and on individual devices (in a container) work fine already. Signed-off-by: NeilBrown <neilb@suse.de>
* DDF: remove a FIXME comment that doesn't seem to mean anything.NeilBrown2014-05-211-1/+0
| | | | Signed-off-by: NeilBrown <neilb@suse.de>
* DDF: remove 'FIXME' comment that doesn't need fixing.NeilBrown2014-05-211-2/+3
| | | | | | | It appears this is correct, though for consistency with elsewhere we check that pdnum is not negative. Signed-off-by: NeilBrown <neilb@suse.de>
* DDF: ensure dl->devname is freed when processing a 'delete device' update.NeilBrown2014-05-211-3/+3
| | | | | | | | | | As this code runs in 'monitor' it cannot just free memory, it must add it to a list for 'manager' to free. Fortunate update->space_list exists for just this purpose. dl->devname might be small, so put it in update->space and put dl in update->space_list. Signed-off-by: NeilBrown <neilb@suse.de>
* DDF: remove old comment about looking for spares.NeilBrown2014-05-211-1/+0
| | | | | | | As handle_missing() sets ->check_degraded, nothing else needs to be done here. Signed-off-by: NeilBrown <neilb@suse.de>
* DDF: remove an old incorrect FIXME comment.NeilBrown2014-05-211-1/+3
| | | | | | | We mustn't close fds in write_init_super if ->update_tail was set. Signed-off-by: NeilBrown <neilb@suse.de>
* DDF: add data-offset information to --examine output.NeilBrown2014-05-211-0/+1
| | | | | | | | Raid Devices[1] : 5 (4@20000K 3@20000K 2@0K 1@0K 0@0K) The data offsets are 200000K and 0K. Signed-off-by: NeilBrown <neilb@suse.de>
* DDF: split up ddf_process_updateNeilBrown2014-05-211-264/+297
| | | | | | Function was way too big, make several smaller functions. Signed-off-by: NeilBrown <neilb@suse.de>
* DDF: add support of --data-offset when creating array.NeilBrown2014-05-211-12/+10
| | | | | | | | | Infrastructure is there, so use it. This requires making sure that ->data_offset is correctly set, even for containers. Signed-off-by: NeilBrown <neilb@suse.de>
* DDF: factor out common code for search through extents.NeilBrown2014-05-211-90/+62
| | | | | | | | | | | Each place the uses "get_extents" has slightly different search code to look through the result. Factor this out into a single find_space() function. This is will make it easier to add --data-offset support. Signed-off-by: NeilBrown <neilb@suse.de>
* DDF: allow for unused slots when creating map list for getinfo_super_ddf.NeilBrown2014-05-211-4/+8
| | | | Signed-off-by: NeilBrown <neilb@suse.de>
* DDF: DDF_Missing devices should not be reported as 'working' by ↵NeilBrown2014-05-211-1/+2
| | | | | | getinfo_super_ddf Signed-off-by: NeilBrown <neilb@suse.de>
* DDF: remove old and wrong comment about settinig raid_disk.NeilBrown2014-05-211-1/+1
| | | | Signed-off-by: NeilBrown <neilb@suse.de>
* DDF: provide simple detail_super() implementation.NeilBrown2014-05-211-6/+8
| | | | | | Just print the GUID, Seq and number of VDs in the container. Signed-off-by: NeilBrown <neilb@suse.de>
* DDF: support more RAID10 levels.NeilBrown2014-05-211-3/+31
| | | | | | | | | The DDF "RAID1E" level is similar to md "raid10". So use raid10 to support RAID1E, and create RAID1E for raid10 configs not already supported. Signed-off-by: NeilBrown <neilb@suse.de>
* DDF: explain why spare_refs are ignored.NeilBrown2014-05-211-1/+4
| | | | Signed-off-by: NeilBrown <neilb@suse.de>
* DDF: use array_size from metadata.NeilBrown2014-05-211-1/+1
| | | | | | | If some other controller sets a number smaller than a calculation would give us, we really should honour it. Signed-off-by: NeilBrown <neilb@suse.de>
* DDF: set utime for container from timestamp is superblock.NeilBrown2014-05-211-2/+2
| | | | | | Also be more consistent about setting events from seq in superblock. Signed-off-by: NeilBrown <neilb@suse.de>
* DDF: don't assume the anchor is fully up-to-date.NeilBrown2014-05-211-1/+1
| | | | | | | | | We currently copy the anchor to both primary and secondary blocks. This assumes that the anchor is uptodate, but it might not be. We should trust the 'active' block and copy from there. Signed-off-by: NeilBrown <neilb@suse.de>
* DDF: update timestamp/seqnum for virtual disks when config changes.NeilBrown2014-05-211-20/+26
| | | | | | | | | - we weren't updating this timestamp at all - the 'vd_config' seqnum was updated on every write of the metadata, which is excessive. Just update it when there is a change. Signed-off-by: NeilBrown <neilb@suse.de>
* DDF: update timestamp in DDF header.NeilBrown2014-05-211-0/+1
| | | | | | | | | | Doco says: Header update timestamp. MUST be set when the DDF header is updated. So I guess we should. Signed-off-by: NeilBrown <neilb@suse.de>
* DDF: avoid ref outside array in getinfo_super_ddf_bvdNeilBrown2014-05-211-4/+4
| | | | | | | | As we are range-checking 'cd', there is a chance that it is not in-range. In that case we should include all array indexes with 'cd' inside the range-tested branch. Signed-off-by: NeilBrown <neilb@suse.de>
* DDF: examine_pds to also list devices that aren't in the metadata.NeilBrown2014-05-211-0/+20
| | | | | | | | The phys disks table should list all disks, but if the metadata is corrupt, it might not even list the disk it was read from. So check for and report any known disks that aren't listed. Signed-off-by: NeilBrown <neilb@suse.de>
* DDF: fix usage of ->used_pdesNeilBrown2014-05-211-7/+14
| | | | | | | | | | | | The "used_pdes" value counts the number of physdisk entries that are in used. It may not be the last one in use as there may be unused slots in the middle. So when were are iterating over phys disks, we need to use max_pdes and skip unused entries. Signed-off-by: NeilBrown <neilb@suse.de>
* DDF: more guards against pdnum being negative.NeilBrown2014-05-211-3/+3
| | | | | | | With consistent metdata, pdnum should never be negative, but it is better to be safe than sorry. Signed-off-by: NeilBrown <neilb@suse.de>