thirdparty/mdadm.git
12 years agoFactor out test for subarray version string.
NeilBrown [Tue, 19 Aug 2008 07:55:15 +0000 (17:55 +1000)] 
Factor out test for subarray version string.

We are about to change the syntax of the version string
for 'subarray's.  So factor out the test into a single function.

Signed-off-by: NeilBrown <neilb@suse.de>
12 years agoimsm: allow container assembly in the presence of failed disks
Dan Williams [Tue, 19 Aug 2008 07:55:15 +0000 (17:55 +1000)] 
imsm: allow container assembly in the presence of failed disks

For example, this allows one to still say mdadm -A /dev/sd[b-e] even
though /dev/sde has replaced /dev/sdd.  Otherwise mdadm will say:

mdadm: superblock on /dev/sdd doesn't match others - assembly aborted

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
12 years agoFix bug with ddf if devices have different sizes.
NeilBrown [Tue, 19 Aug 2008 07:55:15 +0000 (17:55 +1000)] 
Fix bug with ddf if devices have different sizes.

We cannot use the header of the 'best' device to find the
sections on the other devices!!

Signed-off-by: NeilBrown <neilb@suse.de>
12 years agoProvide ddf support for adding a device to an active container.
NeilBrown [Tue, 19 Aug 2008 07:55:15 +0000 (17:55 +1000)] 
Provide ddf support for adding a device to an active container.

Signed-off-by: NeilBrown <neilb@suse.de>
12 years agomdadm: add device to a container
Dan Williams [Tue, 19 Aug 2008 07:19:51 +0000 (17:19 +1000)] 
mdadm: add device to a container

Adding a device updates the container and then mdmon takes action upon
noticing a change in devices.  This reuses the container version of
add_to_super to create a new record for the device.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: NeilBrown <neilb@suse.de>
12 years agomdmon: remove devices from container
Dan Williams [Tue, 19 Aug 2008 04:55:12 +0000 (14:55 +1000)] 
mdmon: remove devices from container

Once the monitor thread has kicked a drive from all managed arrays mdadm
-r is permitted.  We are guaranteed that the drive is marked failed at
this point, so allow the drive to be re-added as a spare.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
12 years agoimsm: delete kicked disks
Dan Williams [Tue, 19 Aug 2008 04:55:10 +0000 (14:55 +1000)] 
imsm: delete kicked disks

When we have determined that a disk is no longer of any value, remove
it from the data structure.   This is now safe because the manager
will back off while any metadata update is pending in the monitor.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: NeilBrown <neilb@suse.de>
12 years agoFix mdstat_wait_fd
NeilBrown [Tue, 19 Aug 2008 04:55:07 +0000 (14:55 +1000)] 
Fix mdstat_wait_fd

It didn't necessarily wait for the fd.

Signed-off-by: NeilBrown <neilb@suse.de>
12 years agoMake metadata updates from manage to monitor 'synchronous'
NeilBrown [Tue, 19 Aug 2008 04:55:03 +0000 (14:55 +1000)] 
Make metadata updates from manage to monitor 'synchronous'

A metadata update may modify the data structure of the metadata
including freeing things, so it is not safe of the manager to touch
the metadata while an update is pending in the monitor.
So When an update has been submitted, don't do anything else in the
manager until it is complete.

Signed-off-by: NeilBrown <neilb@suse.de>
12 years agoExtra option for set_array_state: you choose dirty or clean.
NeilBrown [Tue, 19 Aug 2008 04:54:55 +0000 (14:54 +1000)] 
Extra option for set_array_state: you choose dirty or clean.

When we first start an array, it might be good to start recovery
straight away.  That requires setting the array to 'dirty', but
only the metadata handler can know if that is required or not.
So have a third possible 'consistent' option to set_array_state.
Either 'no' or 'yes' or 'you choose'.

Return value indicates what was chosen.

'1' (no) should be chosen unless there is a good reason.

