]> git.ipfire.org Git - thirdparty/mdadm.git/log
thirdparty/mdadm.git
14 years agoCompile fixes for mdassemble
NeilBrown [Tue, 20 Oct 2009 05:53:43 +0000 (16:53 +1100)] 
Compile fixes for mdassemble

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agoGrow: reject raid-disks reduction in RAID5 etc before 2.6.32
NeilBrown [Tue, 20 Oct 2009 05:36:03 +0000 (16:36 +1100)] 
Grow: reject raid-disks reduction in RAID5 etc before 2.6.32

2.6.31 has some bugs with restarting a RAID5 reduction, so
refuse to try unless at least 2.6.32.

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agoAssemble: print more verbose messages about restarting a reshape
NeilBrown [Tue, 20 Oct 2009 05:23:45 +0000 (16:23 +1100)] 
Assemble: print more verbose messages about restarting a reshape

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agoAdd missing 'continue' in Grow_restart.
NeilBrown [Tue, 20 Oct 2009 04:36:49 +0000 (15:36 +1100)] 
Add missing 'continue' in Grow_restart.

Thus we weren't checking the uuid properly.

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agotests/imsm: allow for rounding of array size.
NeilBrown [Fri, 16 Oct 2009 06:57:28 +0000 (17:57 +1100)] 
tests/imsm:  allow for rounding of array size.

IMSM rounds array size to a multiple of 1024K, so our tests must
assume this.

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agoTest different r5/r6 layouts.
NeilBrown [Fri, 16 Oct 2009 06:50:07 +0000 (17:50 +1100)] 
Test different r5/r6 layouts.

Make sure kernel and restripe agree on all different layouts.

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agorestripe: fix assignment of raid6 blocks for syndrome calculation.
NeilBrown [Fri, 16 Oct 2009 06:50:06 +0000 (17:50 +1100)] 
restripe: fix assignment of raid6 blocks for syndrome calculation.

Particularly for the _6 style.

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agoHandle negative delta_disks in super0 and super1.
NeilBrown [Fri, 16 Oct 2009 06:43:54 +0000 (17:43 +1100)] 
Handle negative delta_disks in super0 and super1.

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agoGrow_restart to handle reducing number of devices in an array.
NeilBrown [Fri, 16 Oct 2009 06:43:51 +0000 (17:43 +1100)] 
Grow_restart to handle reducing number of devices in an array.

FIXME this is wrong . what direction does reshape_position move?

If the device count in an array is shrinking, the critical
region is different so the tests need to be different when
restarting.

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agoGrow: don't make 'blocks' too large during in-place reshape.
NeilBrown [Fri, 16 Oct 2009 06:02:34 +0000 (17:02 +1100)] 
Grow: don't make 'blocks' too large during in-place reshape.

On small (test) arrays, multiplying by 16 can make the 'chunk' size
larger than half the array, which is a problem.

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agorestripe: fix compile warning.
NeilBrown [Mon, 12 Oct 2009 06:00:23 +0000 (17:00 +1100)] 
restripe: fix compile warning.

Just a type cast...

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agotest changelevel: add tests for changing degraded arrays.
NeilBrown [Mon, 12 Oct 2009 05:57:55 +0000 (16:57 +1100)] 
test changelevel: add tests for changing degraded arrays.

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agorestripe : various fixed for RAID6 2-failure recovery.
NeilBrown [Mon, 12 Oct 2009 05:57:22 +0000 (16:57 +1100)] 
restripe : various fixed for RAID6 2-failure recovery.

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agoTest level changes and related reshaping.
NeilBrown [Mon, 12 Oct 2009 05:57:18 +0000 (16:57 +1100)] 
Test level changes and related reshaping.

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agoGrow: ignore error from final wait_backup
NeilBrown [Mon, 12 Oct 2009 05:55:19 +0000 (16:55 +1100)] 
Grow: ignore error from final wait_backup

The last time wait_backup is called, it might see reshape
finish and so return an error indicator.
But this is not an error, and we must go ahead and prepare
the array for full access.

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agoGrow: make sure bsb2 is properly aligned
NeilBrown [Mon, 12 Oct 2009 05:55:12 +0000 (16:55 +1100)] 
Grow: make sure bsb2 is properly aligned

We do O_DIRECT io in bsb2, so it must be aligned
properly.  Easiest if it is static.

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agotestreshape5 - add tests for RAID6
NeilBrown [Mon, 12 Oct 2009 05:55:05 +0000 (16:55 +1100)] 
testreshape5 - add tests for RAID6

