From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752373Ab1HDHZT (ORCPT ); Thu, 4 Aug 2011 03:25:19 -0400 Received: from rcsinet15.oracle.com ([148.87.113.117]:64239 "EHLO rcsinet15.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751212Ab1HDHZP (ORCPT ); Thu, 4 Aug 2011 03:25:15 -0400 Message-ID: <4E3A493C.2070103@oracle.com> Date: Thu, 04 Aug 2011 15:24:44 +0800 From: Joe Jin User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:5.0) Gecko/20110707 Thunderbird/5.0 MIME-Version: 1.0 To: Joe Jin CC: Daniel Stodden , Jens Axboe , Konrad Rzeszutek Wilk , Annie Li , Ian Campbell , Kurt C Hackel , Greg Marsden , "xen-devel@lists.xensource.com" , "linux-kernel@vger.kernel.org" Subject: [PATCH -v3 2/3] xen-blkback: repleace check kthread_should_stop() to remove_requested in xen_blkif_schedule() loop. References: <4E3A486D.7060506@oracle.com> In-Reply-To: <4E3A486D.7060506@oracle.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Source-IP: acsinet22.oracle.com [141.146.126.238] X-Auth-Type: Internal IP X-CT-RefId: str=0001.0A090204.4E3A4953.0090:SCFMA922111,ss=1,re=-4.000,fgs=0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 Cc: Daniel Stodden Cc: Jens Axboe Cc: Konrad Rzeszutek Wilk Cc: Annie Li Cc: Ian Campbell -- 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); 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; }