Commit Graph

1328 Commits

Author SHA1 Message Date
NeilBrown 1b13faf757 Grow: use large block count and make sure stripe cache can hold it.
The bigger the backup is, the fast it goes to some extend.

16Meg is fairly arbitrary

Signed-off-by: NeilBrown <neilb@suse.de>
2009-11-06 14:48:10 +11:00
NeilBrown e380d3be42 Grow: get component_size before using it.
We were using ->component_size while it hadn't been set.
This effectively meant that 'blocks' wasn't multiplied by
16 and reshape was even slower than it should have been.

Signed-off-by: NeilBrown <neilb@suse.de>
2009-11-06 14:18:49 +11:00
NeilBrown d44453876e Grow: handle array going degraded during reshape.
If an array goes degraded during reshape, we need to
adjust the devices we read from so as not to back up
stale data.

Signed-off-by: NeilBrown <neilb@suse.de>
2009-11-06 13:56:05 +11:00
NeilBrown 92dcdf7c01 Grow: restore backup to proper location.
The 'arraystart' is in sectors while restore_stripes requires
bytes, so we need a conversion.

Without this, backups get restored to the wrong offset.

Reported-by: "KueiHuan Chen" <kueihuan.chen@gmail.com>
Signed-off-by: NeilBrown <neilb@suse.de>
2009-11-06 13:38:43 +11:00
Marco d'Itri 5bac0443e0 vol_id was removed by the udev upstream maintainer in May 2009.
One should use
  /sbin/blkid -o udev -p ...
(from util-linux >> 2.16) instead of
  vol_id --export ...

Author: Marco d'Itri <md@linux.it>
Bug-Debian: http://bugs.debian.org/541884
Reviewed-by: martin f. krafft <madduck@debian.org>
Signed-off-by: NeilBrown <neilb@suse.de>
2009-10-29 10:14:43 +11:00
NeilBrown d1302dd801 Remove bogus warnings from man page.
LANG=C man --warnings -l mdadm.8 > /dev/null

complains that '.XX' is an invalid macro.
This is not correct.  The sequence

   .ig XX
   anything can go here
   .XX

is correct and is ignored (see 'info groff' and the 'ig' index
entry).

However the same can be achieved with
   .ig
   anything can go there
   ..

and this produces no warnings, so use that instead.

Signed-off-by: NeilBrown <neilb@suse.de>
2009-10-29 10:11:01 +11:00
NeilBrown dab54dcb04 Detail: report new-layout for RAID6 arrays
We were only reporting it for RAID5 and RAID10.

Signed-off-by: NeilBrown <neilb@suse.de>
2009-10-29 10:02:24 +11:00
NeilBrown 7f0066ba71 Release 3.1
New functionality in --grow.

Signed-off-by: NeilBrown <neilb@suse.de>
2009-10-22 14:07:05 +11:00
NeilBrown d6d5656bd5 Merge branch 'master' into devel-3.1 2009-10-22 13:57:54 +11:00
NeilBrown d28c1a7383 Release 3.0.3
Signed-off-by: NeilBrown <neilb@suse.de>
2009-10-22 12:05:22 +11:00
NeilBrown 4a997737a1 Merge branch 'master' into devel-3.1 2009-10-22 11:13:13 +11:00
NeilBrown 0eb26465c0 Free some malloced memory that wasn't being freed.
As mdadm is normally a short-lived program it isn't always necessary
to free memory that was allocated, as the 'exit()' call will
automatically free everything.  But it is more obviously correct if
the 'free' is there.
So this patch add a few calls to 'free'

Signed-off-by: NeilBrown <neilb@suse.de>
2009-10-22 11:00:56 +11:00
NeilBrown 9739642288 Grow: update backup-metadata mtime every time we write it.
Originally the backup-metadata was only written once at the
start of a raid5 reshape that made the array bigger.  So we only
set the mtime once.

Now that we can be writing metadata continually during an in-place
reshape, we need to update the mtime more often.

Also, allow the metadata mtime to be slightly in advance of the
array mtime.  Normally the difference will be less than a second,
so 10 minutes should be plenty.  This guards against an old backup
file being used to restart an array.  but starting two reshapes in the
10 minutes is sufficiently unlikely, and the possibility of an
accident is already sufficiently small, that 10 minutes is probably
fine.

Thanks to Guy Martin <gmsoft@tuxicoman.be> for discovering and
reporting that .mtime wasn't being updated properly.