.. to make sure our raid6 calculations are working.

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agoMerge branch 'master' into devel-3.1
NeilBrown [Thu, 1 Oct 2009 06:58:40 +0000 (16:58 +1000)] 
Merge branch 'master' into devel-3.1

Conflicts:
mdadm.8

14 years agoFix null-dereference in set_member_info
NeilBrown [Thu, 1 Oct 2009 02:51:04 +0000 (12:51 +1000)] 
Fix null-dereference in set_member_info

set_member_info would try to dereference ->metadata_version, without
checking that it isn't NULL.

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agoAdd missing space in "--detail --brief" output.
NeilBrown [Thu, 1 Oct 2009 02:38:31 +0000 (12:38 +1000)] 
Add missing space in "--detail --brief" output.

We need a space between the device name and the word "level"..

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agoRelease mdadm-3.0.2 mdadm-3.0.2
NeilBrown [Fri, 25 Sep 2009 08:19:07 +0000 (18:19 +1000)] 
Release mdadm-3.0.2
Just one bugfix.

14 years agosuper0: fix crash on assemble if homehost is not set.
NeilBrown [Fri, 25 Sep 2009 07:56:22 +0000 (17:56 +1000)] 
super0: fix crash on assemble if homehost is not set.

If homehost is not set - typically during early boot,
and assemble of v0.90 metadata arrays will crash.

Reported-by: Paweł Sikora <pluto@agmk.net>
Signed-off-by: NeilBrown <neilb@suse.de>
14 years agoFix raid6 error recovery in 'restripe' code.
NeilBrown [Fri, 25 Sep 2009 07:23:33 +0000 (17:23 +1000)] 
Fix raid6 error recovery in 'restripe' code.

Thanks to Matthias Urlichs for discovering and reporting this.

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agoRelease mdadm-3.0.1 mdadm-3.0.1
NeilBrown [Fri, 25 Sep 2009 07:08:19 +0000 (17:08 +1000)] 
Release mdadm-3.0.1

Just bugfixes.

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agotestreshape5 - flush devices between tests.
NeilBrown [Fri, 25 Sep 2009 06:57:01 +0000 (16:57 +1000)] 
testreshape5 - flush devices between tests.

We need to flush the block devices before reading different data.

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agoMerge branch 'master' of git://github.com/djbw/mdadm
NeilBrown [Fri, 25 Sep 2009 04:11:11 +0000 (14:11 +1000)] 
Merge branch 'master' of git://github.com/djbw/mdadm

14 years agomdmon: fix freeing unallocated memory
Hans de Goede [Thu, 24 Sep 2009 13:52:06 +0000 (06:52 -0700)] 
mdmon: fix freeing unallocated memory

mdmon was creating a supertype struct with malloc, and thus not
necessarily getting zero-d memory.

This was causing it to segfault when called like this from the initrd:
/sbin/mdmon /proc/mdstat /sysroot

The problem was that  load_super_imsm would get called on the non-zero'd
super struct, whcih in turn calls free_super_imsm, which checks st->sb,
which should be zero but isn't and then starts freeing bogus memory.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
14 years agoimsm: clear CONFIGURED_DISK for failed drives
Dan Williams [Tue, 15 Sep 2009 18:35:28 +0000 (11:35 -0700)] 
imsm: clear CONFIGURED_DISK for failed drives

Synchronizing with what the Windows driver does.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
14 years agoimsm: kill USABLE_DISK flag
Dan Williams [Tue, 15 Sep 2009 18:35:28 +0000 (11:35 -0700)] 
imsm: kill USABLE_DISK flag

'USABLE_DISK' is not a 'persistent' status flag it is an internal status
flag used for the in memory representation of the disk in the Windows
driver.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
14 years agoExamine: don't count containers as spares
Dan Williams [Tue, 15 Sep 2009 18:35:28 +0000 (11:35 -0700)] 
Examine: don't count containers as spares

mdadm -Ebs will include containers in the scanned device list.
Examine() falsely thinks they are spares when MD_DISK_SYNC is not set.
This could be fixed by forcing all formats to set this flag for
container devices, but this flag is currently used by imsm to identify
free-floating spares.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
14 years agoDetail: fix for an imsm container with a spare
Dan Williams [Tue, 15 Sep 2009 18:34:20 +0000 (11:34 -0700)] 
Detail: fix for an imsm container with a spare

Spares for imsm arrays do not have any info about the container in their
metadata records.  If Detail() inadvertantly picks such a device for
->get_array_info() it will end up with less than useful info for the
container.  So, continue to read from the disks until a non-spare device
is found.