Signed-off-by: NeilBrown <neilb@suse.de>
12 years agomdmon: handle failures versus readauto arrays
Dan Williams [Wed, 30 Jul 2008 02:25:15 +0000 (19:25 -0700)] 
mdmon: handle failures versus readauto arrays

Transition readauto arrays to active before failing drives.

Hmm... why do we keep reblocking / renotifying in the readonly case?
Need to bottom out on this, but not right now.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
12 years agomdmon: allow degraded arrays to be monitored
Dan Williams [Fri, 15 Aug 2008 17:58:43 +0000 (10:58 -0700)] 
mdmon: allow degraded arrays to be monitored

manage_new is too strict in the face of failed devices.  Teach it to
monitor degraded arrays.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
12 years agoimsm: include not synced disks in imsm_count_failed
Dan Williams [Fri, 15 Aug 2008 17:58:42 +0000 (10:58 -0700)] 
imsm: include not synced disks in imsm_count_failed

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
12 years agoimsm: use disk_ord_tbl to identify rebuilding disks
Dan Williams [Fri, 15 Aug 2008 17:57:19 +0000 (10:57 -0700)] 
imsm: use disk_ord_tbl to identify rebuilding disks

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
12 years agoimsm: fix up assembly of disks that are not in-sync
Dan Williams [Tue, 12 Aug 2008 09:25:49 +0000 (02:25 -0700)] 
imsm: fix up assembly of disks that are not in-sync

1/ Do not assemble !in_sync or failed devices in container_content.
2/ Prevent activation of failed or configured devices in activate_spare.
3/ Be sure to avoid dirty degraded if the array was shutdown cleanly.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
12 years agoimsm: fix create by mdmon-update
Dan Williams [Tue, 12 Aug 2008 09:25:49 +0000 (02:25 -0700)] 
imsm: fix create by mdmon-update

imsm_dev dynamically grows, so dev_idx needs to be moved up in the
definition to avoid getting clobbered.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
12 years agoimsm: write_super return 0 on success
Dan Williams [Tue, 12 Aug 2008 09:25:49 +0000 (02:25 -0700)] 
imsm: write_super return 0 on success

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
12 years agoimsm: update mpb_size in write_super_imsm
Dan Williams [Sun, 10 Aug 2008 03:28:24 +0000 (20:28 -0700)] 
imsm: update mpb_size in write_super_imsm

With dev->vol.map and mpb->disk entries entering and leaving the parameter
block write_super_imsm needs to update the size before writeback.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
12 years agomdmon: use activate spare for re-add
Dan Williams [Tue, 12 Aug 2008 09:25:46 +0000 (02:25 -0700)] 
mdmon: use activate spare for re-add

Disks that are not in-sync or failed are not assembled into member
arrays by mdadm.  Teach mdmon to resolve this situation by checking for
spares at start.  imsm_activate_spare() is updated to prefer devices
that can be re-added versus new spares.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
12 years agoimsm: fix handling of the 'migr_state' and 'migr_type' bits
Dan Williams [Sun, 10 Aug 2008 03:28:24 +0000 (20:28 -0700)] 
imsm: fix handling of the 'migr_state' and 'migr_type' bits

The option-rom and the Matrix driver mark resyncs/rebuilds with the
migrate state bits.  Update sizeof_imsm_dev to allow allocation of
imsm_dev entries large enough to grow if migr_state is later set.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
12 years agoimsm: add get_imsm_map and sizeof_imsm_map
Dan Williams [Sun, 10 Aug 2008 03:28:24 +0000 (20:28 -0700)] 
imsm: add get_imsm_map and sizeof_imsm_map

retrieve map entries from a imsm_dev, and cleanup imsm_copy_dev

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
12 years agoimsm: drop 'external' from imsm_examine_brief
Dan Williams [Sun, 10 Aug 2008 03:28:24 +0000 (20:28 -0700)] 
imsm: drop 'external' from imsm_examine_brief

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
12 years agoimsm: ensure 'usable' remains clear until the disk is in_sync
Dan Williams [Sun, 10 Aug 2008 03:28:24 +0000 (20:28 -0700)] 
imsm: ensure 'usable' remains clear until the disk is in_sync

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
12 years agoimsm: spare devices are represented as single disk containers
Dan Williams [Wed, 6 Aug 2008 16:09:25 +0000 (09:09 -0700)] 
imsm: spare devices are represented as single disk containers

