dm bio prison: add dm_cell_promote_or_release()
authorJoe Thornber <ejt@redhat.com>
Fri, 15 May 2015 14:23:35 +0000 (15:23 +0100)
committerMike Snitzer <snitzer@redhat.com>
Fri, 29 May 2015 18:19:06 +0000 (14:19 -0400)
commit3cdf93f9d85979b22b6abfd4ab19350860e4dfac
tree4e77c76a3def3bb6aac401047ee7e8566642026a
parent451b9e0071b2833744db7f518115bc085bc7b23c
dm bio prison: add dm_cell_promote_or_release()

Rather than always releasing the prisoners in a cell, the client may
want to promote one of them to be the new holder.  There is a race here
though between releasing an empty cell, and other threads adding new
inmates.  So this function makes the decision with its lock held.

This function can have two outcomes:
i)  An inmate is promoted to be the holder of the cell (return value of 0).
ii) The cell has no inmate for promotion and is released (return value of 1).

Signed-off-by: Joe Thornber <ejt@redhat.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
drivers/md/dm-bio-prison.c
drivers/md/dm-bio-prison.h