thirdparty/mdadm.git
9 years ago(no commit message)
NeilBrown [Tue, 23 Mar 2010 22:07:02 +0000 (09:07 +1100)] 

9 years agoRelease mdadm-3.1.2 mdadm-3.1.2
NeilBrown [Wed, 10 Mar 2010 04:58:46 +0000 (15:58 +1100)] 
Release mdadm-3.1.2

9 years agotests: adjust sizes for new defaults
NeilBrown [Tue, 9 Mar 2010 20:53:16 +0000 (07:53 +1100)] 
tests: adjust sizes for new defaults

Default metadata type is now 1.2, and we sometimes
add extra alignment before the data section,
so adjust tests for these changes.

Signed-off-by: NeilBrown <neilb@suse.de>
9 years agoddf/intel: zero out old metadata before creating a container.
NeilBrown [Wed, 10 Mar 2010 04:55:47 +0000 (15:55 +1100)] 
ddf/intel: zero out old metadata before creating a container.

Matching the functionality already in super0 and super1, when
we first create a container, remove any other recognisable metadata to
ensure it doesn't cause confusion.

Signed-off-by: NeilBrown <neilb@suse.de>
9 years agoGrow: fix recent breakage - lseek return status.
NeilBrown [Wed, 10 Mar 2010 04:21:18 +0000 (15:21 +1100)] 
Grow: fix recent breakage - lseek return status.

Recent fix to check lseek64 return status got it badly wrong.
It doesn't return 0 on success!!

Fix it.

Signed-off-by: NeilBrown <neilb@suse.de>
9 years agoAssemble: fix some recently introduced bugs.
NeilBrown [Wed, 10 Mar 2010 00:21:26 +0000 (11:21 +1100)] 
Assemble: fix some recently introduced bugs.

Found during testing:
 - cannot check metadata for homehost before loading metadata.
 - As 1.x metadata can has a state 'rebuilding' between
   'spare' and 'ok', we need to include that in our calculations.

Signed-off-by: NeilBrown <neilb@suse.de>
9 years agoMerge branch 'master' of git://github.com/djbw/mdadm
NeilBrown [Tue, 9 Mar 2010 20:54:03 +0000 (07:54 +1100)] 
Merge branch 'master' of git://github.com/djbw/mdadm

9 years agoStop: done stop a container which still have members active.
NeilBrown [Tue, 9 Mar 2010 05:32:04 +0000 (16:32 +1100)] 
Stop: done stop a container which still have members active.

Doing that is just confusing...

Signed-off-by: NeilBrown <neilb@suse.de>
9 years agoMake sure reshape_active is cleared by getinfo_super
NeilBrown [Tue, 9 Mar 2010 05:15:29 +0000 (16:15 +1100)] 
Make sure reshape_active is cleared by getinfo_super

There were cases where --detail would report phantom reshapes.

Signed-off-by: NeilBrown <neilb@suse.de>
9 years agomdmon.8: minor manpage update
NeilBrown [Tue, 9 Mar 2010 03:34:03 +0000 (14:34 +1100)] 
mdmon.8: minor manpage update

Signed-off-by: NeilBrown <neilb@suse.de>
9 years agomdadm.8: improve hosthost documentation
NeilBrown [Tue, 9 Mar 2010 03:22:39 +0000 (14:22 +1100)] 
mdadm.8: improve hosthost documentation

Signed-off-by: NeilBrown <neilb@suse.de>
9 years agoGrow: fix problem with validating chunk size
NeilBrown [Tue, 9 Mar 2010 03:14:39 +0000 (14:14 +1100)] 
Grow: fix problem with validating chunk size

When checking if the new chunk size fit in the component size
we were confusing sectors and K, and so getting it wrong.

Signed-off-by: NeilBrown <neilb@suse.de>
9 years agoImprove partition table code.
NeilBrown [Mon, 8 Mar 2010 23:57:57 +0000 (10:57 +1100)] 
Improve partition table code.

Code to check partition tables used some needless casts
and was broken, using a u8 when a u32 was wanted.

So create structure describing the tables rather than using offset,
and read into those tables instead.

Signed-off-by: NeilBrown <neilb@suse.de>
9 years agomdadm.8: correct typo: pairty
Ryo Fujita [Mon, 8 Mar 2010 04:47:33 +0000 (15:47 +1100)] 
mdadm.8: correct typo: pairty

Signed-off-by: NeilBrown <neilb@suse.de>
9 years agoimsm: kill ->creating_imsm flag
Dan Williams [Wed, 3 Mar 2010 07:03:04 +0000 (00:03 -0700)] 
imsm: kill ->creating_imsm flag

It is an unused holdover from long since removed functionality.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
9 years agoRevert "Make the IMSM_DEVNAME_AS_SERIAL option work when creating containers."
Dan Williams [Wed, 3 Mar 2010 07:03:04 +0000 (00:03 -0700)] 
Revert "Make the IMSM_DEVNAME_AS_SERIAL option work when creating containers."

