Commit Graph

1463 Commits

Author SHA1 Message Date
Dan Williams 484240d8a3 mdmon: periodically checkpoint recovery
The kernel updates and notifies md/sync_completed when it is time to
take a checkpoint.  When this occurs (at 1/16 array size intervals)
write 'idle' to md/sync_action to have the current recovery position
updated in recovery_start and resync_start.

Requires the metadata handler to reset ->last_checkpoint when it has
determined that recovery has ended.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
2010-05-14 17:42:49 -07:00
Dan Williams 63b4aae33e mdmon: fix missing open of md/<dev>/recovery_start
When activating a spare we neglect to open recovery_start and as such do
not see checkpoint events.  Move disk initialization to common routine
to mitigate recurrence.

Reported-by: Adam Kwolek <adam.kwolek@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
2010-04-29 10:50:29 -07:00
NeilBrown 200871adf9 Grow: avoid overflow of chunk sizes.
Chunks aren't particularly big, but when you could them in bytes
and multiply them together (as we do for calculating the backup
size for 'grow') they can overflow a 32bit int.

So group the division by 512 more closely with the
chunk size so were would need 30Meg chunks to come close to
overflowing 32bits.

Signed-off-by: NeilBrown <neilb@suse.de>
2010-04-29 16:14:30 +10:00
NeilBrown 691c6ee1b6 IMSM/DDF: don't recognised these metadata on partitions.
These metadata are not expected on partitions, and they have
no way of differentiation whether which is correct if they
are found both on the device and on the last partition.

So if the device is a partition, refuse to read the metadata.

Signed-off-by: NeilBrown <neilb@suse.de>
2010-04-29 16:09:59 +10:00
Dan Williams 4eb269706f Create: cleanup after failed create in duplicated array member case
mdadm prevents creation when device names are duplicated on the command
line, but leaves the partially created array intact.  Detect this case
in the error code from add_to_super() and cleanup the partially created
array.  The imsm handler is updated to report this conflict in
add_to_super_imsm_volume().

Note that since neither mdmon, nor userspace for that matter, ever saw an
active array we only need to perform a subset of the cleanup actions.
So call ioctl(STOP_ARRAY) directly and arrange for Create() to cleanup
the map file rather than calling Manage_runstop().

Reported-by: Krzysztof Wojcik <krzysztof.wojcik@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
2010-04-19 15:28:07 +10:00
Dan Williams c824e91898 Fixup default definitions of VAR_RUN and ALT_RUN
I suspect commit c132678b wanted VAR_RUN and ALT_RUN to be suffixed by
'/mdadm' to match the defaults in mdadm.h.

Cc: Luca Berra <bluca@comedia.it>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: NeilBrown <neilb@suse.de>
2010-04-15 15:29:49 +10:00
Doug Ledford 94fcb80a8e powerpc compile fix
Signed-off-by: Doug Ledford <dledford@redhat.com>
Signed-off-by: NeilBrown <neilb@suse.de>
2010-04-07 09:19:42 +10:00
NeilBrown ebeb366382 Don't attempt to create or read bitmaps where the metadata doesn't support it.
In particular, if the relevant bitmap method is NULL, don't try to
call it, print an error instead.

