From: Sage Weil Date: Tue, 19 Feb 2013 04:36:56 +0000 (-0800) Subject: rbd: udevadm settle before unmap X-Git-Tag: v0.58~33 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=8ca2274cc09c6a9925cbe86ccaf68db7898956e8;p=ceph.git rbd: udevadm settle before unmap udev runs blkid on device close, and other such nonsense that can make unmap fail with EBUSY. Settle before we unmap to avoid this if possible. See #4183. Closes: #4186 Signed-off-by: Sage Weil Reviewed-by: Alex Elder --- diff --git a/src/rbd.cc b/src/rbd.cc index d4b2d8b91187..02a793bf64ba 100644 --- a/src/rbd.cc +++ b/src/rbd.cc @@ -1664,6 +1664,18 @@ static int do_kernel_rm(const char *dev) if (r < 0) return r; + // let udevadm do its job *before* we try to unmap + if (udevadm_settle) { + r = system("/sbin/udevadm settle"); + if (r) { + if (r < 0) + cerr << "rbd: error executing udevadm as shell command!" << std::endl; + else + cerr << "rbd: '/sbin/udevadm settle' failed! (" << r << ")" <