This reverts commit 9ef5dbff4adc7979102e71efe8efd83d8e0dc775 as it is
duplicating the check that is done internal to imsm_read_serial().

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
9 years agosuper1: encourage data alignment on 1Meg boundary
NeilBrown [Wed, 3 Mar 2010 04:22:56 +0000 (15:22 +1100)] 
super1: encourage data alignment on 1Meg boundary

For 1.1 and 1.2 metadata where data_offset is not zero,
it is important to align the data_offset to underlying
block size.

We don't currently have access to the particular device
in avail_size so just try to force to a 1Meg boundary.

Also default 1.x metadata to 1.2 as documented.

Signed-off-by: NeilBrown <neilb@suse.de>
9 years agoconfig: add 'homehost' option to 'AUTO' line.
NeilBrown [Wed, 3 Mar 2010 03:33:55 +0000 (14:33 +1100)] 
config: add 'homehost' option to 'AUTO' line.

This allows basing auto-assembly decisions on whether
the array is recorded as belonging to this host or not.

Signed-off-by: NeilBrown <neilb@suse.de>
9 years agoManage: fix regression on removing detached devices.
NeilBrown [Wed, 3 Mar 2010 02:16:24 +0000 (13:16 +1100)] 
Manage: fix regression on removing detached devices.

If /dev is static, a name may remain there after the
device has been detached from the system.
Using 'mdadm' to remove such a device from the array
should still work (even though "mdadm --remove detached"
might be preferred).

So when processing a device for '-r', don't insist on
being able to open the device.

Signed-off-by: NeilBrown <neilb@suse.de>
9 years agoallow redefinition of VAR_RUN
Luca Berra [Sun, 28 Feb 2010 14:46:16 +0000 (15:46 +0100)] 
allow redefinition of VAR_RUN

having mdmon socket under var is painful at shutdown time

Signed-off-by: Luca Berra <bluca@comedia.it>
Signed-off-by: NeilBrown <neilb@suse.de>
9 years agomdmon: Check both RUN directories to find running mdmon
NeilBrown [Sun, 28 Feb 2010 14:43:40 +0000 (15:43 +0100)] 
mdmon: Check both RUN directories to find running mdmon

If mdmon is run without "--takeover", it should still
check both *_RUN directories for a valid 'pid' file
to guard against having two mdmons running at the same time.

Suggested-by: Luca Berra <bluca@comedia.it>
Signed-off-by: NeilBrown <neilb@suse.de>
9 years agomdmon: check select a writable pid_dir
Luca Berra [Sun, 28 Feb 2010 14:42:57 +0000 (15:42 +0100)] 
mdmon: check select a writable pid_dir

Check that either VAR_DIR or ALT_DIR is actually writable before
selecting it.

Signed-off-by: Luca Berra <bluca@comedia.it>
Signed-off-by: NeilBrown <neilb@suse.de>
9 years agofix mdmon takeover
Luca Berra [Sat, 27 Feb 2010 15:07:51 +0000 (16:07 +0100)] 
fix mdmon takeover

- when we waited for the old mdmon to exit, we didn't look
  for the socket in the right place

- when we failed to find a pid file, we returned the wrong
  value (code expected <0, but got ==0).

Signed-off-by: Luca Berra <bluca@comedia.it>
Signed-off-by: NeilBrown <neilb@suse.de>
9 years agofix mdmon option parsing
Luca Berra [Sat, 27 Feb 2010 15:07:04 +0000 (16:07 +0100)] 
fix mdmon option parsing

running mdmon --takeover --all resulted in a segfault.

Also allow "--all" to be longer so that e.g. md_d127 can
successfully over-write it in the argument list visible
to 'ps'.

Signed-off-by: Luca Berra <bluca@comedia.it>
Signed-off-by: NeilBrown <neilb@suse.de>
9 years agoAdd _FORTIFY_SOURCE to mdadm.O2 build.
NeilBrown [Tue, 2 Mar 2010 23:54:17 +0000 (10:54 +1100)] 
Add _FORTIFY_SOURCE to mdadm.O2 build.

When building mdadm.O2, set _FORTIFY_SOURCE to get more
warnings, and also build mdmon.O2 to find warnings in that
code too.
Then fix the warnings.

Suggested-by: Luca Berra <bluca@comedia.it>
Signed-off-by: NeilBrown <neilb@suse.de>
9 years agoFix warning about unused variable.
NeilBrown [Tue, 2 Mar 2010 23:29:24 +0000 (10:29 +1100)] 
Fix warning about unused variable.

Warning only appears with -O2, but is invalid.

Signed-off-by: NeilBrown <neilb@suse.de>
9 years agofix gcc warnings about strict-aliasing rules
NeilBrown [Tue, 2 Mar 2010 23:17:41 +0000 (10:17 +1100)] 
fix gcc warnings about strict-aliasing rules

Original-by: Luca Berra <bluca@comedia.it>
Signed-off-by: NeilBrown <neilb@suse.de>
9 years agoAssemble: clean up properly if we cannot add the bitmap file.
NeilBrown [Wed, 24 Feb 2010 01:17:17 +0000 (12:17 +1100)] 
Assemble: clean up properly if we cannot add the bitmap file.