This bug was found by timeouts waiting for udev to create the
user-friendly container name.  To detect future UUID reporting problems
and a debug print to the timeout case in wait_for().

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
14 years agoExamine: fixup output in the presence of containers with spares
Dan Williams [Tue, 15 Sep 2009 18:34:20 +0000 (11:34 -0700)] 
Examine: fixup output in the presence of containers with spares

If we dump any 'spare' or 'device' information for a container in the
'brief' case then we need a newline before printing member array info.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
14 years agoimsm: fix spare promotion
Dan Williams [Tue, 15 Sep 2009 18:34:20 +0000 (11:34 -0700)] 
imsm: fix spare promotion

1/ Fix an off by one error when detecting whether the device allocation
   loop succeeded or not
2/ Update ->num_raid_devs before copying to avoid a segmentation fault

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
14 years agoAdd a missing 'closedir'.
NeilBrown [Fri, 11 Sep 2009 06:10:24 +0000 (16:10 +1000)] 
Add a missing 'closedir'.

Thanks to David Binderman for finding and reporting it.

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agosuper1: remove fd leak when opening /dev/urandom
NeilBrown [Thu, 13 Aug 2009 05:02:39 +0000 (15:02 +1000)] 
super1: remove fd leak when opening /dev/urandom

As reported in
   https://bugzilla.novell.com/show_bug.cgi?id=527722

I forgot to close the fd after reading the random number.

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agomdadm.8 : update documentation for new --grow modes
NeilBrown [Thu, 13 Aug 2009 01:41:40 +0000 (11:41 +1000)] 
mdadm.8 : update documentation for new --grow modes

14 years agoGrow: support restart of new migrations.
NeilBrown [Thu, 13 Aug 2009 01:12:54 +0000 (11:12 +1000)] 
Grow: support restart of new migrations.

14 years agoHandle extra 'grow' variations.
NeilBrown [Tue, 11 Aug 2009 03:02:49 +0000 (13:02 +1000)] 
Handle extra 'grow' variations.

UNFINISHED

14 years agoExmaine/brief: put member arrays after container arrays.
NeilBrown [Fri, 7 Aug 2009 04:17:40 +0000 (14:17 +1000)] 
Exmaine/brief: put member arrays after container arrays.

A previous patch moved move the '--examine --brief' reporting of
member arrays to before their containers.  This breaks "mdadm -As"
assembly.  So put them back, but still fix the problem addressed by
previous patch.

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agoMerge branch 'master' of git://github.com/djbw/mdadm
NeilBrown [Fri, 7 Aug 2009 03:45:38 +0000 (13:45 +1000)] 
Merge branch 'master' of git://github.com/djbw/mdadm

14 years agoAssemble: fix handling of empty container
Dan Williams [Tue, 4 Aug 2009 17:17:23 +0000 (10:17 -0700)] 
Assemble: fix handling of empty container

# mdadm --create /dev/md/ddf /dev/sd[b-e] -n 4 -e ddf
mdadm: container /dev/md/ddf prepared.
# mdadm -Ss
mdadm: stopped /dev/md126
# mdadm -As
mdadm: Container /dev/md/ddf0 has been assembled with 4 drives
Segmentation fault

Reported-by: Artur Wojcik <artur.wojcik@intel.com>
Reported-by: Jacek Danecki <jacek.danecki@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
14 years agoimsm: fix spare-uuid assignment
Dan Williams [Sat, 1 Aug 2009 00:11:42 +0000 (17:11 -0700)] 
imsm: fix spare-uuid assignment

imsm spares do not have container membership by default so we associate
them with the first container found in the configuration file.  Some
ARRAY lines do not specify the metadata type so we cannot assume that
_cst will always be valid.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
14 years agoplatform: relax rom scanning alignment for ahci platforms
Dan Williams [Sat, 1 Aug 2009 00:11:41 +0000 (17:11 -0700)] 
platform: relax rom scanning alignment for ahci platforms

The PCI-3.0 Firmware specification allows for option-roms to have
512-byte alignment rather than 2048-byte.  As there does not appear to
be a reliable method to detect a PCI-3.0 compliant BIOS from userspace
we allow the imsm platform detection code to presume that a system
modern enough to have an Intel AHCI controller does not have
dangerous/legacy ISA regions in the option-ROM memory space.

An environment variable to disable this behaviour, IMSM_SAFE_OROM_SCAN,
is added in case this presumption is ever proven wrong.

Reported-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
14 years agoimsm: fix family number handling
Dan Williams [Sat, 1 Aug 2009 00:11:41 +0000 (17:11 -0700)] 
imsm: fix family number handling

The family_number field can change.  The option-rom will change the
family number when it starts a rebuild process (flags a container for
rebuild).  This was not seen previously as mdadm would usually start the
rebuild process, preserving the family number.