Signed-off-by: NeilBrown <neilb@suse.de>
2009-10-22 10:42:06 +11:00
NeilBrown eb3929a47f Compile fixes for mdassemble
Signed-off-by: NeilBrown <neilb@suse.de>
2009-10-20 16:53:43 +11:00
NeilBrown 24d40069d7 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>
2009-10-20 16:36:03 +11:00
NeilBrown ea0ebe9685 Assemble: print more verbose messages about restarting a reshape
Signed-off-by: NeilBrown <neilb@suse.de>
2009-10-20 16:23:45 +11:00
NeilBrown 22e305169f Add missing 'continue' in Grow_restart.
Thus we weren't checking the uuid properly.

Signed-off-by: NeilBrown <neilb@suse.de>
2009-10-20 15:36:49 +11:00
NeilBrown 1799c9e8f8 super-intel: Fix compilation of mdassemble.
Signed-off-by: NeilBrown <neilb@suse.de>
2009-10-20 13:50:23 +11:00
NeilBrown 1dfcc211b1 testreshape5 fixes.
We seem to need a 'udevadm settle', and possibly the 'sync'..

Signed-off-by: NeilBrown <neilb@suse.de>
2009-10-20 08:02:53 +11:00
NeilBrown 151ea1a33d 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>
2009-10-20 08:00:35 +11:00
NeilBrown 5ac6db12f9 mdopen: only use 'dev' as chosen name if it is a full path.
Otherwise using names like "r0" causes problem.  They are
handled sufficiently by other paths in the code.

Signed-off-by: NeilBrown <neilb@suse.de>
2009-10-19 17:11:15 +11:00
NeilBrown 8a0a0ded4a Assemble: handle container members better
When looking for a specific member, don't accept a
different member, but step on to the next one.

Signed-off-by: NeilBrown <neilb@suse.de>
2009-10-19 17:08:04 +11:00
NeilBrown 7636b5a8bb Assemble: print verbose messages when finding members in containers
.. so that "-Av" gives more hints at what is going on.

Signed-off-by: NeilBrown <neilb@suse.de>
2009-10-19 17:04:12 +11:00
NeilBrown 8f1b2bbbb9 Detail: list containers before members.
To allow "--assemble --scan" to have a chance, list
containers before members in --detail --scan output.

Signed-off-by: NeilBrown <neilb@suse.de>
2009-10-19 17:00:52 +11:00
NeilBrown 00eb571675 test/ddf: don't insist that mdadm.conf is always in the same order.
When created by different process, the order could reasonably
be different.  So sort before compare

Signed-off-by: NeilBrown <neilb@suse.de>
2009-10-19 16:58:38 +11:00
NeilBrown 453e3b41d0 test/raid6integ: correct type
ddf-zero-restart was misspelled.

Signed-off-by: NeilBrown <neilb@suse.de>
2009-10-19 16:57:16 +11:00
NeilBrown 2e48e34945 test: udev-settle before testing device.
I think we sometime get way ahead of udev and devices disappear
and appear almost at random.  So add some settling.

Signed-off-by: NeilBrown <neilb@suse.de>
2009-10-19 16:56:13 +11:00
Mike Frysinger d16c7af6d8 mdadm(8): fix spurious space after -e header
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: NeilBrown <neilb@suse.de>
2009-10-19 13:15:48 +11:00
Zdenek Behan 9a36a9b713 Monitor: add option to specify rebuild increments
ie. the percent increments after which RebuildNN event is generated

This is particulary useful when using --program option, rather than
(only) syslog for alerts.

Signed-off-by: Zdenek Behan <rain@matfyz.cz>
Signed-off-by: NeilBrown <neilb@suse.de>
2009-10-19 13:13:58 +11:00
NeilBrown 1373b07d75 mdmon: lock current memory as well as future memory.
mlockall(MCL_FUTURE) only locks mappings that have not yet
been created.  To lock all memory used by the process, we need
 MCL_CURRENT | MCL_FUTURE

Signed-off-by: NeilBrown <neilb@suse.de>
2009-10-19 13:04:16 +11:00
NeilBrown 5d504f4278 Merge git://github.com/djbw/mdadm 2009-10-19 12:52:58 +11:00
NeilBrown 6636f0efb3 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>
2009-10-16 17:57:28 +11:00
NeilBrown ba6241244b Test different r5/r6 layouts.
Make sure kernel and restripe agree on all different layouts.

Signed-off-by: NeilBrown <neilb@suse.de>
2009-10-16 17:50:07 +11:00
NeilBrown 1eac9f8454 restripe: fix assignment of raid6 blocks for syndrome calculation.
Particularly for the _6 style.