If we find we cannot add the requested bitmap file when
assembling the array, then make sure to clean up properly
and don't leave a half-configured array.

Signed-off-by: NeilBrown <neilb@suse.de>
9 years agoCreate: change default metadata type to 1.2
NeilBrown [Wed, 24 Feb 2010 01:03:27 +0000 (12:03 +1100)] 
Create: change default metadata type to 1.2

Change default - again, sorry.

v1.1 causes problems as the conflicts with a boot sector, whether on
the whole device or in a partition.  I guess the rule is they you
aren't allowed to use the first sector in general.

v1.2 is mostly just as good and avoid boot-sector problems so default
to that instead.

Signed-off-by: NeilBrown <neilb@suse.de>
9 years agoGrow: be more relaxed about timestamp mismatches on backup file.
NeilBrown [Wed, 24 Feb 2010 00:59:11 +0000 (11:59 +1100)] 
Grow: be more relaxed about timestamp mismatches on backup file.

As backup file has a timestamp which is updated quite separately
from the metadata timestamp.  They should be largely in-sync but
sometimes are not.
So be more generous in the check, and allow it to be over-ridden
by an environment variable.

Signed-off-by: NeilBrown <neilb@suse.de>
9 years agoAssemble: check inargv before complaining about stray arguments.
NeilBrown [Wed, 24 Feb 2010 00:43:59 +0000 (11:43 +1100)] 
Assemble: check inargv before complaining about stray arguments.

If --assemble is given a container and some other devices to assemble
an array from, it complains with an error because that doesn't make
sense.
However it currently also complains if the list of devices was extract
from the config file rather than being given on the command line.
That is not appropriate.

So add an '&& inargv' test to ensure that we are really complaining
about the right thing.

Signed-off-by: NeilBrown <neilb@suse.de>
Acked-by: Dan Williams <dan.j.williams@intel.com>
9 years agosuper1: put bitmap on a 4K boundary when possible.
NeilBrown [Wed, 24 Feb 2010 00:31:48 +0000 (11:31 +1100)] 
super1: put bitmap on a 4K boundary when possible.

Some devices have 4K sector sizes.  So try to align the bitmap
on a 4K boundary.
This isn't possible when hot-adding a bitmap, but will be once
we add support for configuring the bitmap via sysfs.

Signed-off-by: NeilBrown <neilb@suse.de>
9 years agoAssemble: Handle assembling from config file which is out of order.
NeilBrown [Wed, 24 Feb 2010 00:16:41 +0000 (11:16 +1100)] 
Assemble: Handle assembling from config file which is out of order.

Currently "mdadm -As" will process the entries in the config
file in order.  If any array is a component or member of a preceding
array, that array will not be assembled.

So if there are any failures during assembly, retry those arrays,
and look until everything is assembled, or nothing more can
be assembled.

Signed-off-by: NeilBrown <neilb@suse.de>
9 years agomdmon: Document startup/shutdown requirements in man page.
NeilBrown [Mon, 8 Feb 2010 03:43:51 +0000 (14:43 +1100)] 
mdmon: Document startup/shutdown requirements in man page.

Signed-off-by: NeilBrown <neilb@suse.de>
9 years agomapfile: use ALT_RUN as alternate place to store mapfile
NeilBrown [Mon, 8 Feb 2010 03:33:31 +0000 (14:33 +1100)] 
mapfile: use ALT_RUN as alternate place to store mapfile

This gives better consistency and fewer hidden '.' files.

Signed-off-by: NeilBrown <neilb@suse.de>
9 years agomdmon: insist on creating .pid file at startup.
NeilBrown [Mon, 8 Feb 2010 03:30:46 +0000 (14:30 +1100)] 
mdmon: insist on creating .pid file at startup.

Now that we don't "mdadm --takeover" until /var/run is writable
there is no need to continually try to create files in there.

So only create these files at startup and fail if they cannot be
made.  This means that to start an array with externally managed
metadata, either /var/run or ALT_RUN (e.g. /lib/init/rw) must be
writable.  To 'takeover' from a previous mdmon instance, /var/run
must be writable.

This means we don't need to worry about SIGHUP (which was once used to
tell us it was time to create .pid) and SIGALRM.

Signed-off-by: NeilBrown <neilb@suse.de>
9 years agomdmon: don't monitor /proc/mounts to decide when to create .pid file.
NeilBrown [Mon, 8 Feb 2010 03:12:46 +0000 (14:12 +1100)] 
mdmon: don't monitor /proc/mounts to decide when to create .pid file.

Monitoring /proc/mounts and creating a .pid file as soon as /var/run
is writable is racy.  Most distros clean all non-directories from
/var/run early in boot and if mdmon races with this it could
lose the files as soon as they are created.

Instead require that "mdmon --takeover" be run after /var is writable.

Signed-off-by: NeilBrown <neilb@suse.de>
9 years agomdmon: remove switch-root functionality.
NeilBrown [Mon, 8 Feb 2010 03:08:13 +0000 (14:08 +1100)] 
mdmon: remove switch-root functionality.

Using switch-root and then creating files in /var/run once
that location is writable is racing as most distro clean out
/var/run shortly after it is mounted.
This can cause the .pid and .sock files to be deleted shortly
after they are created.