This is the mechanism that helps to prevent a prodigal array member from
being returned to its original system and cause a rebuild to go in the
wrong direction.  With the change we will end up with a container that
will fail to assemble unless the device with the incompatible family
number is left out of the assembly.

So, take several actions:
1/ Convert uuid generation to use orig_family_num, being careful to
   preserve the existing uuid in the case where orig_family_num is not
   set (i.e. previous mdadm created imsm arrays)
2/ Set orig_family_num at Create.  For arrays created by mdadm prior to
   this release orig_family_num will be zero, so set it to family_num at
   the first metadata write.
3/ Add checks for orig_family_num to compare_super_imsm
4/ Update the family number when initiating rebuild
5/ The option-rom mixes some random data into the family number, add
   this functionality to the mdadm implementation.

Reported-by: Marcin Labun <marcin.labun@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
14 years agoimsm: fix activate_spare off-by-one
Dan Williams [Sat, 1 Aug 2009 00:11:41 +0000 (17:11 -0700)] 
imsm: fix activate_spare off-by-one

The last sector of an array is calculated by start + size - 1.

Reported-by: Rafal Marszewski <rafal.marszewski@intel.com>
Reported-by: Jarema Bielanski <jarema.bielanski@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
14 years agoconditionally update uuids in the map file after Create()
Dan Williams [Sat, 1 Aug 2009 00:11:41 +0000 (17:11 -0700)] 
conditionally update uuids in the map file after Create()

The map file needs to be updated after adding the first member array to
an Intel metadata container.  The uuid for an imsm container uses the
->family_num field of the metadata.  This field is static, but is only
set after the first member array has been created.  Prior to this all
devices are free floating spares and do not have any information that
can identify specific container membership.  At Create() time we take
the uninitialized uuid from ->get_info_super() prior to updating the
metadata.  So the current result is:

# mdadm --create /dev/md/imsm /dev/sd[b-e] -n 4 -e imsm
# mdadm --create /dev/md/vol0 /dev/md/imsm -n 4 -l 0
# cat /var/run/mdadm/map
md126 /md127/0 3e03aee2:78c3c593:1e8ecaf0:eefb53ed /dev/md/vol0
md127 imsm 53d6f8b1:7a783f24:f30483c5:705c48c7 /dev/md/imsm
# mdadm -Ebs
ARRAY metadata=imsm UUID=589d2d2c:4221a54d:acb63c06:c3907f52
ARRAY /dev/md/vol0 container=589d2d2c:4221a54d:acb63c06:c3907f52
member=0 UUID=57b89b63:5cd0eae1:17dd26b3:51cc78d4

So, before we write out the new metadata check to see if the member
array uuid has changed as a result of this addition.  If it has, update
its uuid in the map file and flag its parent container for updating.  In
support of updating the container uuid the semantics of
->write_init_super are changed to clear any metadata specific member
array cursors (e.g. ddf_super.currentconf or intel_super.current_vol)
such that a subsequent call to ->getinfo_super returns container
information.

Reported-by: Ignacy Kasperowicz <ignacy.kasperowicz@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
14 years agoimsm: fixup examine_brief to be more descriptive in the container only case
Dan Williams [Sat, 1 Aug 2009 00:11:41 +0000 (17:11 -0700)] 
imsm: fixup examine_brief to be more descriptive in the container only case

Prior to creating any arrays in a new container the output from -Ebs for
a 4-disk imsm array returns:

spares=4

We should at least display that these are imsm spares:

ARRAY metadata=imsm
spares=4

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
14 years agofix examine_brief segfault
Dan Williams [Sat, 1 Aug 2009 00:11:41 +0000 (17:11 -0700)] 
fix examine_brief segfault

When performing an "-Ebs -e <metadata type>" we segfault because the
superblock has been freed too early.  We also leak memory for 'ddf' and
'imsm' because, unlike super[01], we do not implicitly free when
->load_super is called on an already loaded supertype.

So, fix up imsm and ddf to match type 0 and 1 ->load_super() semantics,
and update Examine to not free the superblock until all usages have been
exhausted.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
14 years agofix RebuildMap() to retrieve 'subarray' info
Dan Williams [Sat, 1 Aug 2009 00:11:41 +0000 (17:11 -0700)] 
fix RebuildMap() to retrieve 'subarray' info

RebuildMap falsely returns container info for member arrays.  Retrieving
the subarray and container_dev details prior to ->load_super() changes the
result from:

md127 imsm 082c6371:74b5ce03:64972e41:6b0860d5 /dev/md/imsm
md126 imsm 082c6371:74b5ce03:64972e41:6b0860d5 /dev/md/vol0

