* [PATCH] xen/blkback: safely unmap purge persistent grants
@ 2015-03-25 10:02 Bob Liu
2015-03-26 11:15 ` Roger Pau Monné
0 siblings, 1 reply; 3+ messages in thread
From: Bob Liu @ 2015-03-25 10:02 UTC (permalink / raw)
To: xen-devel
Cc: boris.ostrovsky, jennifer.herbert, david.vrabel, roger.pau,
linux-kernel, konrad.wilk, Bob Liu
Commit c43cf3ea8385 ("xen-blkback: safely unmap grants in case they are still
in use") use gnttab_unmap_refs_async() to wait until the mapped pages are no
longer in use before unmapping them, but that commit missed the persistent case.
Purge persistent pages can't be unmapped either unless no longer in use.
Signed-off-by: Bob Liu <bob.liu@oracle.com>
---
drivers/block/xen-blkback/blkback.c | 24 ++++++++++++++++++------
1 file changed, 18 insertions(+), 6 deletions(-)
diff --git a/drivers/block/xen-blkback/blkback.c b/drivers/block/xen-blkback/blkback.c
index 2a04d34..f59d7c3 100644
--- a/drivers/block/xen-blkback/blkback.c
+++ b/drivers/block/xen-blkback/blkback.c
@@ -327,8 +327,18 @@ void xen_blkbk_unmap_purged_grants(struct work_struct *work)
struct gnttab_unmap_grant_ref unmap[BLKIF_MAX_SEGMENTS_PER_REQUEST];
struct page *pages[BLKIF_MAX_SEGMENTS_PER_REQUEST];
struct persistent_gnt *persistent_gnt;
- int ret, segs_to_unmap = 0;
+ int segs_to_unmap = 0;
struct xen_blkif *blkif = container_of(work, typeof(*blkif), persistent_purge_work);
+ struct gntab_unmap_queue_data unmap_data;
+ struct completion unmap_completion;
+
+ init_completion(&unmap_completion);
+
+ unmap_data.data = &unmap_completion;
+ unmap_data.done = &free_persistent_gnts_unmap_callback;
+ unmap_data.pages = pages;
+ unmap_data.unmap_ops = unmap;
+ unmap_data.kunmap_ops = NULL;
while(!list_empty(&blkif->persistent_purge_list)) {
persistent_gnt = list_first_entry(&blkif->persistent_purge_list,
@@ -344,17 +354,19 @@ void xen_blkbk_unmap_purged_grants(struct work_struct *work)
pages[segs_to_unmap] = persistent_gnt->page;
if (++segs_to_unmap == BLKIF_MAX_SEGMENTS_PER_REQUEST) {
- ret = gnttab_unmap_refs(unmap, NULL, pages,
- segs_to_unmap);
- BUG_ON(ret);
+ unmap_data.count = segs_to_unmap;
+ gnttab_unmap_refs_async(&unmap_data);
+ wait_for_completion(&unmap_completion);
+
put_free_pages(blkif, pages, segs_to_unmap);
segs_to_unmap = 0;
}
kfree(persistent_gnt);
}
if (segs_to_unmap > 0) {
- ret = gnttab_unmap_refs(unmap, NULL, pages, segs_to_unmap);
- BUG_ON(ret);
+ unmap_data.count = segs_to_unmap;
+ gnttab_unmap_refs_async(&unmap_data);
+ wait_for_completion(&unmap_completion);
put_free_pages(blkif, pages, segs_to_unmap);
}
}
--
1.8.3.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] xen/blkback: safely unmap purge persistent grants
2015-03-25 10:02 [PATCH] xen/blkback: safely unmap purge persistent grants Bob Liu
@ 2015-03-26 11:15 ` Roger Pau Monné
2015-03-26 11:29 ` Bob Liu
0 siblings, 1 reply; 3+ messages in thread
From: Roger Pau Monné @ 2015-03-26 11:15 UTC (permalink / raw)
To: Bob Liu, xen-devel
Cc: boris.ostrovsky, jennifer.herbert, david.vrabel, linux-kernel,
konrad.wilk
Hello,
El 25/03/15 a les 11.02, Bob Liu ha escrit:
> + gnttab_unmap_refs_async(&unmap_data);
> + wait_for_completion(&unmap_completion);
I think David had a comment about putting this into some kind of common
helper since it's used widely (at least in blkback). Could you look into it?
Roger.
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] xen/blkback: safely unmap purge persistent grants
2015-03-26 11:15 ` Roger Pau Monné
@ 2015-03-26 11:29 ` Bob Liu
0 siblings, 0 replies; 3+ messages in thread
From: Bob Liu @ 2015-03-26 11:29 UTC (permalink / raw)
To: Roger Pau Monné
Cc: xen-devel, boris.ostrovsky, jennifer.herbert, david.vrabel,
linux-kernel, konrad.wilk
On 03/26/2015 07:15 PM, Roger Pau Monné wrote:
> Hello,
>
> El 25/03/15 a les 11.02, Bob Liu ha escrit:
>> + gnttab_unmap_refs_async(&unmap_data);
>> + wait_for_completion(&unmap_completion);
>
> I think David had a comment about putting this into some kind of common
> helper since it's used widely (at least in blkback). Could you look into it?
>
Sure, sorry for forgot that.
I'll send out an new patch soon.
--
Regards,
-Bob
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2015-03-26 11:30 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-03-25 10:02 [PATCH] xen/blkback: safely unmap purge persistent grants Bob Liu
2015-03-26 11:15 ` Roger Pau Monné
2015-03-26 11:29 ` Bob Liu
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox