]> git.karo-electronics.de Git - karo-tx-linux.git/commit
rbd: set removing flag while holding list lock
authorAlex Elder <elder@inktank.com>
Fri, 31 May 2013 20:17:01 +0000 (15:17 -0500)
committerSage Weil <sage@inktank.com>
Thu, 13 Jun 2013 15:46:25 +0000 (08:46 -0700)
commita029ecedd8778633a26845aac2807111bf2b4b4a
tree96ce2f25ba6b2d1e6256d98cd52fd76d8f5154d4
parent86412a8e91dc1652f854f987054b36437f1200da
rbd: set removing flag while holding list lock

When unmapping a device, its id is supplied, and that is used to
look up which rbd device should be unmapped.  Looking up the
device involves searching the rbd device list while holding
a spinlock that protects access to that list.

Currently all of this is done under protection of the control lock,
but that protection is going away soon.  To ensure the rbd_dev is
still valid (still on the list) while setting its REMOVING flag, do
so while still holding the list lock.  To do so, get rid of
__rbd_get_dev(), and open code what it did in the one place it
was used.

Signed-off-by: Alex Elder <elder@inktank.com>
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
drivers/block/rbd.c