This option doesn't seem to be used at all any, and the alternative
of communicating the pid etc in some preserved directory and then
restarting mdmon once all is settled seems simpler.

So remove the code for supporting switchroot and update man page
accordingly.

Signed-off-by: NeilBrown <neilb@suse.de>
9 years agomdmon: recognise --all in place of /proc/mdstat
NeilBrown [Thu, 4 Feb 2010 06:34:06 +0000 (17:34 +1100)] 
mdmon: recognise --all in place of /proc/mdstat

It seems more meaningful.
Keep the old option as well for back compatibility.

Signed-off-by: NeilBrown <neilb@suse.de>
9 years agomdmon: allow pid to be stored in different directory.
NeilBrown [Thu, 4 Feb 2010 05:31:49 +0000 (16:31 +1100)] 
mdmon: allow pid to be stored in different directory.

/var/run probably doesn't persist from early boot.
So if necessary, store in in /lib/init/rw or somewhere else
that does persist.

Signed-off-by: NeilBrown <neilb@suse.de>
9 years agoHaving single function to read mdmon pid file.
NeilBrown [Thu, 4 Feb 2010 05:47:21 +0000 (16:47 +1100)] 
Having single function to read mdmon pid file.

We don't need three.
One (signal_mdmon) wasn't even being used.

Signed-off-by: NeilBrown <neilb@suse.de>
9 years agomdmon: discard test_pidfile()
NeilBrown [Thu, 4 Feb 2010 03:49:32 +0000 (14:49 +1100)] 
mdmon: discard test_pidfile()

devname2mdmon() can be used just as easily and doing so saves us from
some duplicate code.
Also tidy up some related logic.

Signed-off-by: NeilBrown <neilb@suse.de>
9 years agomdmon: don't mkdir /var/run
NeilBrown [Fri, 29 Jan 2010 01:20:11 +0000 (12:20 +1100)] 
mdmon: don't mkdir /var/run

Creating /var/run in mdmon is really not justifiable.

If /var/run doesn't exist, then it is either deliberate and it should
be left that way to make sure the mapfile gets created in /dev, or
it is a configuration error and not our problem to fix.

Signed-off-by: NeilBrown <neilb@suse.de>
9 years agomdmon: improve switchroot handling.
NeilBrown [Fri, 29 Jan 2010 01:14:17 +0000 (12:14 +1100)] 
mdmon: improve switchroot handling.

The change to get mdmon to re-exec itself from the switchroot
filesystem broken switchroot in various ways.  This fixes it.

If the switchroot path is not '/', mdmon will find the pid and
socket for the monitor, chroot to the new root, and exec mdmon
passing the pid in argv[2] and the socket in stdin.

If the switchroot path is actually a number, mdmon will not chroot,
but will kill that pid before taking over the array.

Signed-off-by: NeilBrown <neilb@suse.de>
9 years agomdmon: simplify try_kill_monitor
NeilBrown [Fri, 29 Jan 2010 00:33:01 +0000 (11:33 +1100)] 
mdmon: simplify try_kill_monitor

After we SIGTERM the monitor we need to wait for it to finish up.
Rather than the complexity of waiting for every md array to be clean,
we can simply read from the sock connected to the monitor.
When the monitor dies, we will get EOF.  Before then we will block.

Signed-off-by: NeilBrown <neilb@suse.de>
9 years agomdmon: remove scan variable from mdmon()
NeilBrown [Thu, 28 Jan 2010 23:40:07 +0000 (10:40 +1100)] 
mdmon: remove scan variable from mdmon()

It is redundant as each place that it is used, it can only
have one possible value.
Also change the related arg to mdmon() to have a more meaningful
name.
And make mdmon() static.

Signed-off-by: NeilBrown <neilb@suse.de>
9 years agoAssemble: fix --force assembly of v1.x arrays which are recovering.
NeilBrown [Thu, 4 Feb 2010 01:02:09 +0000 (12:02 +1100)] 
Assemble: fix --force assembly of v1.x arrays which are recovering.

1.x metadata allows a device to be a member of the array while it
is still recoverying.  So it is a working member, but is not
completely in-sync.

mdadm/assemble does not understand this distinction and assumes that a
work member is fully in-sync for the purpose of determining if there
are enough in-sync devices for the array to be functional.

So collect the 'recovery_start' value from the metadata and use it in
assemble when determining how useful a given device is.

Reported-by: Mikael Abrahamsson <swmike@swm.pp.se>
Signed-off-by: NeilBrown <neilb@suse.de>
9 years agoCreate: Improve warning message about booting from v1.x
NeilBrown [Sun, 31 Jan 2010 23:37:58 +0000 (10:37 +1100)] 
Create: Improve warning message about booting from v1.x

Suggesting that if your boot loaded doesn't support v1.x, then use
  --metadata=1.0
doesn't make a lot of sense.
Also, '/', isn't really important, it is /boot that matters.
Hopefully people who have /boot on '/' realise that /boot is
on '/' ....

