[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [IA64] Weekly benchmark results [2009ww16]



Can you please try this patch?

linux/blktap: fix vma_close() for partial munmap.

the previous vma_close() didn't take partial 
munmap into acount. This patch fixes it.

Signed-off-by: Isaku Yamahata <yamahata@xxxxxxxxxxxxx>

diff --git a/drivers/xen/blktap/blktap.c b/drivers/xen/blktap/blktap.c
--- a/drivers/xen/blktap/blktap.c
+++ b/drivers/xen/blktap/blktap.c
@@ -295,6 +295,7 @@ static inline int OFFSET_TO_SEG(int offs
  */
 struct tap_vma_priv {
        tap_blkif_t *info;
+       struct kref kref;
        struct page *map[];
 };
 
@@ -392,19 +393,31 @@ static pte_t blktap_clear_pte(struct vm_
        return copy;
 }
 
+static void blktap_vma_open(struct vm_area_struct *vma)
+{
+       struct tap_vma_priv *priv = vma->vm_private_data;
+       kref_get(&priv->kref);
+}
+
+
+static void blktap_vma_release(struct kref *kref)
+{
+       struct tap_vma_priv *priv = container_of(kref,
+                                                struct tap_vma_priv, kref);
+       priv->info->vma = NULL;
+       kfree(priv);
+}
+
 static void blktap_vma_close(struct vm_area_struct *vma)
 {
        struct tap_vma_priv *priv = vma->vm_private_data;
-
-       if (priv) {
-               priv->info->vma = NULL;
-               kfree(priv);
-       }
+       kref_put(&priv->kref, blktap_vma_release);
 }
 
 struct vm_operations_struct blktap_vm_ops = {
        nopage:   blktap_nopage,
        zap_pte:  blktap_clear_pte,
+       open:     blktap_vma_open,
        close:    blktap_vma_close,
 };
 
@@ -707,6 +720,7 @@ static int blktap_mmap(struct file *filp
                goto fail;
        }
        priv->info = info;
+       kref_init(&priv->kref);
 
        vma->vm_private_data = priv;
        vma->vm_flags |= VM_FOREIGN;


On Fri, Apr 24, 2009 at 05:27:43PM +0900, KUWAMURA Shin'ya wrote:
> Hi,
> 
> I report a benchmark result of this week on IPF using
> ia64/xen-unstable and ia64/linux-2.6.18-xen.
> 
> - The following cset broke tap:aio.
>   863: blktap: don't access deallocated data
>   http://xenbits.xensource.com/linux-2.6.18-xen.hg?rev/464a925d73f1
>   Guests hung up while booting, so we used file instead of tap:aio.
> 
> - The issue that HVM domains cannot read the contents of HDD is fixed.
> 
> TEST ENVIRONMENT
>     Machine          : Tiger4
>     Kernel           : 2.6.18.8-xen
>     Changeset        : 19562:5599cc1e0a84 (ia64/xen-unstable)
>                      863:464a925d73f1   (ia64/linux-2.6.18-xen)
>                      136:eb97cb2936d6   (efi-vfirmware)
>                      08251d3            (qemu-xen-unstable)
>     Dom0 OS          : RHEL4 U2 (2P)
>     DomU OS          : RHEL4 U2 (8P, using tap:aio)
>     DomVTi OS        : RHEL4 U2 (8P, with PV-on-HVM drivers)
>     CONFIG_QEMU      : ioemu-remote
> 
> TEST RESULTS
>   DomU: # file
>     unixbench4.1.0    : Pass
>     bonnie++-1.03     : Pass
>     ltp-full-20070930 : Pass
>     iozone3_191       : Pass
>     lmbench-3.0-a5    : Pass
>   DomVTi: # file
>     unixbench4.1.0    : Pass
>     bonnie++-1.03     : Pass
>     ltp-full-20070930 : Pass
>     iozone3_191       : Pass
>     lmbench-3.0-a5    : Pass
> 
> Best regards,
> KUWAMURA Shin'ya and FUJITSU members
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-devel
> 

-- 
yamahata

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.