Thread (8 messages) 8 messages, 4 authors, 2018-09-28

Re: [PATCH] xen/blkfront: correct purging of persistent grants

From: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Date: 2018-09-28 14:02:20
Also in: lkml

On 9/28/18 9:52 AM, Juergen Gross wrote:
On 28/09/2018 15:33, Boris Ostrovsky wrote:
quoted
On 9/28/18 9:13 AM, Juergen Gross wrote:
quoted
On 28/09/2018 14:45, Boris Ostrovsky wrote:
quoted
On 9/28/18 3:28 AM, Juergen Gross wrote:
quoted
Commit a46b53672b2c2e3770b38a4abf90d16364d2584b ("xen/blkfront: cleanup
stale persistent grants") introduced a regression as purged persistent
grants were not pu into the list of free grants again. Correct that.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
 drivers/block/xen-blkfront.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/block/xen-blkfront.c b/drivers/block/xen-blkfront.c
index a71d817e900d..429d20131c7e 100644
--- a/drivers/block/xen-blkfront.c
+++ b/drivers/block/xen-blkfront.c
@@ -2670,8 +2670,8 @@ static void purge_persistent_grants(struct blkfront_info *info)
 			list_del(&gnt_list_entry->node);
 			gnttab_end_foreign_access(gnt_list_entry->gref, 0, 0UL);
 			rinfo->persistent_gnts_c--;
-			__free_page(gnt_list_entry->page);
-			kfree(gnt_list_entry);
+			gnt_list_entry->gref = GRANT_INVALID_REF;
+			list_add_tail(&gnt_list_entry->node, &rinfo->grants);
Sorry, I don't follow this. What is the purpose of removing the grant
from rinfo->grants list with list_del() and then adding it back with
list_add_tail()?
The persistent grants are at the list head and the non-persistent ones
at the tail.
Oh, I didn't realize that. But isn't that an optimization (and so not
following this rule should not cause errors)?
In theory: yes.

The persistent grant handling is rather complicated so I'd like to make
sure not to deviate from the common standards.
I am not arguing with correctness of your patch, so

Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>

but I am a little surprised that it fixes Sander's problem.


-boris

When I find some time I want to modify the persistent grant handling to
be more explicit and controlled completely by the frontend (within the
backend defined limits, of course). Until then we should try to modify
persistent grants not too much IMO.


Juergen
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help