This poses a small problem for the case of handling multiple raid1 arrays
across separate disk pairs i.e. 2 mirrors on 4 disks.  The option-ROM will
configure this as two containers.  We may need the capability for one
container to ask for an unused spare in another container.  For now spares
will just maintain the affinity established at assemble time.

To support this configuration spare devices must be allowed to be assembled
into the container even though the metadata indicates the disk belongs to a
different family.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
12 years agoimsm: store imsm_disk entries in the super->disks list
Dan Williams [Fri, 8 Aug 2008 06:57:50 +0000 (23:57 -0700)] 
imsm: store imsm_disk entries in the super->disks list

removes the need to lookup the disk by index in a few cases and is a
preparation step for tracking spares outside the current anchor.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
12 years agomdmon: use 'recover' instead of 'repair' when activating a spare
Dan Williams [Thu, 7 Aug 2008 18:54:09 +0000 (11:54 -0700)] 
mdmon: use 'recover' instead of 'repair' when activating a spare

Repair sets MD_RECOVERY_REQUESTED in md which may not result in the
spare device being recovered.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
12 years agoMerge branch 'devel' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/mdadm...
NeilBrown [Thu, 7 Aug 2008 07:46:44 +0000 (17:46 +1000)] 
Merge branch 'devel' of git://git./linux/kernel/git/djbw/mdadm into dan

12 years agoimsm: bad block management (phase1)
Jacek Danecki [Thu, 7 Aug 2008 06:55:53 +0000 (23:55 -0700)] 
imsm: bad block management (phase1)

This is the initial defensive implementation of bad block management
support.  It simply precludes assembly if there are entries in the bad
block logs.  This is sufficient for now as the conditions that lead to
an entry in the bad block log would cause the array to be failed by MD
(as of 2.6.27).

[dan.j.williams@intel.com: general cleanups]
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
12 years agoimsm: do not mark arrays 'clean' if resync still in progress
Dan Williams [Thu, 7 Aug 2008 06:53:44 +0000 (23:53 -0700)] 
imsm: do not mark arrays 'clean' if resync still in progress

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
12 years agoimsm: raid5 layout is left-asymmetric
Dan Williams [Thu, 7 Aug 2008 06:53:44 +0000 (23:53 -0700)] 
imsm: raid5 layout is left-asymmetric

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
12 years agoMerge branch 'master' into from-stable
NeilBrown [Thu, 7 Aug 2008 04:12:25 +0000 (14:12 +1000)] 
Merge branch 'master' into from-stable

Conflicts:

Create.c
Manage.c

12 years agomdmon: ignore inactive arrays and other manage_new() cleanups
Dan Williams [Wed, 30 Jul 2008 02:01:06 +0000 (19:01 -0700)] 
mdmon: ignore inactive arrays and other manage_new() cleanups

While mdadm is constructing an array mdmon may see an intermediate state
(some disks not yet added / redundancy attributes like sync_action not
available).  Waiting for mdstat->active == true ensures that the array
is ready to be handled.  This fixes a bug in create array via mdmon
update whereby failures are not detected in the new array.

Introduce aa_ready() to catch cases where the active_array is not
correctly initialized.  Barring a kernel bug this should never trigger,
nonetheless it precludes a class of bugs like the one mentioned above
from triggering.

Cleanup the exit paths and only call replace_array when the new array is
ready to be inserted into container->arrays.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
12 years agoCosmetic cleanup of some messages.
NeilBrown [Fri, 1 Aug 2008 06:48:08 +0000 (16:48 +1000)] 
Cosmetic cleanup of some messages.

e.g. --raid-disks is preferred over --raid-devices.

 Thanks to "Jon Nelson" <jnelson-linux-raid@jamponi.net>

