rbd: do not allow remove of mounted-on image
authorAlex Elder <elder@inktank.com>
Fri, 16 Nov 2012 15:29:16 +0000 (09:29 -0600)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 17 Jan 2013 16:46:49 +0000 (08:46 -0800)
commitf14e81d15cd37d89b880226f2ad3b234e8e629c7
treec0bfc5a3871f58d501034691debdfe3e1e1217bb
parenta35420155f46065b5fded0a7478fff003be4e872
rbd: do not allow remove of mounted-on image

(cherry picked from commit 42382b709bd1d143b9f0fa93e0a3a1f2f4210707)

There is no check in rbd_remove() to see if anybody holds open the
image being removed.  That's not cool.

Add a simple open count that goes up and down with opens and closes
(releases) of the device, and don't allow an rbd image to be removed
if the count is non-zero.

Protect the updates of the open count value with ctl_mutex to ensure
the underlying rbd device doesn't get removed while concurrently
being opened.

Signed-off-by: Alex Elder <elder@inktank.com>
Reviewed-by: Sage Weil <sage@inktank.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/block/rbd.c