Shan, Haitao
2008-Jan-22 05:46 UTC
[Xen-devel] [PATCH][dom0] Add a module exit function to BLKBACK
Hi, Keir, This little patch will add a module exit function for block backend. Can you have a look? Signed-off-by: Dugger Donald D <donald.d.dugger@intel.com> Signed-off-by: Haitao Shan <haitao.shan@intel.com> diff -r 854690f06ed9 drivers/xen/blkback/blkback.c --- a/drivers/xen/blkback/blkback.c Tue Jan 15 15:59:31 2008 +0000 +++ b/drivers/xen/blkback/blkback.c Mon Jan 21 22:37:54 2008 +0800 @@ -165,6 +165,7 @@ static void fast_flush_area(pending_req_ { struct gnttab_unmap_grant_ref unmap[BLKIF_MAX_SEGMENTS_PER_REQUEST]; unsigned int i, invcount = 0; + unsigned long pfn; grant_handle_t handle; int ret; @@ -176,6 +177,8 @@ static void fast_flush_area(pending_req_ handle); pending_handle(req, i) = BLKBACK_INVALID_HANDLE; invcount++; + pfn = page_to_pfn(pending_pages[vaddr_pagenr(req, i)]); + set_phys_to_machine(pfn, INVALID_P2M_ENTRY); } ret = HYPERVISOR_grant_table_op( @@ -612,6 +615,20 @@ static int __init blkif_init(void) return -ENOMEM; } +static void __exit blkif_exit(void) +{ + int mmap_pages; + + mmap_pages = blkif_reqs * BLKIF_MAX_SEGMENTS_PER_REQUEST; + + kfree(pending_reqs); + kfree(pending_grant_handles); + free_empty_pages_and_pagevec(pending_pages, mmap_pages); + + return; +} + module_init(blkif_init); +module_exit(blkif_exit); MODULE_LICENSE("Dual BSD/GPL"); <<exit.patch>> Best Regards Haitao Shan _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Keir Fraser
2008-Jan-22 07:48 UTC
[Xen-devel] Re: [PATCH][dom0] Add a module exit function to BLKBACK
Looks to completely ignore that you may have blkfronts connected and I/Os still in flight. This will only work for a totally quiescent blkback. -- Keir On 22/1/08 05:46, "Shan, Haitao" <haitao.shan@intel.com> wrote:> Hi, Keir, > > This little patch will add a module exit function for block backend. Can you > have a look? > > Signed-off-by: Dugger Donald D <donald.d.dugger@intel.com> > Signed-off-by: Haitao Shan <haitao.shan@intel.com> > diff -r 854690f06ed9 drivers/xen/blkback/blkback.c > --- a/drivers/xen/blkback/blkback.c Tue Jan 15 15:59:31 2008 +0000 > +++ b/drivers/xen/blkback/blkback.c Mon Jan 21 22:37:54 2008 +0800 > @@ -165,6 +165,7 @@ static void fast_flush_area(pending_req_ > { > struct gnttab_unmap_grant_ref unmap[BLKIF_MAX_SEGMENTS_PER_REQUEST]; > unsigned int i, invcount = 0; > + unsigned long pfn; > grant_handle_t handle; > int ret; > > @@ -176,6 +177,8 @@ static void fast_flush_area(pending_req_ > handle); > pending_handle(req, i) = BLKBACK_INVALID_HANDLE; > invcount++; > + pfn = page_to_pfn(pending_pages[vaddr_pagenr(req, i)]); > + set_phys_to_machine(pfn, INVALID_P2M_ENTRY); > } > > ret = HYPERVISOR_grant_table_op( > @@ -612,6 +615,20 @@ static int __init blkif_init(void) > return -ENOMEM; > } > > +static void __exit blkif_exit(void) > +{ > + int mmap_pages; > + > + mmap_pages = blkif_reqs * BLKIF_MAX_SEGMENTS_PER_REQUEST; > + > + kfree(pending_reqs); > + kfree(pending_grant_handles); > + free_empty_pages_and_pagevec(pending_pages, mmap_pages); > + > + return; > +} > + > module_init(blkif_init); > +module_exit(blkif_exit); > > MODULE_LICENSE("Dual BSD/GPL"); > <<exit.patch>> > > Best Regards > Haitao Shan >_______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel