diff options
-rw-r--r-- | drivers/block/xen-blkback/blkback.c | 13 | ||||
-rw-r--r-- | drivers/block/xen-blkback/common.h | 7 |
2 files changed, 7 insertions, 13 deletions
diff --git a/drivers/block/xen-blkback/blkback.c b/drivers/block/xen-blkback/blkback.c index 9eae7b243f68..fd1e19f1a49f 100644 --- a/drivers/block/xen-blkback/blkback.c +++ b/drivers/block/xen-blkback/blkback.c | |||
@@ -255,8 +255,7 @@ static int add_persistent_gnt(struct xen_blkif_ring *ring, | |||
255 | } | 255 | } |
256 | } | 256 | } |
257 | 257 | ||
258 | bitmap_zero(persistent_gnt->flags, PERSISTENT_GNT_FLAGS_SIZE); | 258 | persistent_gnt->active = true; |
259 | set_bit(PERSISTENT_GNT_ACTIVE, persistent_gnt->flags); | ||
260 | /* Add new node and rebalance tree. */ | 259 | /* Add new node and rebalance tree. */ |
261 | rb_link_node(&(persistent_gnt->node), parent, new); | 260 | rb_link_node(&(persistent_gnt->node), parent, new); |
262 | rb_insert_color(&(persistent_gnt->node), &ring->persistent_gnts); | 261 | rb_insert_color(&(persistent_gnt->node), &ring->persistent_gnts); |
@@ -280,11 +279,11 @@ static struct persistent_gnt *get_persistent_gnt(struct xen_blkif_ring *ring, | |||
280 | else if (gref > data->gnt) | 279 | else if (gref > data->gnt) |
281 | node = node->rb_right; | 280 | node = node->rb_right; |
282 | else { | 281 | else { |
283 | if(test_bit(PERSISTENT_GNT_ACTIVE, data->flags)) { | 282 | if (data->active) { |
284 | pr_alert_ratelimited("requesting a grant already in use\n"); | 283 | pr_alert_ratelimited("requesting a grant already in use\n"); |
285 | return NULL; | 284 | return NULL; |
286 | } | 285 | } |
287 | set_bit(PERSISTENT_GNT_ACTIVE, data->flags); | 286 | data->active = true; |
288 | atomic_inc(&ring->persistent_gnt_in_use); | 287 | atomic_inc(&ring->persistent_gnt_in_use); |
289 | return data; | 288 | return data; |
290 | } | 289 | } |
@@ -295,10 +294,10 @@ static struct persistent_gnt *get_persistent_gnt(struct xen_blkif_ring *ring, | |||
295 | static void put_persistent_gnt(struct xen_blkif_ring *ring, | 294 | static void put_persistent_gnt(struct xen_blkif_ring *ring, |
296 | struct persistent_gnt *persistent_gnt) | 295 | struct persistent_gnt *persistent_gnt) |
297 | { | 296 | { |
298 | if(!test_bit(PERSISTENT_GNT_ACTIVE, persistent_gnt->flags)) | 297 | if (!persistent_gnt->active) |
299 | pr_alert_ratelimited("freeing a grant already unused\n"); | 298 | pr_alert_ratelimited("freeing a grant already unused\n"); |
300 | persistent_gnt->last_used = jiffies; | 299 | persistent_gnt->last_used = jiffies; |
301 | clear_bit(PERSISTENT_GNT_ACTIVE, persistent_gnt->flags); | 300 | persistent_gnt->active = false; |
302 | atomic_dec(&ring->persistent_gnt_in_use); | 301 | atomic_dec(&ring->persistent_gnt_in_use); |
303 | } | 302 | } |
304 | 303 | ||
@@ -429,7 +428,7 @@ purge_list: | |||
429 | BUG_ON(persistent_gnt->handle == | 428 | BUG_ON(persistent_gnt->handle == |
430 | BLKBACK_INVALID_HANDLE); | 429 | BLKBACK_INVALID_HANDLE); |
431 | 430 | ||
432 | if (test_bit(PERSISTENT_GNT_ACTIVE, persistent_gnt->flags)) | 431 | if (persistent_gnt->active) |
433 | continue; | 432 | continue; |
434 | if (!scan_used && !persistent_gnt_timeout(persistent_gnt)) | 433 | if (!scan_used && !persistent_gnt_timeout(persistent_gnt)) |
435 | continue; | 434 | continue; |
diff --git a/drivers/block/xen-blkback/common.h b/drivers/block/xen-blkback/common.h index 7bff72db3b7e..2339b8d39c5e 100644 --- a/drivers/block/xen-blkback/common.h +++ b/drivers/block/xen-blkback/common.h | |||
@@ -233,11 +233,6 @@ struct xen_vbd { | |||
233 | 233 | ||
234 | struct backend_info; | 234 | struct backend_info; |
235 | 235 | ||
236 | /* Number of available flags */ | ||
237 | #define PERSISTENT_GNT_FLAGS_SIZE 1 | ||
238 | /* This persistent grant is currently in use */ | ||
239 | #define PERSISTENT_GNT_ACTIVE 0 | ||
240 | |||
241 | /* Number of requests that we can fit in a ring */ | 236 | /* Number of requests that we can fit in a ring */ |
242 | #define XEN_BLKIF_REQS_PER_PAGE 32 | 237 | #define XEN_BLKIF_REQS_PER_PAGE 32 |
243 | 238 | ||
@@ -246,7 +241,7 @@ struct persistent_gnt { | |||
246 | grant_ref_t gnt; | 241 | grant_ref_t gnt; |
247 | grant_handle_t handle; | 242 | grant_handle_t handle; |
248 | unsigned long last_used; | 243 | unsigned long last_used; |
249 | DECLARE_BITMAP(flags, PERSISTENT_GNT_FLAGS_SIZE); | 244 | bool active; |
250 | struct rb_node node; | 245 | struct rb_node node; |
251 | struct list_head remove_node; | 246 | struct list_head remove_node; |
252 | }; | 247 | }; |