Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d77ff24e authored by Juergen Gross's avatar Juergen Gross Committed by Konrad Rzeszutek Wilk
Browse files

xen/blkback: move persistent grants flags to bool



The struct persistent_gnt flags member is meant to be a bitfield of
different flags. There is only PERSISTENT_GNT_ACTIVE flag left, so
convert it to a bool named "active".

Signed-off-by: default avatarJuergen Gross <jgross@suse.com>
Reviewed-by: default avatarRoger Pau Monné <roger.pau@citrix.com>
Signed-off-by: default avatarKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
parent 4bcddbae
Loading
Loading
Loading
Loading
+6 −7
Original line number Diff line number Diff line
@@ -255,8 +255,7 @@ static int add_persistent_gnt(struct xen_blkif_ring *ring,
		}
	}

	bitmap_zero(persistent_gnt->flags, PERSISTENT_GNT_FLAGS_SIZE);
	set_bit(PERSISTENT_GNT_ACTIVE, persistent_gnt->flags);
	persistent_gnt->active = true;
	/* Add new node and rebalance tree. */
	rb_link_node(&(persistent_gnt->node), parent, new);
	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,
		else if (gref > data->gnt)
			node = node->rb_right;
		else {
			if(test_bit(PERSISTENT_GNT_ACTIVE, data->flags)) {
			if (data->active) {
				pr_alert_ratelimited("requesting a grant already in use\n");
				return NULL;
			}
			set_bit(PERSISTENT_GNT_ACTIVE, data->flags);
			data->active = true;
			atomic_inc(&ring->persistent_gnt_in_use);
			return data;
		}
@@ -295,10 +294,10 @@ static struct persistent_gnt *get_persistent_gnt(struct xen_blkif_ring *ring,
static void put_persistent_gnt(struct xen_blkif_ring *ring,
                               struct persistent_gnt *persistent_gnt)
{
	if(!test_bit(PERSISTENT_GNT_ACTIVE, persistent_gnt->flags))
	if (!persistent_gnt->active)
		pr_alert_ratelimited("freeing a grant already unused\n");
	persistent_gnt->last_used = jiffies;
	clear_bit(PERSISTENT_GNT_ACTIVE, persistent_gnt->flags);
	persistent_gnt->active = false;
	atomic_dec(&ring->persistent_gnt_in_use);
}

@@ -429,7 +428,7 @@ static void purge_persistent_gnt(struct xen_blkif_ring *ring)
		BUG_ON(persistent_gnt->handle ==
			BLKBACK_INVALID_HANDLE);

		if (test_bit(PERSISTENT_GNT_ACTIVE, persistent_gnt->flags))
		if (persistent_gnt->active)
			continue;
		if (!scan_used && !persistent_gnt_timeout(persistent_gnt))
			continue;
+1 −6
Original line number Diff line number Diff line
@@ -233,11 +233,6 @@ struct xen_vbd {

struct backend_info;

/* Number of available flags */
#define PERSISTENT_GNT_FLAGS_SIZE	1
/* This persistent grant is currently in use */
#define PERSISTENT_GNT_ACTIVE		0

/* Number of requests that we can fit in a ring */
#define XEN_BLKIF_REQS_PER_PAGE		32

@@ -246,7 +241,7 @@ struct persistent_gnt {
	grant_ref_t gnt;
	grant_handle_t handle;
	unsigned long last_used;
	DECLARE_BITMAP(flags, PERSISTENT_GNT_FLAGS_SIZE);
	bool active;
	struct rb_node node;
	struct list_head remove_node;
};