...to:

md126 /md127/0 3e03aee2:78c3c593:1e8ecaf0:eefb53ed /dev/md/vol0
md127 imsm 082c6371:74b5ce03:64972e41:6b0860d5 /dev/md/imsm

Reported-by: Ignacy Kasperowicz <ignacy.kasperowicz@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
14 years agoteach imsm and ddf what st->subarray means at load_super time
Dan Williams [Sat, 1 Aug 2009 00:08:22 +0000 (17:08 -0700)] 
teach imsm and ddf what st->subarray means at load_super time

RebuildMap wants to poll through mdstat and retrieve a (kernel name,
uuid, user name) tuple for each array.  Teach imsm and ddf to honor
st->sub_array at ->load_super() time to set their internal subarray
pointers to the value specified in st->subarray, or return an error if
st->subarray specifies an invalid array.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
14 years agorestripe: support saving when not all devices are present.
NeilBrown [Tue, 14 Jul 2009 05:12:30 +0000 (15:12 +1000)] 
restripe: support saving when not all devices are present.

14 years agoExamine/Detail: report raid6 layout
NeilBrown [Tue, 14 Jul 2009 05:12:29 +0000 (15:12 +1000)] 
Examine/Detail:  report raid6 layout

Somehow this was missing before...

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agoGrow: --size improvements.
NeilBrown [Tue, 14 Jul 2009 04:32:30 +0000 (14:32 +1000)] 
Grow:  --size improvements.

1/ allow --size to be given with 'G' or 'T' suffix.
2/ allow size to exceed 32bits, and in that case write through sysfs.

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agoGrow: pass layout as a string rather than a number.
NeilBrown [Tue, 14 Jul 2009 02:13:29 +0000 (12:13 +1000)] 
Grow: pass layout as a string rather than a number.

This allows the layout to be parsed after the current level of the
array is know, so that the level doesn't need to be given (otherwise
pointlessly) on the command line.

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agoRemove Manage_reconfing in favour of Grow_reshape
NeilBrown [Tue, 14 Jul 2009 02:11:31 +0000 (12:11 +1000)] 
Remove Manage_reconfing in favour of Grow_reshape

Bother Manage_reconfig and Grow_reshape provide for changing
the 'layout' of a faulty array.  This is no necessary.
So discard Manage_reconfig and just use Grow_reshape

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agomain: factor out code to parse layout for raid10 and faulty.
NeilBrown [Tue, 14 Jul 2009 01:29:20 +0000 (11:29 +1000)] 
main: factor out code to parse layout for raid10 and faulty.

This will soon be called from multiple places.

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agoGrow: support --array-size changes
NeilBrown [Mon, 13 Jul 2009 05:00:02 +0000 (15:00 +1000)] 
Grow:  support --array-size changes

With 2.6.30 it is possible to tell the md driver to clip an array to a
size smaller than the real size of the array.  This option gives
access to that feature.  The size change does not persist
across restarts.

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agoMonitor: use pclose rather than fclose
NeilBrown [Fri, 10 Jul 2009 04:39:20 +0000 (14:39 +1000)] 
Monitor: use pclose rather than fclose

Using pclose is probably the right thing to do seeing that we
used popen, but as there is no clear need to wait for sendmail
to finish, it isn't really important.

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agoExamine: make --metadata= work with --brief
NeilBrown [Fri, 10 Jul 2009 00:44:32 +0000 (10:44 +1000)] 
Examine: make --metadata= work with --brief

They had different assumptions about the lifetime of 'st'.

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agoExamine: fix --examine --brief --verbose on containers.
NeilBrown [Thu, 4 Jun 2009 02:44:32 +0000 (12:44 +1000)] 
Examine: fix --examine --brief --verbose on containers.

With --verbose, --examine --brief prints dev= information after
the personality has done its bit.
But with containers, the member array are printed in between.
So in super-ddf and super-intel, move printing of the member
arrays to before printing of the container.  This avoids
confusion.

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agosuper-intel: fix test on failed_disk_num.
NeilBrown [Thu, 4 Jun 2009 02:29:21 +0000 (12:29 +1000)] 
super-intel: fix test on failed_disk_num.

We sometimes set failed_disk_num to ~0.
However we cannot test for equality with that as  failed_disk_num
is 8bit and ~0 is probably 32bit with lots of 1's.
So test if ~failed_disk_num is 0 instead.

