WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] [linux-2.6.18-xen] blktap: Fix Reconnect demand by Front

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [linux-2.6.18-xen] blktap: Fix Reconnect demand by Frontend
From: "Xen patchbot-linux-2.6.18-xen" <patchbot-linux-2.6.18-xen@xxxxxxxxxxxxxxxxxxx>
Date: Tue, 09 Sep 2008 15:20:09 -0700
Delivery-date: Tue, 09 Sep 2008 15:20:42 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1220969609 -3600
# Node ID 035670ec617ca7cffce3d00c8d4b5c109a2eef06
# Parent  e86f9e05144afb5d122f264494881408fb225cdb
blktap: Fix Reconnect demand by Frontend

Signed-off-by: Tomonari Horikoshi <t.horikoshi@xxxxxxxxxxxxxx>
---
 drivers/xen/blktap/common.h    |    1 +
 drivers/xen/blktap/interface.c |    7 +++++++
 drivers/xen/blktap/xenbus.c    |    2 ++
 3 files changed, 10 insertions(+)

diff -r e86f9e05144a -r 035670ec617c drivers/xen/blktap/common.h
--- a/drivers/xen/blktap/common.h       Mon Sep 08 14:02:13 2008 +0100
+++ b/drivers/xen/blktap/common.h       Tue Sep 09 15:13:29 2008 +0100
@@ -89,6 +89,7 @@ typedef struct blkif_st {
 
 blkif_t *tap_alloc_blkif(domid_t domid);
 void tap_blkif_free(blkif_t *blkif);
+void tap_blkif_kmem_cache_free(blkif_t *blkif);
 int tap_blkif_map(blkif_t *blkif, unsigned long shared_page, 
                  unsigned int evtchn);
 void tap_blkif_unmap(blkif_t *blkif);
diff -r e86f9e05144a -r 035670ec617c drivers/xen/blktap/interface.c
--- a/drivers/xen/blktap/interface.c    Mon Sep 08 14:02:13 2008 +0100
+++ b/drivers/xen/blktap/interface.c    Tue Sep 09 15:13:29 2008 +0100
@@ -162,8 +162,15 @@ void tap_blkif_free(blkif_t *blkif)
 {
        atomic_dec(&blkif->refcnt);
        wait_event(blkif->waiting_to_free, atomic_read(&blkif->refcnt) == 0);
+       atomic_inc(&blkif->refcnt);
 
        tap_blkif_unmap(blkif);
+}
+
+void tap_blkif_kmem_cache_free(blkif_t *blkif)
+{
+       if (!atomic_dec_and_test(&blkif->refcnt))
+               BUG();
        kmem_cache_free(blkif_cachep, blkif);
 }
 
diff -r e86f9e05144a -r 035670ec617c drivers/xen/blktap/xenbus.c
--- a/drivers/xen/blktap/xenbus.c       Mon Sep 08 14:02:13 2008 +0100
+++ b/drivers/xen/blktap/xenbus.c       Tue Sep 09 15:13:29 2008 +0100
@@ -182,6 +182,7 @@ static int blktap_remove(struct xenbus_d
                        kthread_stop(be->blkif->xenblkd);
                signal_tapdisk(be->blkif->dev_num);
                tap_blkif_free(be->blkif);
+               tap_blkif_kmem_cache_free(be->blkif);
                be->blkif = NULL;
        }
        kfree(be);
@@ -364,6 +365,7 @@ static void tap_frontend_changed(struct 
                        kthread_stop(be->blkif->xenblkd);
                        be->blkif->xenblkd = NULL;
                }
+               tap_blkif_free(be->blkif);
                xenbus_switch_state(dev, XenbusStateClosing);
                break;
 

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

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [linux-2.6.18-xen] blktap: Fix Reconnect demand by Frontend, Xen patchbot-linux-2.6.18-xen <=