Signed-off-by: NeilBrown <neilb@suse.de>
9 years agoAdd test for "are we running as root".
NeilBrown [Sun, 31 Jan 2010 23:22:38 +0000 (10:22 +1100)] 
Add test for "are we running as root".

Most operations require root access.  Rather than ensure we generate
the right error message when something fails because we aren't root,
check early.
Note that "--examine" does not necessarily require root, so test
for that first.

Resolves-Debian-bug: 396570
Signed-off-by: NeilBrown <neilb@suse.de>
9 years agosuper-intel.c: use %zu specifier for printf of size_t
Luca Berra [Sat, 30 Jan 2010 09:59:29 +0000 (10:59 +0100)] 
super-intel.c: use %zu specifier for printf of size_t

Fix compile warning when size_t is not a long.

Acked-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: Luca Berra <bluca@vodka.it>
Signed-off-by: NeilBrown <neilb@suse.de>
9 years agomdadm-3.1.1 segfaults when mdadm -G -Z is used.
Luca Berra [Sat, 30 Jan 2010 09:56:11 +0000 (10:56 +0100)] 
mdadm-3.1.1 segfaults when mdadm -G -Z is used.

Signed-off-by: Luca Berra <bluca@vodka.it>
Signed-off-by: NeilBrown <neilb@suse.de>
9 years agoKill: fix when zeroing busy devices.
Artur Wojcik [Thu, 28 Jan 2010 15:48:44 +0000 (16:48 +0100)] 
Kill: fix when zeroing busy devices.

mdadm should not wait indefinitely when it trys to reset
superblock on device which is busy (cannot be opened).

Acked-by: Andre Noll <maan@systemlinux.org>
Signed-off-by: Artur Wojcik <artur.wojcik@intel.com>
Signed-off-by: NeilBrown <neilb@suse.de>
9 years agomapfile: fix locking.
NeilBrown [Fri, 29 Jan 2010 05:20:08 +0000 (16:20 +1100)] 
mapfile: fix locking.

The current locking uses lockf, and is completely broken.
When you hold a lockf lock, any close of any fd on that file will
release the lock.  So map_read() call which is made as soon as we get
the lock, will immediately drop the lock.

So change to flock locking which isn't so badly designed.

Signed-off-by: NeilBrown <neilb@suse.de>
9 years agoDetail: Report state of FAILED when an array has too few devices to work.
NeilBrown [Fri, 29 Jan 2010 04:45:36 +0000 (15:45 +1100)] 
Detail:  Report state of FAILED when an array has too few devices to work.

We already have a call to 'enough' in Detail which is the check for
"do we have enough devices".  We just need to calculate the required
data a bit earlier, then use the same 'enough' call to possibly
print FAILED.