Reported-By: "Mr. James W. Laferriere" <babydr@baby-dragons.com>
Signed-off-by: NeilBrown <neilb@suse.de>
14 years agoRelease mdadm-3.0 devel-3.0 mdadm-3.0
NeilBrown [Tue, 2 Jun 2009 05:37:56 +0000 (15:37 +1000)] 
Release mdadm-3.0

 - remove lot of old 'ANNOUNCE' files
 - trim changelog
 - update version numbers

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agoMerge branch 'master' of git://github.com/djbw/mdadm into devel-3.0
NeilBrown [Tue, 2 Jun 2009 05:28:41 +0000 (15:28 +1000)] 
Merge branch 'master' of git://github.com/djbw/mdadm into devel-3.0

14 years agoMerge branch 'master' into devel-3.0
NeilBrown [Tue, 2 Jun 2009 05:28:36 +0000 (15:28 +1000)] 
Merge branch 'master' into devel-3.0

Conflicts:
super0.c
super1.c

14 years agoMove WaitClean from Monitor.c to sysfs.c
NeilBrown [Tue, 2 Jun 2009 05:27:16 +0000 (15:27 +1000)] 
Move WaitClean from Monitor.c to sysfs.c

That way mdmon doesn't need to include Monitor.o

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agoUpdate copyright dates and remove references to @cse.unsw.edu.au
NeilBrown [Tue, 2 Jun 2009 04:35:45 +0000 (14:35 +1000)] 
Update copyright dates and remove references to @cse.unsw.edu.au

Also removed 'paper' addresses.

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agoMonitor: reduce default poll interval if mdstat is pollable.
NeilBrown [Tue, 2 Jun 2009 04:35:44 +0000 (14:35 +1000)] 
Monitor:  reduce default poll interval if mdstat is pollable.

Since 2.6.16, mdstat responds to select/poll.
So in that case, increase the default poll interval to about 15
minutes.
This ensures that the background load is insignificant.

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agoMonitor: don't get confused if utime is never set.
NeilBrown [Tue, 2 Jun 2009 04:24:58 +0000 (14:24 +1000)] 
Monitor: don't get confused if utime is never set.

externally managed arrays do not (currently) cause utime in
GET_ARRAY_INFO to be updated.  So if it is zero, just assume the
current time.
This will cause GET_DISK_INFO to be called more often, but as we do
the scan only every 60 seconds normally, a few extra syscalls isn't
going to make a big difference.

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agomdadm.8: Man page updates
NeilBrown [Tue, 2 Jun 2009 04:06:05 +0000 (14:06 +1000)] 
mdadm.8: Man page updates

General review and update of mdadm.8

14 years agorestripe: add support for new layouts including DDF
NeilBrown [Mon, 25 May 2009 00:52:31 +0000 (10:52 +1000)] 
restripe: add support for new layouts including DDF

md supports new raid6 layouts to support conversion to and from
raid5 and well as DDF.  Make sure restripe handles those, including
getting the order right for Q-syndrome calculation.

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agoimsm: kill "auto=" in brief_examine_super_imsm
Dan Williams [Mon, 18 May 2009 17:02:58 +0000 (10:02 -0700)] 
imsm: kill "auto=" in brief_examine_super_imsm

The auto parameter is obsolete after kernel version 2.6.28 as all arrays
are partitionable via block device extended minor support.  Environments
that requre the mdp style of array can always edit the configuration
file to specify auto=mdp.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
14 years agoimsm: fix num_domains
Dan Williams [Mon, 18 May 2009 16:58:55 +0000 (09:58 -0700)] 
imsm: fix num_domains

The 'num_domains' field simply identifies the number of mirrors.  So it
is 2 for a 2-disk raid1 or a 4-disk raid10.  The orom does not currently
support more than 2 mirrors, but a three disk raid1 for example would
increase num_domains to 3.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
14 years agoMonitor: support spare-group manipulation for 1.x metadata.
NeilBrown [Mon, 11 May 2009 23:49:45 +0000 (09:49 +1000)] 
Monitor: support spare-group manipulation for 1.x metadata.

The code for moving spares around a spare-group currently
only works for 0.90 metadata.  Generalise it for 1.x metadata
as well.

Reported-by: "Garth Snyder" <garth@grsweb.us>
Signed-off-by NeilBrown <neilb@suse.de>

14 years agoIgnore leading zeros in version number information.
NeilBrown [Mon, 11 May 2009 23:49:06 +0000 (09:49 +1000)] 
Ignore leading zeros in version number information.

--detail sometimes generates leading zero which are just noise.

14 years agoRelease mdadm-3.0-rc1 mdadm-3.0-rc1
NeilBrown [Mon, 11 May 2009 06:33:29 +0000 (16:33 +1000)] 
Release mdadm-3.0-rc1

