All of lore.kernel.org
 help / color / mirror / Atom feed
* dmsetup remove gives EBUSY (even though it shouldn't be busy)
@ 2015-05-24 22:31 Johannes Bauer
  2015-05-25 12:38 ` Milan Broz
  0 siblings, 1 reply; 3+ messages in thread
From: Johannes Bauer @ 2015-05-24 22:31 UTC (permalink / raw)
  To: dm-devel

Hi list,

apologies if I'm at the wrong place, but I think this is dm related
(even though in practice the device I'm talking about is using the
dm-crypt target).

This is my problem: I have a open dm-crypt mapping (LUKS) on which I do
perform some block operations (copying). There are no mounted file
systems on the copied device handles at any time. Let's say my device is
called under /dev/mapper/foobar and I'm writing to that block device.

The file descriptor that points to the /dev/mapper/foobar is then closed
via close(2). Then I call sync(2).

Afterwards I fork/exec the command "dmsetup remove foobar". This yields:

device-mapper: remove ioctl on foobar failed: Device or resource busy
Command failed

And results in return code 1. I'm only getting this behavior with slow
disks (i.e. cannot reproduce with a loop device that points to /dev/shm
as underlying block device). And I'm guessing there's some
buffers/caches still in use (i.e. pending writes) which is why dmsetup
returns EBUSY. What I don't understand is why the sync(2) call does not
block until all pending writes have been flushed.

If I do insert sleep(10) before my "dmsetup remove" call, it works
smoothly -- but this is hardly a solution.

Do you have any pointers on why this happens and how I can cleanly solve
this?

Thank you very much,
Cheers,
Johannes

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2015-06-15 18:22 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-05-24 22:31 dmsetup remove gives EBUSY (even though it shouldn't be busy) Johannes Bauer
2015-05-25 12:38 ` Milan Broz
2015-06-15 18:22   ` Johannes Bauer

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.