This is motivated by Debian bug 495755.
The other request in that bug is not practical.

    It would be very nice if output of `mdadm' is more clear in case of a
    broken array.

    Currently the only hint you get from `mdadm' that your array is broken
    is this:

    # mdadm -A /dev/md0 /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1
    mdadm: /dev/md0 assembled from 1 drive and 3 spares - not enough to start the
    array.

    It could say something like `Your array is broken, you can't use it anymore'

It is not valid to report that array as 'broken' if the user hasn't
listed all the devices, which could be the case here.

Resolves-Debian-Bug: 495755
Signed-off-by: NeilBrown <neilb@suse.de>
9 years agoTidy up some argument parsing, particularly for -b
NeilBrown [Fri, 29 Jan 2010 03:54:55 +0000 (14:54 +1100)] 
Tidy up some argument parsing, particularly for -b

-b only means --brief in MISC mode, elsewhere it is --bitmap.

Resolves-debian-bug: 427777
Signed-off-by: NeilBrown <neilb@suse.de>
9 years agomd.4: various improvements to new section on scrubbing.
NeilBrown [Thu, 28 Jan 2010 23:21:56 +0000 (10:21 +1100)] 
md.4: various improvements to new section on scrubbing.

Signed-off-by: NeilBrown <neilb@suse.de>
9 years agomdmon: fix fd leak and possible buffer overrun.
NeilBrown [Thu, 28 Jan 2010 23:15:15 +0000 (10:15 +1100)] 
mdmon: fix fd leak and possible buffer overrun.

We normally wouldn't close 'fd', and as 'buf' might not have
had a nul, strstr could have overrun it.

Signed-off-by: NeilBrown <neilb@suse.de>
9 years agoCorrectly parse -N command line option.
NeilBrown [Thu, 28 Jan 2010 05:55:28 +0000 (16:55 +1100)] 
Correctly parse -N command line option.

'N' wasn't listed in the sort options, so you
had to use --name :-)

Resolved-Debian-Bug: 564004
Signed-off-by: NeilBrown <neilb@suse.de>
9 years agomd.4: add section on scrubbing and mismatch counts.
NeilBrown [Thu, 28 Jan 2010 02:09:58 +0000 (13:09 +1100)] 
md.4: add section on scrubbing and mismatch counts.

This relates to debian bug 405919

Signed-off-by: NeilBrown <neilb@suse.de>
9 years agoGrow: If bitmap interferes with grow, report this.
NeilBrown [Thu, 28 Jan 2010 00:48:03 +0000 (11:48 +1100)] 
Grow: If bitmap interferes with grow, report this.

If a bitmap exists on an array, then current kernels cannot grow
that array.
So when we try to grow an array, test for EBUSY and if a bitmap is
present, report that the bitmap needs to be removed.

Resolves-Debian-Bug: 534571
Signed-off-by: NeilBrown <neilb@suse.de>
9 years agoAssemble: error-check ->load_super
NeilBrown [Wed, 27 Jan 2010 22:01:36 +0000 (09:01 +1100)] 
Assemble: error-check ->load_super

Once load_super has succeeded, it should continue to succeed.  However
devices can disappear etc so it is prudent to always check the return
status of load_super.

Signed-off-by: NeilBrown <neilb@suse.de>
9 years agoRemove stray debugging printfs
NeilBrown [Wed, 27 Jan 2010 21:55:18 +0000 (08:55 +1100)] 
Remove stray debugging printfs

These were never supposed to be released, and due
to a type issue they cause compile problems on
some architectures.

Resolves-Debian-Bug: 567167
Signed-off-by: NeilBrown <neilb@suse.de>
10 years agoFix segfault when the AUTO keyword is used in the config file
Doug Ledford [Mon, 11 Jan 2010 20:38:14 +0000 (15:38 -0500)] 
Fix segfault when the AUTO keyword is used in the config file

Signed-off-by: Doug Ledford <dledford@redhat.com>
Signed-off-by: NeilBrown <neilb@suse.de>
10 years agoDon't use %02d as a metadata format specifier for metadata numbers.
Doug Ledford [Mon, 11 Jan 2010 20:38:12 +0000 (15:38 -0500)] 
Don't use %02d as a metadata format specifier for metadata numbers.

It confuses us when we read the output back later

Signed-off-by: Doug Ledford <dledford@redhat.com>
Signed-off-by: NeilBrown <neilb@suse.de>
10 years agoMake the IMSM_DEVNAME_AS_SERIAL option work when creating containers.
Doug Ledford [Mon, 11 Jan 2010 20:38:10 +0000 (15:38 -0500)] 
Make the IMSM_DEVNAME_AS_SERIAL option work when creating containers.

This allows a person to testing using loopback devices that don't
support serial number queries.

Signed-off-by: Doug Ledford <dledford@redhat.com>
Signed-off-by: NeilBrown <neilb@suse.de>
10 years agoDocument validity of --assume-clean when all devices are zeroed.
Michael Evan [Thu, 10 Dec 2009 05:52:18 +0000 (21:52 -0800)] 
Document validity of --assume-clean when all devices are zeroed.

>>
>> When I assemble an array I tend to have checked the devices before
>> hand; it would not be difficult to make the final pass a zeroing pass
>> if I knew I could vastly speed up post-assembly performance. ¬†As I
>> stated, it's merely a lack of clarity in the documentation.
>
> If you would like to create a patch against the man page, I would be happy to
> accept it.
>
> NeilBrown

Signed-off-by: NeilBrown <neilb@suse.de>
10 years agoMerge branch 'klockwork' of git://github.com/djbw/mdadm
NeilBrown [Wed, 30 Dec 2009 02:46:52 +0000 (13:46 +1100)] 
Merge branch 'klockwork' of git://github.com/djbw/mdadm

Conflicts:
super-intel.c

10 years agoMerge branch 'master' of git://github.com/djbw/mdadm
NeilBrown [Wed, 30 Dec 2009 02:42:37 +0000 (13:42 +1100)] 
Merge branch 'master' of git://github.com/djbw/mdadm

10 years agoDDF: fix incorrect header magic number.
NeilBrown [Wed, 30 Dec 2009 02:42:27 +0000 (13:42 +1100)] 
DDF: fix incorrect header magic number.

I was using the wrong magic number when creating an array.

Signed-off-by: NeilBrown <neilb@suse.de>
10 years agoimsm: add support for checkpointing via 'curr_migr_unit'
Dan Williams [Tue, 22 Dec 2009 00:54:32 +0000 (17:54 -0700)] 
imsm: add support for checkpointing via 'curr_migr_unit'

Unlike native md checkpointing some data about the geometry and type of
the migration process is coded into curr_migr_unit.  Provide logic to
convert between md/{resync_start|recovery_start} and imsm/curr_migr_unit.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
10 years agoSupport external metadata recovery-resume
Dan Williams [Mon, 21 Dec 2009 19:51:57 +0000 (12:51 -0700)] 
Support external metadata recovery-resume

Minimal changes needed to permit reassembling partially recovered
external metadata arrays.  The biggest logical change is that
->container_content() can now surface partially rebuilt members rather
than omitting them from the disk list.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
10 years agoTeach sysfs_add_disk() callers to use ->recovery_start versus 'insync' parameter
Dan Williams [Mon, 21 Dec 2009 18:26:21 +0000 (11:26 -0700)] 
Teach sysfs_add_disk() callers to use ->recovery_start versus 'insync' parameter

Also fixup 'in_sync' versus 'insync' typo.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
10 years agoIntroduce MaxSector
Dan Williams [Mon, 21 Dec 2009 17:23:26 +0000 (10:23 -0700)] 
Introduce MaxSector

Replace occurrences of ~0ULL to make it clear we are talking about maximal
resync/recovery position.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
10 years agoAdd scaffolding for handling md/dev-XXX/recovery_start
Dan Williams [Mon, 21 Dec 2009 17:06:14 +0000 (10:06 -0700)] 
Add scaffolding for handling md/dev-XXX/recovery_start

Prepare the code to handle saving a recovery checkpoint.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
10 years agomdmon: cleanup resync_start
Dan Williams [Mon, 14 Dec 2009 19:57:55 +0000 (12:57 -0700)] 
mdmon: cleanup resync_start

We don't need to sprinkle reads of this attribute all over the place,
just once at the entry of read_and_act().  Also, the mdinfo structure
for the array already has a 'resync_start' member, so just reuse that.
Finally, rename get_resync_start() to read_resync_start to make it
consistent with the other sysfs accessors in monitor.c.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
10 years agomdmon: cleanup manage_member() leak
Dan Williams [Sat, 12 Dec 2009 21:10:01 +0000 (14:10 -0700)] 
mdmon: cleanup manage_member() leak

free() the results of activate_spare().

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
10 years agoimsm: cleanup print_imsm_dev()
Dan Williams [Sat, 12 Dec 2009 20:57:28 +0000 (13:57 -0700)] 
imsm: cleanup print_imsm_dev()

When printing the migration state there is no need to print "migrating".
The fact that the state is non-idle should be enough indication.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
10 years agoutil: fix devnum2devname for devnum == 0
Dan Williams [Sat, 12 Dec 2009 20:57:28 +0000 (13:57 -0700)] 
util: fix devnum2devname for devnum == 0

devnum 0 is md0 no md_d-1

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
10 years agoimsm: fix thunderdome segfault
Dan Williams [Sat, 12 Dec 2009 20:57:25 +0000 (13:57 -0700)] 
imsm: fix thunderdome segfault

disk_list_get() can return NULL if:
1/ A formerly missing disk is re-added
2/ The original array has not been rebuilt, so the family number of the
   missing disk still matches
3/ The metadata record of the in-sync disks are read before the missing
   disk

This will result in the missing disk not adding its own serial number to
the disk_list, only its truncated value will be present.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
10 years agoimsm: fix spare promotion
Dan Williams [Thu, 10 Dec 2009 22:03:34 +0000 (15:03 -0700)] 
imsm: fix spare promotion

When associating a spare take on the target's metadata version number to
satisfy future compare_super checks.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
10 years agoimsm: honor orom constraints for auto-layout
Dan Williams [Thu, 10 Dec 2009 22:03:31 +0000 (15:03 -0700)] 
imsm: honor orom constraints for auto-layout

Factor out the orom checking bits to validate_geometry_imsm_orom() and
share it between validate_geometry_imsm_volume() and the entry path to
reserve_space().

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
10 years agoimsm: prune dead code in validate_geometry_imsm
Dan Williams [Thu, 10 Dec 2009 19:03:40 +0000 (12:03 -0700)] 
imsm: prune dead code in validate_geometry_imsm

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
10 years agoFix required to enable RAID arrays on SAS disks.
Artur Wojcik [Thu, 10 Dec 2009 19:03:40 +0000 (12:03 -0700)] 
Fix required to enable RAID arrays on SAS disks.

The patch increases the capacity of buffers used to store
sysfs path names. Originally the buffers were too small to
hold the canonical representation of sysfs path (in case
of a SAS device, especially a device installed behind an
expander).

Signed-off-by: Artur Wojcik <artur.wojcik@intel.com>
Reviewed-by: Andre Noll <maan@systemlinux.org>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
10 years agoFix for resource leak on error path.
Artur Wojcik [Thu, 10 Dec 2009 19:03:40 +0000 (12:03 -0700)] 
Fix for resource leak on error path.

Make sure opened file descriptors are cleaned up
in the exit path when error occured.

Signed-off-by: Artur Wojcik <artur.wojcik@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
10 years agoFix for buffer overflow defect.
Artur Wojcik [Thu, 10 Dec 2009 19:03:40 +0000 (12:03 -0700)] 
Fix for buffer overflow defect.

Array index of 'path' may be out of bounds. Array
'path' of size 256 may use index value(s) 0..284.

Signed-off-by: Artur Wojcik <artur.wojcik@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
10 years agoFix for buffer overflow error.
Artur Wojcik [Thu, 10 Dec 2009 19:03:40 +0000 (12:03 -0700)] 
Fix for buffer overflow error.

Array index of 'device' may be out of bounds. Array 'device'
of size 40 may use index value(s) 0..43.

Signed-off-by: Artur Wojcik <artur.wojcik@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
10 years agoFix for memory leak defect.
Artur Wojcik [Thu, 10 Dec 2009 19:03:40 +0000 (12:03 -0700)] 
Fix for memory leak defect.

Possible memory leak. Dynamic memory stored in 'dev' and 'dev' allocated
through function 'malloc' can be lost on exit path.

Signed-off-by: Artur Wojcik <artur.wojcik@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
10 years agoFix for memory leak defect.
Artur Wojcik [Thu, 10 Dec 2009 19:03:40 +0000 (12:03 -0700)] 
Fix for memory leak defect.

Possible memory leak. Dynamic memory stored in 'sra' allocated through
function 'sysfs_read' at line 2484 can be lost at lines 2491, 2560 and
2571.

Signed-off-by: Artur Wojcik <artur.wojcik@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
10 years agoFix for memory leak defect.
Artur Wojcik [Thu, 10 Dec 2009 19:03:40 +0000 (12:03 -0700)] 
Fix for memory leak defect.

Dynamic memory stored in 'devnum2devname(st->container_dev)' allocated
through function 'devnum2devname' at line 1274 is lost at line 1278.

Signed-off-by: Artur Wojcik <artur.wojcik@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
10 years agoFix for NULL pointer dereference defect.
Artur Wojcik [Thu, 10 Dec 2009 19:03:40 +0000 (12:03 -0700)] 
Fix for NULL pointer dereference defect.

Pointer 'c' returned from call to function 'strchr' at line 954 may
be NULL and will be dereferenced at line 955.

Signed-off-by: Artur Wojcik <artur.wojcik@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
10 years agoFix for NULL pointer dereference defect.
Artur Wojcik [Thu, 10 Dec 2009 19:03:40 +0000 (12:03 -0700)] 
Fix for NULL pointer dereference defect.

Pointer 'disk' returned from call to function '_get_imsm_disk' at line
700 may be NULL and will be dereferenced at line 710.

Signed-off-by: Artur Wojcik <artur.wojcik@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
10 years agoFix for NULL pointer dereference defect.
Artur Wojcik [Thu, 10 Dec 2009 19:03:39 +0000 (12:03 -0700)] 
Fix for NULL pointer dereference defect.

Pointer 'st' returned from call to function 'malloc' at line 320 may
be NULL and it will be dereferenced at line 321.

Signed-off-by: Artur Wojcik <artur.wojcik@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
10 years agoimsm: no need to report the component device name from container_content
Dan Williams [Thu, 10 Dec 2009 19:03:39 +0000 (12:03 -0700)] 
imsm: no need to report the component device name from container_content

sysfs_add_disk() regenerates the name from major:minor, so we can drop a
strcpy that the static analysis checker does not like.

Reported-by: Artur Wojcik <artur.wojcik@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
10 years agoFix for buffer overflow defect.
Artur Wojcik [Thu, 10 Dec 2009 19:03:39 +0000 (12:03 -0700)] 
Fix for buffer overflow defect.

Buffer overflow, array index of 'nm' may be out of bounds.

Signed-off-by: Artur Wojcik <artur.wojcik@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
10 years agoFix for NULL pointer dereference.
Artur Wojcik [Thu, 10 Dec 2009 19:03:39 +0000 (12:03 -0700)] 
Fix for NULL pointer dereference.

Pointers '_dev' and '_disk' returned from call to function '_get_imsm_dev'
and '_get_imsm_disk' may be NULL and will be dereferenced at lines
2933 and 2934, respectively.

Signed-off-by: Artur Wojcik <artur.wojcik@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
10 years agoFix for NULL pointer dereference.
Artur Wojcik [Thu, 10 Dec 2009 19:03:39 +0000 (12:03 -0700)] 
Fix for NULL pointer dereference.

Suspicious dereference of pointer 'super' before NULL check at
line 3429.

Signed-off-by: Artur Wojcik <artur.wojcik@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
10 years agoFix for memory and resource leak.
Artur Wojcik [Thu, 10 Dec 2009 19:03:39 +0000 (12:03 -0700)] 
Fix for memory and resource leak.

Make sure opened file descriptor is cleaned up on exit
path. Also make sure allocated memory for 'sra' is released
on exit path, too.

Signed-off-by: Artur Wojcik <artur.wojcik@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
10 years agoFix for possible NULL pointer dereference.
Artur Wojcik [Thu, 10 Dec 2009 19:03:37 +0000 (12:03 -0700)] 
Fix for possible NULL pointer dereference.

Pointer 'this' returned from call to function 'malloc' at line 3795
may be NULL and will be dereferenced at line 3796.

Artur Wojcik <artur.wojcik@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
10 years agoFix for buffer overflow defect in 'link'.
Artur Wojcik [Thu, 10 Dec 2009 18:52:23 +0000 (11:52 -0700)] 
Fix for buffer overflow defect in 'link'.

Potential buffer overflow of 'link' caused by user input may occur,
due to non null-terminated string 'link'.

Signed-off-by: Artur Wojcik <artur.wojcik@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
10 years agoDon't attempt a re-add if the device is marked as faulty.
NeilBrown [Tue, 8 Dec 2009 06:26:31 +0000 (17:26 +1100)] 
Don't attempt a re-add if the device is marked as faulty.

If a device is marked as faulty, then a re-add will cause it to be
added as a faulty drive, which is not what it wanted.
So just refuse to try to re-add a device which is marked 'faulty'.

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