14 years agoMerge branch 'master' into devel-3.0
NeilBrown [Mon, 11 May 2009 06:05:41 +0000 (16:05 +1000)] 
Merge branch 'master' into devel-3.0

Conflicts:
Build.c
mdadm.c
mdadm.h
super1.c

14 years agocreate_mddev: don't replace /dev/mdX with /dev/md/X
NeilBrown [Mon, 11 May 2009 05:58:44 +0000 (15:58 +1000)] 
create_mddev: don't replace /dev/mdX with /dev/md/X

If someone creates/assemble an array called "/dev/md0", don't force
it to be "/dev/md/0".  Doing so isn't really necessary and it
likely to confuse people.

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agomapfile - when rebuilding, choose an appropriate name is none is found.
NeilBrown [Mon, 11 May 2009 05:58:42 +0000 (15:58 +1000)] 
mapfile - when rebuilding, choose an appropriate name is none is found.

When rebuilding the mapfile (mdadm -Ir), if not appropriate name is
found in /dev/md/, try to find an appropriate name, either by looking
in mdadm.conf or by using the name in the metadata.

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agoIncr: use devname_matches to when looking in mdadm.conf for bitmap file
NeilBrown [Mon, 11 May 2009 05:47:11 +0000 (15:47 +1000)] 
Incr: use devname_matches to when looking in mdadm.conf for bitmap file

This is more likely to always do the right thing than a strcmp.

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agomapfile - Fix off-by-one error in RebuildMap
NeilBrown [Mon, 11 May 2009 05:47:11 +0000 (15:47 +1000)] 
mapfile - Fix off-by-one error in RebuildMap

"mdadm -Ir" would get the path for md0 wrong because it
went looking for mdp(-1) by mistake.

Signed-off-by NeilBrown <neilb@suse.de>

14 years agoFix printf compile warning.
NeilBrown [Mon, 11 May 2009 05:47:10 +0000 (15:47 +1000)] 
Fix printf compile warning.

It always afters to cast big things to (unsigned long long) before
printing as %llu - it seems there will always be one arch which
has something to complain about ....

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agoIncremental: fix uninitialised variable.
NeilBrown [Mon, 11 May 2009 05:47:10 +0000 (15:47 +1000)] 
Incremental: fix uninitialised variable.

st2 might not be initialised at this point.  So use the
more correct 'st'.

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agoIncr: cope better with possibility that mp->path might be NULL
NeilBrown [Mon, 11 May 2009 05:47:10 +0000 (15:47 +1000)] 
Incr: cope better with possibility that mp->path might be NULL

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agomapfile: allow the path name to the device to be empty.
NeilBrown [Mon, 11 May 2009 05:47:10 +0000 (15:47 +1000)] 
mapfile:  allow the path name to the device to be empty.

Allowing an empty name and coping with it is less confusing
than seeing "/empty" appear.

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agomap_dev: prefer names in /dev/md/
NeilBrown [Mon, 11 May 2009 05:47:10 +0000 (15:47 +1000)] 
map_dev: prefer names in /dev/md/

Rather than preferring non-standard names (of which there are
many, like /dev/block/9:1), prefer names in /dev/md/ when finding
the name of an md device.

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agoudev-md-raid.rules: use string_escape
NeilBrown [Mon, 11 May 2009 05:47:10 +0000 (15:47 +1000)] 
udev-md-raid.rules: use string_escape

For safety, "MD_NAME" strings should be escaped in udev.

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agosuper1 - fix brief examine.
NeilBrown [Mon, 11 May 2009 05:47:10 +0000 (15:47 +1000)] 
super1 - fix brief examine.

We manage to lose some space here...

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agoman pages: note that --auto is largely deprecated and irrelevant.
NeilBrown [Mon, 11 May 2009 05:47:10 +0000 (15:47 +1000)] 
man pages: note that --auto is largely deprecated and irrelevant.

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agoBe more consistent about keeping the host: prefix on array names.
NeilBrown [Mon, 11 May 2009 05:47:10 +0000 (15:47 +1000)] 
Be more consistent about keeping the host: prefix on array names.

If an array name contains a "hostname:" prefix, then
--assemble will tend to leave it there, while --incremental
will strip it off (when chosing a device name during auto-assembly).

Make this more consistent:  strip the name off if we decide that
the name will be treated as 'local'.  Leave it on if it will be
treated as 'foreign'.

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agoconfig: enhance name matching in conf_get_ident.
NeilBrown [Mon, 11 May 2009 05:47:10 +0000 (15:47 +1000)] 
config: enhance name matching in conf_get_ident.

