Note: This is a beta release of Red Hat Bugzilla 5.0. The data contained within is a snapshot of the live data so any changes you make will not be reflected in the production Bugzilla. Also email is disabled so feel free to test any aspect of the site that you want. File any problems you find or give feedback here.
Bug 593517 - mdadm -f / -r doesn't work on non-present devices.
Summary: mdadm -f / -r doesn't work on non-present devices.
Keywords:
Status: CLOSED NOTABUG
Alias: None
Product: Fedora
Classification: Fedora
Component: mdadm
Version: 12
Hardware: All
OS: Linux
low
medium
Target Milestone: ---
Assignee: Doug Ledford
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2010-05-19 03:01 UTC by Maciej Żenczykowski
Modified: 2010-07-06 19:01 UTC (History)
1 user (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2010-07-05 20:54:25 UTC


Attachments (Terms of Use)

Description Maciej Żenczykowski 2010-05-19 03:01:03 UTC
$ rpm -q --whatprovides `which mdadm`
mdadm-3.0.3-2.fc12.x86_64

If a raid drive (/dev/sdX) goes away (for example: because it was disconnected), then hotplug will remove the /dev/sdX{,y} entries.

At this point "mdadm -f /dev/mdZ /dev/sdXy" and "mdadm -r /dev/mdZ /dev/sdXy" will no longer work.

However:
  echo faulty > /sys/block/mdZ/md/dev-sdXy/state
  echo remove > /sys/block/mdZ/md/dev-sdXy/state
works just fine.

mdadm should probably be fixed...?

Comment 1 Piergiorgio Sartor 2010-07-05 09:15:27 UTC
Hi,

you should check the keyword "detached" for "-f" and "-r".

According to the man page, "mdadm -f/-r /dev/mdZ /dev/sdXy detached" should fail/remove devices not anymore present.

Hope this helps,

bye,

pg

Comment 2 Maciej Żenczykowski 2010-07-05 20:54:25 UTC
Unfortunately, I don't believe that this is quite enough.

The following is untested, but (and I believe this is actually the setup I had when I ran into this):

- the array in question contained a read-only file system, as such no writes where ever issued to it
- the device which failed was marked as 'write-mostly', so reads would never go to it, unless there were no non-write-mostly devices.

As such the kernel would never attempt to access the missing device (writes impossible because of read-only filesystem, reads directed to other devices because of write-mostly) and thus would never mark the device as faulty.

Hence the need to manually mark it as failed/faulty (and only then remove it).

Furthermore I'm not convinced even the keyword "detached" would help us since the open doesn't return ENXIO - it just fails (the /dev/sdXy node is totally absent from the /dev directory because of hotplug).


*HOWEVER* next time I run into this I'll try it and see if "-f detached" and "-r detached" or "-r failed" will work...

I'll mark the bug as closed, and reopen if when I once more run into this I fail with the above-mentioned method.

Comment 3 Doug Ledford 2010-07-06 18:39:04 UTC
The usage of mdadm -f detached or failed should work as it finds the devices which are part of the array and otherwise not operational and removes them.  However, in future mdadm versions, mdadm -If also works and is going to be added to mdadm udev rules to cause devices that are hot-unplugged to automatically be removed from the raid array just as the device nodes are removed from /dev.

Comment 4 Maciej Żenczykowski 2010-07-06 19:01:31 UTC
Awesome.


Note You need to log in before you can comment on or make changes to this bug.