Skip to contentSkip to conversation

mdadm incremental failed: md device busy

DISCUSSION Spelic 1 participant 2 messages Dec 15, 2010 MD RAID

lore
Share & tools
lore

Spelic

author
#0 lore raw

Hi there
this happened:

# cat /proc/mdstat
...other arrays not including sdb3...
md2 : active raid1 sda3[0]
      52428728 blocks super 1.2 [2/1] [U_]
      bitmap: 6/200 pages [24KB], 128KB chunk
...other arrays not including sdb3...

strangely sdb3 was not added to array at boot, I am still investigating that, but now see this:

# mdadm --incremental /dev/sdb3
mdadm: failed to open /dev/md2: Device or resource busy.

#strace mdadm --incremental /dev/sdb3
...lots of stuff, then...

open("/dev/md2", O_RDWR|O_EXCL)         = -1 EBUSY (Device or resource busy)
nanosleep({0, 200000000}, NULL)         = 0
open("/dev/md2", O_RDWR|O_EXCL)         = -1 EBUSY (Device or resource busy)
nanosleep({0, 200000000}, NULL)         = 0
open("/dev/md2", O_RDWR|O_EXCL)         = -1 EBUSY (Device or resource busy)
nanosleep({0, 200000000}, NULL)         = 0
open("/dev/md2", O_RDWR|O_EXCL)         = -1 EBUSY (Device or resource busy)
nanosleep({0, 200000000}, NULL)         = 0
open("/dev/md2", O_RDWR|O_EXCL)         = -1 EBUSY (Device or resource busy)
nanosleep({0, 200000000}, NULL)         = 0
open("/dev/md2", O_RDWR|O_EXCL)         = -1 EBUSY (Device or resource busy)
nanosleep({0, 200000000}, NULL)         = 0
open("/dev/md2", O_RDWR|O_EXCL)         = -1 EBUSY (Device or resource busy)
nanosleep({0, 200000000}, NULL)         = 0
open("/dev/md2", O_RDWR|O_EXCL)         = -1 EBUSY (Device or resource busy)
nanosleep({0, 200000000}, NULL)         = 0
open("/dev/md2", O_RDWR|O_EXCL)         = -1 EBUSY (Device or resource busy)
nanosleep({0, 200000000}, NULL)         = 0
open("/dev/md2", O_RDWR|O_EXCL)         = -1 EBUSY (Device or resource busy)
nanosleep({0, 200000000}, NULL)         = 0
open("/dev/md2", O_RDWR|O_EXCL)         = -1 EBUSY (Device or resource busy)
nanosleep({0, 200000000}, NULL)         = 0
open("/dev/md2", O_RDWR|O_EXCL)         = -1 EBUSY (Device or resource busy)

........
write(2, "mdadm: failed to open /dev/md2: "..., 57mdadm: failed to open /dev/md2: Device or resource busy. ) = 57

hmmm... strange thing, I just booted and md2 is not even mounted... but now see this:

# mdadm /dev/md2 --add /dev/sdb3
mdadm: re-added /dev/sdb3

worked perfectly!

So?
Bug?

Thank you

author
#1 lore raw
Quoted 52 lines · Spelic

Hi there
this happened:

# cat /proc/mdstat
...other arrays not including sdb3...
md2 : active raid1 sda3[0]
      52428728 blocks super 1.2 [2/1] [U_]
      bitmap: 6/200 pages [24KB], 128KB chunk
...other arrays not including sdb3...

strangely sdb3 was not added to array at boot, I am still investigating that, but now see this:

# mdadm --incremental /dev/sdb3
mdadm: failed to open /dev/md2: Device or resource busy.

#strace mdadm --incremental /dev/sdb3
...lots of stuff, then...

open("/dev/md2", O_RDWR|O_EXCL)         = -1 EBUSY (Device or resource busy)
nanosleep({0, 200000000}, NULL)         = 0
open("/dev/md2", O_RDWR|O_EXCL)         = -1 EBUSY (Device or resource busy)
nanosleep({0, 200000000}, NULL)         = 0
open("/dev/md2", O_RDWR|O_EXCL)         = -1 EBUSY (Device or resource busy)
nanosleep({0, 200000000}, NULL)         = 0
open("/dev/md2", O_RDWR|O_EXCL)         = -1 EBUSY (Device or resource busy)
nanosleep({0, 200000000}, NULL)         = 0
open("/dev/md2", O_RDWR|O_EXCL)         = -1 EBUSY (Device or resource busy)
nanosleep({0, 200000000}, NULL)         = 0
open("/dev/md2", O_RDWR|O_EXCL)         = -1 EBUSY (Device or resource busy)
nanosleep({0, 200000000}, NULL)         = 0
open("/dev/md2", O_RDWR|O_EXCL)         = -1 EBUSY (Device or resource busy)
nanosleep({0, 200000000}, NULL)         = 0
open("/dev/md2", O_RDWR|O_EXCL)         = -1 EBUSY (Device or resource busy)
nanosleep({0, 200000000}, NULL)         = 0
open("/dev/md2", O_RDWR|O_EXCL)         = -1 EBUSY (Device or resource busy)
nanosleep({0, 200000000}, NULL)         = 0
open("/dev/md2", O_RDWR|O_EXCL)         = -1 EBUSY (Device or resource busy)
nanosleep({0, 200000000}, NULL)         = 0
open("/dev/md2", O_RDWR|O_EXCL)         = -1 EBUSY (Device or resource busy)
nanosleep({0, 200000000}, NULL)         = 0
open("/dev/md2", O_RDWR|O_EXCL)         = -1 EBUSY (Device or resource busy)

........
write(2, "mdadm: failed to open /dev/md2: "..., 57mdadm: failed to open /dev/md2: Device or resource busy. ) = 57

hmmm... strange thing, I just booted and md2 is not even mounted... but now see this:

# mdadm /dev/md2 --add /dev/sdb3
mdadm: re-added /dev/sdb3
Quoted 6 lines

worked perfectly!

So?
Bug?

Thank you

I add one detail: the drive probably had been kicked at boot because it was non-fresh.