Use when searching mdadm.conf for a device, use more flexible
matching that e.g. ignores leading /dev/md/ or /dev/

As mdadm now accepts both "/dev/md/foo" and "foo" is many places as
equivalent, they should compare as the same.

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agoAllow homehost to be largely ignored when assembling arrays.
NeilBrown [Mon, 11 May 2009 05:46:46 +0000 (15:46 +1000)] 
Allow homehost to be largely ignored when assembling arrays.

If mdadm.conf contains
   HOMEHOST <ignore>
or commandline contains
   --homehost=<ignore>

then the check that array metadata mentions the given homehost is
replace by a check that the name recorded in the metadata is not
already used by some other array mentioned in mdadm.conf.

This allows more arrays to use their native name rather than having
an _NN suffix added.

This should only be used during boot time if all arrays required for
normal boot are listed in mdadm.conf.

If auto-assembly is used to find all array during boot, then the
HOMEHOST feature should be used to ensure there is no room for
confusion in choosing array names, and so it should not be set
to <ignore>.

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agoutil: fix test for text_version
NeilBrown [Mon, 11 May 2009 05:21:43 +0000 (15:21 +1000)] 
util: fix test for text_version

as text_version is a char array (not a pointer), testing the
address against NULL is the wrong thing to do.  Test the
content instead.

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agoAssemble/Incr : minor tidy up of setting 'trustworthy'.
NeilBrown [Mon, 11 May 2009 05:19:30 +0000 (15:19 +1000)] 
Assemble/Incr : minor tidy up of setting 'trustworthy'.

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agoconfig: allow Array line to contain array name without /dev/md/ prefix.
NeilBrown [Mon, 11 May 2009 05:18:35 +0000 (15:18 +1000)] 
config: allow Array line to contain array name without /dev/md/ prefix.

For consistency with --create and --assemble, allow the array name
given in mdadm.conf to exclude the "/dev/md/" prefix.  So e.g.

  ARRAY home uuid=whatever

is treated like

  ARRAY /dev/md/home uuid=whatever

Also exclude names which create_mddev will reject.

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agoFix tests on ->container and ->member
NeilBrown [Mon, 11 May 2009 05:18:25 +0000 (15:18 +1000)] 
Fix tests on ->container and ->member

For container= and member= to be effective in an mdadm.conf line
they must both be present.  So when checking for their absence we
need container != NULL || member != NULL.

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agoMake --brief even briefer.
NeilBrown [Mon, 11 May 2009 05:18:20 +0000 (15:18 +1000)] 
Make --brief even briefer.

Because ---examine --brief, or --detail --brief are
often used to create mdadm.conf, and because people don't want to
have to update their mdadm.conf unnecessarily, we don't want to
include information that might change.
And now that level changing is supported, that is almost everything
but UUID.

So move some more fields into the "Only print with --verbose" class.

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agomdadm.8 general updates
NeilBrown [Mon, 11 May 2009 05:17:50 +0000 (15:17 +1000)] 
mdadm.8  general updates

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agoconf/assemble: new config line "auto".
NeilBrown [Mon, 11 May 2009 05:17:33 +0000 (15:17 +1000)] 
conf/assemble:  new config line "auto".

The line 'auto' in mdadm.conf can be used to disable assembly
of specific metadata types, or of all arrays.

This does not affect assembly of arrays listed in mdadm.conf
or on command line.

 auto -all

will disable all auto-assembly.

 auto -ddf

will cause mdadm to ignore ddf arrays that are not explicitly
mentioned, and auto assemble anything else it finds.

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agoconfig: support "ARRAY <ignore> ..." lines in mdadm.conf
NeilBrown [Mon, 11 May 2009 05:17:05 +0000 (15:17 +1000)] 
config: support "ARRAY <ignore> ..." lines in mdadm.conf

Sometimes we want to ensure particular arrays are never
assembled automatically.  This might include an array made of
devices that are shared between hosts.

To support this, allow ARRAY lines in mdadm.conf to use the word
"ignore" rather than a device name.  Arrays which match such lines
are never automatically assembled (though they can still be assembled
by explicitly giving identification information on the mdadm command
line.

Signed-off-by: NeilBrown <neilb@suse.de>
14 years agoassemble: support arrays created with --homehost=any
NeilBrown [Mon, 11 May 2009 05:16:49 +0000 (15:16 +1000)] 
assemble:  support arrays created with --homehost=any

If an array is created with --homehost=any, then --assemble and
--incremental will treat it as being local to 'this' host, no matter
what the name of this host is.

This is useful for array that will be given unique names and be
moved between machines.

This needs to be documented.

Signed-off-by: NeilBrown <neilb@suse.de>