Signed-off-by: NeilBrown <neilb@suse.de>
12 years agoimsm: trim some memory wastage
Dan Williams [Sat, 26 Jul 2008 00:45:13 +0000 (17:45 -0700)] 
imsm: trim some memory wastage

drop the previously loaded data as load_imsm_super_all loops through the
disks.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
12 years agoimsm: refactor mpb handling into parse and coalesce
Dan Williams [Fri, 25 Jul 2008 23:59:47 +0000 (16:59 -0700)] 
imsm: refactor mpb handling into parse and coalesce

Maintaining a single global buffer is unwieldly when extending/rewriting
sections of the metadata.  Parse the metadata into component data
structures upon reading and coalesce to a coherent buffer before
writing.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
12 years agomdmon: don't fork if DEBUG
Dan Williams [Fri, 25 Jul 2008 00:26:24 +0000 (17:26 -0700)] 
mdmon: don't fork if DEBUG

12 years agoimsm: use component_size not total array size in container_content_imsm
Dan Williams [Fri, 25 Jul 2008 00:26:24 +0000 (17:26 -0700)] 
imsm: use component_size not total array size in container_content_imsm

Also kill setting ->array.size as nothing appears to be using it.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
12 years agoimsm: take chunksize into account when calculating blocks_per_member
Dan Williams [Fri, 25 Jul 2008 00:26:24 +0000 (17:26 -0700)] 
imsm: take chunksize into account when calculating blocks_per_member

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
12 years agosysfs: deprecate sysfs_disk_to_sg
Dan Williams [Fri, 25 Jul 2008 00:26:24 +0000 (17:26 -0700)] 
sysfs: deprecate sysfs_disk_to_sg

The cmd_filter patch merged for 2.6.27 broke retrieving the serial
number via an ioctl to /dev/sgN.  In debugging this I found that other
utilities like sdparm simply run the ioctl on /dev/sdX.  So just convert
to that for protection in numbers, but scream on the mailing list for
the inconvenience grr...

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
12 years agoimsm: fix store_zero_imsm breakage from posix_memalign conversion
Dan Williams [Fri, 25 Jul 2008 00:26:23 +0000 (17:26 -0700)] 
imsm: fix store_zero_imsm breakage from posix_memalign conversion

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
12 years agoimsm: debug environment variable to use 'device name' as 'serial number'
Dan Williams [Fri, 25 Jul 2008 00:26:23 +0000 (17:26 -0700)] 
imsm: debug environment variable to use 'device name' as 'serial number'

Facilitate using loopback devices for the imsm regression suite

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
12 years agoimsm: allow --examine to succeed with damaged metadata
Dan Williams [Fri, 25 Jul 2008 00:26:23 +0000 (17:26 -0700)] 
imsm: allow --examine to succeed with damaged metadata

limp along after seeing mismatched serial numbers

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
12 years agoimsm: handle degraded->normal transitions in set_disk
Dan Williams [Fri, 25 Jul 2008 00:26:23 +0000 (17:26 -0700)] 
imsm: handle degraded->normal transitions in set_disk

Removes the need for the call to ->set_array_state when sync_action
transitions from 'recover' to 'idle'.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
12 years agoimsm: create array via update to mdmon
Dan Williams [Fri, 25 Jul 2008 00:26:19 +0000 (17:26 -0700)] 
imsm: create array via update to mdmon

12 years agoClean up usage of open()
Doug Ledford [Thu, 24 Jul 2008 22:35:11 +0000 (18:35 -0400)] 
Clean up usage of open()
Fix on call that passed an invalid mode to open
Don't pass a third arg unless we also pass O_CREAT
Use symbolic args for 2nd and 3rd args

Signed-off-by: Doug Ledford <dledford@redhat.com>
12 years agoAdd support for distribution specific build extensions
Doug Ledford [Thu, 24 Jul 2008 16:34:34 +0000 (12:34 -0400)] 
Add support for distribution specific build extensions