Signed-off-by: NeilBrown <neilb@suse.de>
2010-04-07 09:18:01 +10:00
NeilBrown 9b0502b879 Merge branch 'HEAD'; commit 'a4b93c9ce4f15217afb8' 2010-04-07 09:17:13 +10:00
NeilBrown a4b93c9ce4 Add ANNOUNCE-3.1.2
Forgot to git-add this for the release :-(

Signed-off-by: NeilBrown <neil@suse.de>
2010-04-07 09:13:16 +10:00
Doug Ledford 7bf59f5c16 Only signal a udev change event if we actually write a mapfile in RebuildMap
Signed-off-by: Doug Ledford <dledford@redhat.com>
2010-03-24 09:37:39 +11:00
Doug Ledford e259df4e63 mapfile: if we putting the mapfile in a custom location via ALT_RUN, allow
a custom filename too.

Signed-off-by: Doug Ledford <dledford@redhat.com>
2010-03-24 09:37:34 +11:00
Doug Ledford 435b90e7d4 Create directory to contain mapfile (Assuming parent exists and
filesystem is writable).
This particularly keeps udev happy if VAR_RUN is set to /dev/md.

Signed-off-by: Doug Ledford <dledford@redhat.com>
Signed-off-by: NeilBrown <neilb@suse.de>
2010-03-24 09:07:03 +11:00
NeilBrown 86983cce34 2010-03-24 09:07:02 +11:00
NeilBrown a31c140f13 Release mdadm-3.1.2 2010-03-10 15:58:46 +11:00
NeilBrown ebe6ea0c4c 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>
2010-03-10 15:56:01 +11:00
NeilBrown d682f3445c 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>
2010-03-10 15:55:47 +11:00
NeilBrown a847575aa1 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>
2010-03-10 15:21:28 +11:00
NeilBrown 1ff9833928 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>
2010-03-10 11:21:40 +11:00
NeilBrown c147484252 Merge branch 'master' of git://github.com/djbw/mdadm 2010-03-10 07:54:03 +11:00
NeilBrown 430ea469ad Stop: done stop a container which still have members active.
Doing that is just confusing...

Signed-off-by: NeilBrown <neilb@suse.de>
2010-03-09 16:32:04 +11:00
NeilBrown 624c5ad4cb 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>
2010-03-09 16:15:29 +11:00
NeilBrown ecdbb368f8 mdmon.8: minor manpage update
Signed-off-by: NeilBrown <neilb@suse.de>
2010-03-09 14:34:03 +11:00
NeilBrown c64ba03ae7 mdadm.8: improve hosthost documentation
Signed-off-by: NeilBrown <neilb@suse.de>
2010-03-09 14:22:39 +11:00
NeilBrown be1cabbd29 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>
2010-03-09 14:14:39 +11:00
NeilBrown 056b331efe 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>
2010-03-09 10:57:57 +11:00
Ryo Fujita 10adfe9ae7 mdadm.8: correct typo: pairty
Signed-off-by: NeilBrown <neilb@suse.de>
2010-03-08 15:47:33 +11:00
Dan Williams 49133e5782 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>
2010-03-03 00:03:04 -07:00
Dan Williams 32ba9157f5 Revert "Make the IMSM_DEVNAME_AS_SERIAL option work when creating containers."
This reverts commit 9ef5dbff4a as it is
duplicating the check that is done internal to imsm_read_serial().

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
2010-03-03 00:03:04 -07:00
NeilBrown a380e2751e 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>
2010-03-03 15:22:56 +11:00
NeilBrown d1d3482b56 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>
2010-03-03 14:33:55 +11:00
NeilBrown 5a9de8db04 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>
2010-03-03 13:16:24 +11:00
Luca Berra c132678b18 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>
2010-03-03 12:23:30 +11:00
NeilBrown 32f217017f 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>
2010-03-03 12:07:18 +11:00
Luca Berra ed8fa52f31 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>
2010-03-03 11:54:47 +11:00
Luca Berra cf55630357 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>
2010-03-03 11:35:26 +11:00
Luca Berra eb49460b74 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>
2010-03-03 11:06:08 +11:00
NeilBrown fcf5762500 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>
2010-03-03 10:54:17 +11:00
NeilBrown 53f5035339 Fix warning about unused variable.
Warning only appears with -O2, but is invalid.

Signed-off-by: NeilBrown <neilb@suse.de>
2010-03-03 10:29:24 +11:00
NeilBrown bde713f015 fix gcc warnings about strict-aliasing rules
Original-by: Luca Berra <bluca@comedia.it>
Signed-off-by: NeilBrown <neilb@suse.de>
2010-03-03 10:17:41 +11:00
NeilBrown 24af7a8744 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>
2010-02-24 12:17:17 +11:00
NeilBrown ad90adb689 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>
2010-02-24 12:03:27 +11:00
NeilBrown 097075b611 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>
2010-02-24 11:59:11 +11:00
NeilBrown 4c1c3ad8cf 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>
2010-02-24 11:43:59 +11:00
NeilBrown a31128d2de 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>
2010-02-24 11:31:48 +11:00
NeilBrown b179246f4f 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>
2010-02-24 11:16:56 +11:00
NeilBrown cd9a8b5cb4 mdmon: Document startup/shutdown requirements in man page.
Signed-off-by: NeilBrown <neilb@suse.de>
2010-02-08 17:26:18 +11:00
NeilBrown 319767b85c 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>
2010-02-08 17:26:18 +11:00
NeilBrown fa716c83c5 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>
2010-02-08 17:26:18 +11:00
NeilBrown 58a4ba2a6b 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>
2010-02-08 17:26:18 +11:00