]> git.baikalelectronics.ru Git - kernel.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>
Wed, 3 Jul 2013 22:32:41 +0000 (15:32 -0700)
commita065ce55b9b57983c8cc562538e65fb023005b81
tree8d4761447d8b8c2e8da9b7d6dd83e9bb8a63bc6e
parent326dc9e082d212ff2c57cca2ddc2ce7eb51f59a6
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