Signed-off-by: Doug Ledford <dledford@redhat.com>
12 years agoinstall mdmon to the same location as mdadm
Jacek Danecki [Tue, 22 Jul 2008 00:42:12 +0000 (17:42 -0700)] 
install mdmon to the same location as mdadm

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
12 years agoimsm: remove some casts
Dan Williams [Tue, 22 Jul 2008 00:42:10 +0000 (17:42 -0700)] 
imsm: remove some casts

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
12 years agoimsm: activate_spare: fix handling of data_offset
Dan Williams [Mon, 21 Jul 2008 18:08:20 +0000 (11:08 -0700)] 
imsm: activate_spare: fix handling of data_offset

Neil rightly points out that imsm_activate_spare may skip valid free space
on a spare, fix this up.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
12 years agoDocument MDADM_NO_MDMON
Dan Williams [Sat, 19 Jul 2008 00:47:34 +0000 (17:47 -0700)] 
Document MDADM_NO_MDMON

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
12 years agoDocumentation fixup for stripe_cache_size
Dan Williams [Sat, 19 Jul 2008 00:47:13 +0000 (17:47 -0700)] 
Documentation fixup for stripe_cache_size

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
12 years agoDocument preread_bypass_threshold
Dan Williams [Sat, 19 Jul 2008 00:14:44 +0000 (17:14 -0700)] 
Document preread_bypass_threshold

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
12 years agomsg: add a timeout to ping_monitor
NeilBrown [Fri, 18 Jul 2008 06:37:28 +0000 (16:37 +1000)] 
msg: add a timeout to ping_monitor

Though it should never bee needed, having a timeout in ping_monitor is
a sensible safeguard.

Signed-off-by: Neil Brown <neilb@suse.de>
12 years agomonitor: call get_resync_start on array shutdown.
NeilBrown [Fri, 18 Jul 2008 06:37:26 +0000 (16:37 +1000)] 
monitor: call get_resync_start on array shutdown.

If the array is shutdown as soon as resync finishes, we might not
notice the resync finish.  So on array shutdown, check for current
resync pos.

Signed-off-by: Neil Brown <neilb@suse.de>
12 years agoManage: sync with mdmon before stopping containers.
NeilBrown [Fri, 18 Jul 2008 06:37:25 +0000 (16:37 +1000)] 
Manage: sync with mdmon before stopping containers.

mdmon sometimes opens the container.  That will prevent 'stop'
from working.  So sync with mdmon first.

Signed-off-by: Neil Brown <neilb@suse.de>
12 years agoManage: fixed some error message in --stop
NeilBrown [Fri, 18 Jul 2008 06:37:24 +0000 (16:37 +1000)] 
Manage: fixed some error message in --stop

Explain the meaning of 'quiet' explicitly, and fix some grammar
and formatting.

Signed-off-by: Neil Brown <neilb@suse.de>
12 years agomdmon: fork and run as a daemon.
NeilBrown [Fri, 18 Jul 2008 06:37:20 +0000 (16:37 +1000)] 
mdmon: fork and run as a daemon.

start_mdmon now waits for mdmon to complete initialisation and,
importantly, listen on the socket, before continuing.

Signed-off-by: Neil Brown <neilb@suse.de>
12 years agosysfs: avoid possible data corruption in sys_load.
NeilBrown [Fri, 18 Jul 2008 06:37:18 +0000 (16:37 +1000)] 
sysfs: avoid possible data corruption in sys_load.

Don't retry to remove a newline from the end of an empty string.

Signed-off-by: Neil Brown <neilb@suse.de>
12 years agoCorrect readlink usage in sysfs.c
NeilBrown [Fri, 18 Jul 2008 06:37:16 +0000 (16:37 +1000)] 
Correct readlink usage in sysfs.c

readlink doesn't nul-terminate the returned string, so we must
be sure to do that.

Signed-off-by: Neil Brown <neilb@suse.de>
12 years agoDon't assume that mdmon is in the current directory.
NeilBrown [Fri, 18 Jul 2008 06:37:13 +0000 (16:37 +1000)] 
Don't assume that mdmon is in the current directory.

