From patchwork Sat Oct 9 15:53:31 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yehuda Sadeh X-Patchwork-Id: 243441 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter1.kernel.org (8.14.4/8.14.3) with ESMTP id o99FrdcF030928 for ; Sat, 9 Oct 2010 15:53:40 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754879Ab0JIPxh (ORCPT ); Sat, 9 Oct 2010 11:53:37 -0400 Received: from mail.hq.newdream.net ([66.33.206.127]:33499 "EHLO mail.hq.newdream.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754547Ab0JIPxg convert rfc822-to-8bit (ORCPT ); Sat, 9 Oct 2010 11:53:36 -0400 Received: from mail.hq.newdream.net (localhost [127.0.0.1]) by mail.hq.newdream.net (Postfix) with ESMTP id 92840280F1; Sat, 9 Oct 2010 08:53:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=hq.newdream.net; h= mime-version:in-reply-to:references:date:message-id:subject:from :to:cc:content-type:content-transfer-encoding; s=drama; bh=dk5qj 76gfuJAAQqM8ZRLDg4z9w0=; b=FZ50oT9Sm5Zwcc89ZmCzkzk2xEgCFFFJAdivF jiT/oBPTVylD0D9GZmEuDnFe3MKw6RA8fz9EO6plz1g5TAi0yZ0k2LbsaFJJJhhf W0evSVFAZ/phNJFjL+dITqt5apmN6hgAz6WYZ+IJB74/5Rt7zEyqOgcnlnqp/BfF 0tQ8Ig= DomainKey-Signature: a=rsa-sha1; c=nofws; d=hq.newdream.net; h= mime-version:in-reply-to:references:date:message-id:subject:from :to:cc:content-type:content-transfer-encoding; q=dns; s=drama; b= c6v51+YK9YVuV0nShR5SH2cMNhm+LM50uh2aD4CTZ7YZQcjHTmqIG5F5dvHjmnip mUk2bYgFof4f3XOJqwBTtJe3fpCtFxHje6L88pdcHPZcfjAeAgsm58FfedTUrnWq vrOcdHAK2GsbouVj/GG903cXeGxYveDHgIX7PZ5uipA= Received: from mail-ww0-f44.google.com (mail-ww0-f44.google.com [74.125.82.44]) by mail.hq.newdream.net (Postfix) with ESMTP id EF702280F5; Sat, 9 Oct 2010 08:53:33 -0700 (PDT) Received: by wwj40 with SMTP id 40so2252476wwj.1 for ; Sat, 09 Oct 2010 08:53:32 -0700 (PDT) MIME-Version: 1.0 Received: by 10.216.3.145 with SMTP id 17mr1898284weh.109.1286639611951; Sat, 09 Oct 2010 08:53:31 -0700 (PDT) Received: by 10.216.160.77 with HTTP; Sat, 9 Oct 2010 08:53:31 -0700 (PDT) In-Reply-To: References: <19221282ddcd1045bb3464903e5d8d9ea57cee25.1286563426.git.yehuda@hq.newdream.net> Date: Sat, 9 Oct 2010 08:53:31 -0700 Message-ID: Subject: Re: [Qemu-devel] [PATCH -v5] ceph/rbd block driver for qemu-kvm From: Yehuda Sadeh Weinraub To: Stefan Hajnoczi Cc: Anthony Liguori , Kevin Wolf , kvm@vger.kernel.org, qemu-devel@nongnu.org, Sage Weil , ceph-devel@vger.kernel.org, Christian Brunner Sender: ceph-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: ceph-devel@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.3 (demeter1.kernel.org [140.211.167.41]); Sat, 09 Oct 2010 15:53:40 +0000 (UTC) diff --git a/block/rbd.c b/block/rbd.c index a51fc36..575e481 100644 --- a/block/rbd.c +++ b/block/rbd.c @@ -51,6 +51,7 @@ typedef struct RBDAIOCB { int aiocnt; int error; struct BDRVRBDState *s; + int cancelled; } RBDAIOCB; typedef struct RADOSCB { @@ -325,8 +326,18 @@ static void rbd_complete_aio(RADOSCB *rcb) int64_t r; int i; - r = rcb->ret; acb->aiocnt--; + + if (acb->cancelled) { + if (!acb->aiocnt) { + qemu_vfree(acb->bounce); + qemu_aio_release(acb); + } + goto done; + } + + r = rcb->ret; + if (acb->write) { if (r < 0) { acb->ret = r; @@ -356,6 +367,7 @@ static void rbd_complete_aio(RADOSCB *rcb) if (!acb->aiocnt && acb->bh) { qemu_bh_schedule(acb->bh); } +done: qemu_free(rcb); i = 0; } @@ -585,7 +597,7 @@ static void rbd_aio_cancel(BlockDriverAIOCB *blockacb) RBDAIOCB *acb = (RBDAIOCB *) blockacb; qemu_bh_delete(acb->bh); acb->bh = NULL; - qemu_aio_release(acb); + acb->cancelled = 1; }