Signed-off-by: NeilBrown <neilb@suse.de>
2009-10-16 17:50:06 +11:00
NeilBrown 4180aa4d4e Handle negative delta_disks in super0 and super1.
Signed-off-by: NeilBrown <neilb@suse.de>
2009-10-16 17:43:54 +11:00
NeilBrown 82f2d6abf0 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>
2009-10-16 17:43:51 +11:00
NeilBrown eba7152931 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>
2009-10-16 17:02:34 +11:00
Dan Williams 9f1da82421 mdmon: preserve socket over chroot
Connect to the monitor in the old namespace and use that connection for
WaitClean requests when stopping the victim mdmon instance.  This allows
ping_monitor() to work post chroot().

Cc: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
2009-10-13 17:41:58 -07:00
Dan Williams b928b5a038 mdmon: exec(2) when the switchroot argument is not "/"
Try to execute mdmon from the target namespace.  When used for initramfs
handovers we need to drop all references to the initramfs filesystem for
that memory to be freed.

Cc: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
2009-10-13 17:41:58 -07:00
Dan Williams 96a8270d46 mdmon: avoid writes in the startup path for mdmon on root arrays
When killing a previous monitor be careful not to cause writes to the
filesystem until the reads necessary to get the monitor operational have
completed.

The code is already prepared for errors creating the pid and socket
files, so simply defer creation of these files until after the first
call to manage().

Cc: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
2009-10-13 17:41:57 -07:00
Dan Williams aae5a11207 Detail: export MD_UUID from mapfile
The load_super() from an mdadm --detail call may race against an mdmon
update.  When this happens the load_super sees an inconsistent metadata
block and returns an error.  The fallback path to use the map file
contents lacks uuid reporting, so provide __fname_from_uuid for
generically printing a uuid.

Reported-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
2009-10-13 17:41:57 -07:00
Dan Williams d2b9eb5993 imsm: regression test for prodigal array member scenario
Provide a test to sanity check assembly and reassembly in the presence
of conflicting family number information.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
2009-10-13 17:41:53 -07:00
Dan Williams 6e46bf344b imsm: add --update=uuid support
When disks have conflicting container memberships (same container ids
but incompatible member arrays) --update=uuid can be used to move
offenders to a new container id by changing 'orig_family_num'.

Note that this only supports random updates of the uuid as the actual
uuid is synthesized.  We also need to communicate the new
'orig_family_num' value to all disks involved in the update.  A new
field 'update_private' is added to struct mdinfo to allow this
information to be transmitted.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
2009-10-13 17:41:53 -07:00
Dan Williams 955e9ea139 ddf: prevent superblock being zeroed on --update
The full fix would be to support updating ddf metadata, but this minimal
fix just prevents the superblock from being zeroed when someone
inadvertently passes an unsupported --update option during assembly.

Reported-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
2009-10-13 17:41:53 -07:00
Dan Williams e683ca88ac imsm: fix/support --update
Fix init_super_imsm() to return an empty mpb when info == NULL, and
teach store_super_imsm() to simply write out the passed in mpb.

Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=523320

Reported-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
2009-10-13 17:41:53 -07:00
Dan Williams f796af5d5e imsm: fix spare record writeout race
imsm_activate_spare() in the manager thread may race against
write_super_imsm_spares() in the monitor thread.  Give
write_super_imsm_spares() its own private mpb buffer to prevent
confusing the manager.

This change uncovered cases where spares were not being assembled due to
a failed metadata version number check.  Spares can freely associate
across metadata version number, so reduce the scope of the version check
in the spare assembly case.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
2009-10-13 17:41:53 -07:00
NeilBrown 521f349cb0 restripe: fix compile warning.
Just a type cast...

Signed-off-by: NeilBrown <neilb@suse.de>
2009-10-12 17:00:23 +11:00
NeilBrown 471ac41e46 test changelevel: add tests for changing degraded arrays.
Signed-off-by: NeilBrown <neilb@suse.de>
2009-10-12 16:57:55 +11:00
NeilBrown cc50ccdc29 restripe : various fixed for RAID6 2-failure recovery.
Signed-off-by: NeilBrown <neilb@suse.de>
2009-10-12 16:57:22 +11:00
NeilBrown 487e48afab Test level changes and related reshaping.
Signed-off-by: NeilBrown <neilb@suse.de>
2009-10-12 16:57:18 +11:00