Rather, assume that it is in the same directory from which
mdadm was run.  If not, then maybe /sbin or current directory.

Signed-off-by: Neil Brown <neilb@suse.de>
12 years agoFactor common code into new "start_mdmon".
NeilBrown [Fri, 18 Jul 2008 06:37:11 +0000 (16:37 +1000)] 
Factor common code into new "start_mdmon".

Signed-off-by: Neil Brown <neilb@suse.de>
12 years agoStop managed arrays more carefully.
Neil Brown [Fri, 18 Jul 2008 06:37:09 +0000 (16:37 +1000)] 
Stop managed arrays more carefully.

If an array is being managed by mdmon, then just
write "inactive" to stop it, and let mdmon do the
final "clear".  This makes sure mdmon has a chance
to read the final state and update the metadata properly.

After writing "inactive" with use "ping_monitor" to synchronise
with mdadm, then STOP the array just in case it is still running,
else we will get into an infinite loop in "mdadm -Ss".

Signed-off-by: Neil Brown <neilb@suse.de>
12 years agomdmon: ping will wait for manage_mon to catch up.
NeilBrown [Fri, 18 Jul 2008 06:37:06 +0000 (16:37 +1000)] 
mdmon: ping will wait for manage_mon to catch up.

When a 'ping' (empty message) is sent to mdmon, we wait for
'monitor' to do a full loop to make sure it has caught up
with anything that needs doing.
This allows synchronisation between mdadm and mdmon.

Maybe monitor should signal managemon rather than managemon polling...

Signed-off-by: Neil Brown <neilb@suse.de>
12 years agoMake sure resync_start is initialised properly and maintained properly
Neil Brown [Fri, 18 Jul 2008 06:37:04 +0000 (16:37 +1000)] 
Make sure resync_start is initialised properly and maintained properly

Signed-off-by: Neil Brown <neilb@suse.de>
12 years agoddf: endian fixes.
Neil Brown [Fri, 18 Jul 2008 06:37:03 +0000 (16:37 +1000)] 
ddf: endian fixes.

We forgot to convert endian for lba_offset at one point,
and use le32 instead of be32 right nearby!!

Signed-off-by: Neil Brown <neilb@suse.de>
12 years agomdmon: close possibility of re-marking the metadata dirty on shutdown
Dan Williams [Mon, 14 Jul 2008 21:59:39 +0000 (14:59 -0700)] 
mdmon: close possibility of re-marking the metadata dirty on shutdown

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
12 years agomdmon: notify metadata of recovery completion
Dan Williams [Mon, 14 Jul 2008 21:59:39 +0000 (14:59 -0700)] 
mdmon: notify metadata of recovery completion

Array may no longer be degraded.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
12 years agomdmon: initialize component_size in manage_new
Dan Williams [Mon, 14 Jul 2008 21:59:39 +0000 (14:59 -0700)] 
mdmon: initialize component_size in manage_new

When we go to activate a spare for an array we expect ->info.component_size
is valid.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
12 years agomdmon: close small window of invalid mon_tid
Dan Williams [Mon, 14 Jul 2008 21:59:39 +0000 (14:59 -0700)] 
mdmon: close small window of invalid mon_tid

There is a small chance that the manager tries to wake the monitor before
mon_tid is set.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
12 years agomdadm: add an environment variable to prevent auto-launching mdmon
Dan Williams [Mon, 14 Jul 2008 21:59:32 +0000 (14:59 -0700)] 
mdadm: add an environment variable to prevent auto-launching mdmon

Useful for attaching gdb to mdmon before any action is taken on the array.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
12 years agomanagemon: don't treat sysfs_add_disk as boolean function
Dan Williams [Mon, 14 Jul 2008 21:10:02 +0000 (14:10 -0700)] 
managemon: don't treat sysfs_add_disk as boolean function

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
12 years agoimsm: process update
Dan Williams [Mon, 14 Jul 2008 21:10:02 +0000 (14:10 -0700)] 
imsm: process update

