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-devel

[Xen-devel] Re: [PATCH -v3 2/3] xen-blkback: repleace check kthread_shou

To: Joe Jin <joe.jin@xxxxxxxxxx>
Subject: [Xen-devel] Re: [PATCH -v3 2/3] xen-blkback: repleace check kthread_should_stop() to remove_requested in xen_blkif_schedule() loop.
From: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
Date: Thu, 4 Aug 2011 15:48:38 -0400
Cc: "xen-devel@xxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxx>, Jens Axboe <jaxboe@xxxxxxxxxxxx>, Greg Marsden <greg.marsden@xxxxxxxxxx>, "linux-kernel@xxxxxxxxxxxxxxx" <linux-kernel@xxxxxxxxxxxxxxx>, Ian Campbell <Ian.Campbell@xxxxxxxxxxxxx>, Annie Li <annie.li@xxxxxxxxxx>, Kurt C Hackel <KURT.HACKEL@xxxxxxxxxx>, Daniel Stodden <daniel.stodden@xxxxxxxxxx>
Delivery-date: Thu, 04 Aug 2011 12:49:27 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <4E3A493C.2070103@xxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <4E3A486D.7060506@xxxxxxxxxx> <4E3A493C.2070103@xxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mutt/1.5.21 (2010-09-15)
On Thu, Aug 04, 2011 at 03:24:44PM +0800, Joe Jin wrote:
> 
> When backend state change to XenbusStateClosed, remove_requested will be set,
> so repleace check kthread_should_stop() to remove_requested in 
> xen_blkif_schedule() loop.
> 
> Signed-off-by: Joe Jin <joe.jin@xxxxxxxxxx>
> Cc: Daniel Stodden <daniel.stodden@xxxxxxxxxx>
> Cc: Jens Axboe <jaxboe@xxxxxxxxxxxx>
> Cc: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
> Cc: Annie Li <annie.li@xxxxxxxxxx>
> Cc: Ian Campbell <Ian.Campbell@xxxxxxxxxxxxx>
> --
>  drivers/block/xen-blkback/blkback.c |   10 +++++-----
>  1 file changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/block/xen-blkback/blkback.c 
> b/drivers/block/xen-blkback/blkback.c
> index 2330a9a..3d64b52 100644
> --- a/drivers/block/xen-blkback/blkback.c
> +++ b/drivers/block/xen-blkback/blkback.c
> @@ -274,7 +274,7 @@ int xen_blkif_schedule(void *arg)
>  
>       xen_blkif_get(blkif);
>  
> -     while (!kthread_should_stop()) {
> +     while (!blkif->remove_requested) {
>               if (try_to_freeze())
>                       continue;
>               if (unlikely(vbd->size != vbd_sz(vbd)))
> @@ -282,11 +282,11 @@ int xen_blkif_schedule(void *arg)
>  
>               wait_event_interruptible(
>                       blkif->wq,
> -                     blkif->waiting_reqs || kthread_should_stop());
> +                     blkif->waiting_reqs || blkif->remove_requested);
>               wait_event_interruptible(
>                       blkbk->pending_free_wq,
>                       !list_empty(&blkbk->pending_free) ||
> -                     kthread_should_stop());
> +                     blkif->remove_requested);
>  
>               blkif->waiting_reqs = 0;
>               smp_mb(); /* clear flag *before* checking for work */
> @@ -301,8 +301,8 @@ int xen_blkif_schedule(void *arg)
>       if (log_stats)
>               print_stats(blkif);
>  
> -     blkif->xenblkd = NULL;
>       xen_blkif_put(blkif);
> +     xen_blkback_close(blkif);

<sigh> I can't believe I didn't catch this earlier, but this a
big NO NO. Each patch _MUST_ be compile on its own. If I commit
patch 1 and this patch, the compile (actually linker) process
stops b/c xen_blkback_close is not defined:

drivers/built-in.o: In function `xen_blkif_schedule':
/home/konrad/ssd/linux/drivers/block/xen-blkback/blkback.c:305: undefined 
reference to `xen_blkback_close'
make[2]: *** [.tmp_vmlinux1] Error 1

You can move the xen_blkback_close() to the third patch
instead of having it here.

I will be nice and do it for you.

>  
>       return 0;
>  }
> @@ -476,7 +476,7 @@ __do_block_io_op(struct xen_blkif *blkif)
>               if (RING_REQUEST_CONS_OVERFLOW(&blk_rings->common, rc))
>                       break;
>  
> -             if (kthread_should_stop()) {
> +             if (blkif->remove_requested) {
>                       more_to_do = 1;
>                       break;
>               }

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