Handle 'activate_spare' events

12 years agoimsm: activate_spare
Dan Williams [Wed, 25 Jun 2008 05:21:21 +0000 (22:21 -0700)] 
imsm: activate_spare

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
12 years agoimsm: metadata only supports a global 'data_offset'
Dan Williams [Mon, 14 Jul 2008 20:59:56 +0000 (13:59 -0700)] 
imsm: metadata only supports a global 'data_offset'

When creating a volume a drive must have free space starting at the same
location as all the other drives in the array.

12 years agoimsm: fix raid1 creation
Dan Williams [Wed, 25 Jun 2008 04:56:19 +0000 (21:56 -0700)] 
imsm: fix raid1 creation

Need to supply dummy values for the chunk size and number of data stripes

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
12 years agoimsm: fail ->open_new if container_member is out of range
Dan Williams [Mon, 14 Jul 2008 20:57:33 +0000 (13:57 -0700)] 
imsm: fail ->open_new if container_member is out of range

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
12 years agoimsm: kill obsolete call to fsync() in store_imsm_mpb
Dan Williams [Mon, 14 Jul 2008 20:56:42 +0000 (13:56 -0700)] 
imsm: kill obsolete call to fsync() in store_imsm_mpb

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
12 years agoimsm: fix insufficient mpb buffer allocation
Dan Williams [Sat, 21 Jun 2008 07:19:53 +0000 (00:19 -0700)] 
imsm: fix insufficient mpb buffer allocation

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
12 years agoimsm: catch posix_memalign allocation failures
Dan Williams [Mon, 14 Jul 2008 20:55:12 +0000 (13:55 -0700)] 
imsm: catch posix_memalign allocation failures

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
12 years agoimsm: remove extra superswitches
Dan Williams [Tue, 24 Jun 2008 13:16:44 +0000 (06:16 -0700)] 
imsm: remove extra superswitches

Following the lead of 75ede16d.  This incidentally fixes creation of a second
array by gating call to getinfo_super_imsm_volume with a valid ->current_vol.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
12 years agoimsm: fix store_imsm_mpb() alignment for O_DIRECT
Dan Williams [Mon, 14 Jul 2008 20:55:02 +0000 (13:55 -0700)] 
imsm: fix store_imsm_mpb() alignment for O_DIRECT

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
12 years agoPrint used message in place of "default metadata" message.
Neil Brown [Sat, 12 Jul 2008 10:28:38 +0000 (20:28 +1000)] 
Print used message in place of "default metadata" message.

When creating an array in a container, print e.g.
   Creating array inside ddf container /dev/whatever
rather than
   Defaulting to version /md127/1 metadata

12 years agoIntroduce devname2devnum
Neil Brown [Sat, 12 Jul 2008 10:28:38 +0000 (20:28 +1000)] 
Introduce devname2devnum

and use it instead of opencoding.

12 years agoFix fd comparison in Incremental
Neil Brown [Sat, 12 Jul 2008 10:28:38 +0000 (20:28 +1000)] 
Fix fd comparison in Incremental

fd==0 is theoretically possible...

12 years agoPass 'verbose' flag to validate_geometry
Neil Brown [Sat, 12 Jul 2008 10:28:38 +0000 (20:28 +1000)] 
Pass 'verbose' flag to validate_geometry

That way it can be silent when we are just trying to figure out
which metadata to use, and noisy when detecting a real problem.

12 years agoCorrect unit conversion for component_size and dev/size in sysfs.
Neil Brown [Sat, 12 Jul 2008 10:28:38 +0000 (20:28 +1000)] 
Correct unit conversion for component_size and dev/size in sysfs.

These are both Kilobytes, so do the conversion to sectors properly.

12 years agoUse O_DIRECT for all IO to devices.
Neil Brown [Sat, 12 Jul 2008 10:28:33 +0000 (20:28 +1000)] 
Use O_DIRECT for all IO to devices.

Using buffered IO risks non-atomic updates to parts of the
device that we don't actually want to write to.  This isn't in
general safe.
So switch to O_DIRECT for all that IO and make sure we have
properly aligned buffers.

12 years agoStop all arrays before running each test in regression test driver.
Neil Brown [Sat, 12 Jul 2008 10:27:42 +0000 (20:27 +1000)] 
Stop all arrays before running each test in regression test driver.

Sometimes I forget to stop arrays at the end of scripts, and
that shows errors in the next script, which is confusing.

12 years agoddf: Set container_member from subarray in getinfo_super.
Neil Brown [Sat, 12 Jul 2008 10:27:42 +0000 (20:27 +1000)] 
ddf: Set container_member from subarray in getinfo_super.

Also go direct from subarray to text_version.

12 years agoReduce the number of metadata updates done by ddf.
Neil Brown [Sat, 12 Jul 2008 10:27:42 +0000 (20:27 +1000)] 
Reduce the number of metadata updates done by ddf.

1/ track if there are any actual updates pending, and only
   write metadata when we have changed something.

2/ when writing null virtual-configs, write full blocks,
   not just the first 4 bytes.  This will allow O_DIRECT
   writes in a subsequent patch.

12 years agoImprove shutdown for container-based arrays.
Neil Brown [Sat, 12 Jul 2008 10:27:42 +0000 (20:27 +1000)] 
Improve shutdown for container-based arrays.

1/ close a race where multiple arrays disappear at once
   and monitor isn't woken up to find out that the last one
   has gone.
2/ "mdadm -Ss" needs to pause briefly for mdmon to exit.

12 years agoKeep container device open in monitor
Neil Brown [Sat, 12 Jul 2008 10:27:42 +0000 (20:27 +1000)] 
Keep container device open in monitor

... so that it cannot be stopped while there are active arrays.
I don't know where that second 'close' came from ....

12 years agoMake sure we remove pid file in monitor before manager exits.
Neil Brown [Sat, 12 Jul 2008 10:27:42 +0000 (20:27 +1000)] 
Make sure we remove pid file in monitor before manager exits.

12 years agoRemove some noisy printfs.
Neil Brown [Sat, 12 Jul 2008 10:27:41 +0000 (20:27 +1000)] 
Remove some noisy printfs.

12 years agoCreate arrays via metadata-update
Neil Brown [Sat, 12 Jul 2008 10:27:40 +0000 (20:27 +1000)] 
Create arrays via metadata-update

Support creating arrays inside an active ddf container by
sending a metadata update over a pipe to mdmon.

12 years agoRevise message passing code.
Neil Brown [Sat, 12 Jul 2008 10:27:40 +0000 (20:27 +1000)] 
Revise message passing code.

More here

12 years agoRemove mgr_pipe for communicating from manage to monitor.
Neil Brown [Sat, 12 Jul 2008 10:27:40 +0000 (20:27 +1000)] 
Remove mgr_pipe for communicating from manage to monitor.

Data is being passed in shared memory, so the pipe is only being
use as a wakeup.  This can more easily be done with a thread-signal.

12 years agoRemove mon_pipe for communicating from monitor to manager
Neil Brown [Sat, 12 Jul 2008 10:27:40 +0000 (20:27 +1000)] 
Remove mon_pipe for communicating from monitor to manager

The returned value was never used, and we don't really want
this return path anyway as writing to a pipe could conceivably
block, and the monitor must not block.

12 years agoHandle device removal from container
Neil Brown [Sat, 12 Jul 2008 10:27:40 +0000 (20:27 +1000)] 
Handle device removal from container

This really should be done in mdadm, not mdmon.
We ensure the device won't be suddenly commited as a hot-spare
using O_EXCL, then check the 'holders' sysfs directory
to make sure it is only in use once.

12 years agoFix kernel patch
Neil Brown [Sat, 12 Jul 2008 10:27:39 +0000 (20:27 +1000)] 
Fix kernel patch