From patchwork Thu Jan 10 15:03:35 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alberto Garcia X-Patchwork-Id: 10756037 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 9D60213B5 for ; Thu, 10 Jan 2019 15:09:36 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 8A7492987E for ; Thu, 10 Jan 2019 15:09:36 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 7BD9B29884; Thu, 10 Jan 2019 15:09:36 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI autolearn=ham version=3.3.1 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 51FD02987E for ; Thu, 10 Jan 2019 15:09:35 +0000 (UTC) Received: from localhost ([127.0.0.1]:45658 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ghbxe-0006ru-Li for patchwork-qemu-devel@patchwork.kernel.org; Thu, 10 Jan 2019 10:09:34 -0500 Received: from eggs.gnu.org ([209.51.188.92]:46203) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ghbsN-00036w-Vx for qemu-devel@nongnu.org; Thu, 10 Jan 2019 10:04:13 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ghbsG-0007OR-Gm for qemu-devel@nongnu.org; Thu, 10 Jan 2019 10:04:06 -0500 Received: from fanzine.igalia.com ([91.117.99.155]:57861) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ghbsF-0007NK-Tl; Thu, 10 Jan 2019 10:04:00 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=igalia.com; s=20170329; h=References:In-Reply-To:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From; bh=1RDoTfYk81Gj3E6of/gL7KLZOJeO382M3nMlpGpF9YU=; b=dVslm2tOWO6iBcP2yqcqIXnNyITnF2WHQ8Yy5HrV42Akzuzs+tMzpUCKMrIYF7gTGW9GPiRzTf51BXJn3zpJIe6Jyw9ltIOIghbI7uyJnQxBYPh/OIm9F3uac7MfXMJ+vA64VH3CSotl92uoBX52jTsnmdhIqUng2dRpC/ks4JPDzryYIiCNe3EHWz1xJTRaYwiB/1Qi4P5XicP27G84xbTP/h0fMaH52A31+1/rY1XYfJuREPtS0E7CFSwEjLy+LIo7wYrpl5h2LQDrGCmLqKuC/ICghz50tM2pkV8IHlvRSppRbECXpaMMRw72L49IMFrnoq0fb4ameT2z/RlwZA==; Received: from [194.100.51.2] (helo=perseus.local) by fanzine.igalia.com with esmtpsa (Cipher TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim) id 1ghbsD-0003mU-Oi; Thu, 10 Jan 2019 16:03:57 +0100 Received: from berto by perseus.local with local (Exim 4.89) (envelope-from ) id 1ghbry-0002Bb-32; Thu, 10 Jan 2019 17:03:42 +0200 From: Alberto Garcia To: qemu-devel@nongnu.org Date: Thu, 10 Jan 2019 17:03:35 +0200 Message-Id: <4a595def20efc9d1d076850d79a2c7e6d0996ffd.1547132561.git.berto@igalia.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: References: In-Reply-To: References: X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x (no timestamps) [generic] [fuzzy] X-Received-From: 91.117.99.155 Subject: [Qemu-devel] [PATCH 1/6] block: Acquire the AioContext in virtio_blk_device_realize() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Alberto Garcia , qemu-block@nongnu.org, Max Reitz , Stefan Hajnoczi , Paolo Bonzini Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" X-Virus-Scanned: ClamAV using ClamSMTP This fixes the following crash: { "execute": "blockdev-add", "arguments": {"driver": "null-co", "node-name": "hd0"}} { "execute": "object-add", "arguments": {"qom-type": "iothread", "id": "iothread0"}} { "execute": "x-blockdev-set-iothread", "arguments": {"node-name": "hd0", "iothread": "iothread0"}} { "execute": "device_add", "arguments": {"id": "virtio0", "driver": "virtio-blk-pci", "drive": "hd0"}} qemu: qemu_mutex_unlock_impl: Operation not permitted Aborted Signed-off-by: Alberto Garcia --- hw/block/virtio-blk.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/hw/block/virtio-blk.c b/hw/block/virtio-blk.c index f208c6ddb9..5357da82af 100644 --- a/hw/block/virtio-blk.c +++ b/hw/block/virtio-blk.c @@ -912,6 +912,7 @@ static void virtio_blk_device_realize(DeviceState *dev, Error **errp) VirtIODevice *vdev = VIRTIO_DEVICE(dev); VirtIOBlock *s = VIRTIO_BLK(dev); VirtIOBlkConf *conf = &s->conf; + AioContext *ctx; Error *err = NULL; unsigned i; @@ -919,30 +920,34 @@ static void virtio_blk_device_realize(DeviceState *dev, Error **errp) error_setg(errp, "drive property not set"); return; } + + ctx = blk_get_aio_context(conf->conf.blk); + aio_context_acquire(ctx); + if (!blk_is_inserted(conf->conf.blk)) { error_setg(errp, "Device needs media, but drive is empty"); - return; + goto out; } if (!conf->num_queues) { error_setg(errp, "num-queues property must be larger than 0"); - return; + goto out; } if (!is_power_of_2(conf->queue_size) || conf->queue_size > VIRTQUEUE_MAX_SIZE) { error_setg(errp, "invalid queue-size property (%" PRIu16 "), " "must be a power of 2 (max %d)", conf->queue_size, VIRTQUEUE_MAX_SIZE); - return; + goto out; } if (!blkconf_apply_backend_options(&conf->conf, blk_is_read_only(conf->conf.blk), true, errp)) { - return; + goto out; } s->original_wce = blk_enable_write_cache(conf->conf.blk); if (!blkconf_geometry(&conf->conf, NULL, 65535, 255, 255, errp)) { - return; + goto out; } blkconf_blocksizes(&conf->conf); @@ -951,7 +956,7 @@ static void virtio_blk_device_realize(DeviceState *dev, Error **errp) conf->conf.physical_block_size) { error_setg(errp, "logical_block_size > physical_block_size not supported"); - return; + goto out; } virtio_init(vdev, "virtio-blk", VIRTIO_ID_BLOCK, @@ -968,7 +973,7 @@ static void virtio_blk_device_realize(DeviceState *dev, Error **errp) if (err != NULL) { error_propagate(errp, err); virtio_cleanup(vdev); - return; + goto out; } s->change = qemu_add_vm_change_state_handler(virtio_blk_dma_restart_cb, s); @@ -976,6 +981,9 @@ static void virtio_blk_device_realize(DeviceState *dev, Error **errp) blk_set_guest_block_size(s->blk, s->conf.conf.logical_block_size); blk_iostatus_enable(s->blk); + +out: + aio_context_release(ctx); } static void virtio_blk_device_unrealize(DeviceState *dev, Error **errp) From patchwork Thu Jan 10 15:03:36 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alberto Garcia X-Patchwork-Id: 10756029 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 477A614DE for ; Thu, 10 Jan 2019 15:07:37 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 3639829129 for ; Thu, 10 Jan 2019 15:07:37 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 27DAF29A23; Thu, 10 Jan 2019 15:07:37 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI autolearn=ham version=3.3.1 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id B2FCD29129 for ; Thu, 10 Jan 2019 15:07:36 +0000 (UTC) Received: from localhost ([127.0.0.1]:45110 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ghbvj-0005cd-Dl for patchwork-qemu-devel@patchwork.kernel.org; Thu, 10 Jan 2019 10:07:35 -0500 Received: from eggs.gnu.org ([209.51.188.92]:46113) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ghbsJ-000324-FJ for qemu-devel@nongnu.org; Thu, 10 Jan 2019 10:04:04 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ghbsG-0007O1-EW for qemu-devel@nongnu.org; Thu, 10 Jan 2019 10:04:03 -0500 Received: from fanzine.igalia.com ([91.117.99.155]:57867) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ghbsF-0007NE-Te; Thu, 10 Jan 2019 10:04:00 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=igalia.com; s=20170329; h=References:In-Reply-To:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From; bh=o4MgRiH2A9D2KlY6wfivpWdHv4L6n8VMY28b8z4DSDY=; b=fdZnFnHmLHN14kQWM7r7ICZcv9//lTYKNwBkKzylTLnN5DkE35CQF+VCYY8rtdBCJjJXxVSVKnXigdVjLmi0zyVTe1i01opUxQ9c0cHR6gL4R82ZrMyKjio8IRaP0Q1QNul2nHjEOLFz4rM7AkKO9f5zRCjco8uZajwrwlNDPu82QrC5V9rfO7SUqdpFG6Mc6Sdf9dOWsOreLdRj0gxuPBAZQpKKjni3QxymbFuCcSpbTcQQ4MTQfgMwvyTpP+NMcr3tHWk5CAUoEGyZ+bSWgocV4qlgZGPNOxC6oewQWfhtLoFmTmdY06ft52vdU7sgi2Ks5rvEvbJy4pPwBBqktg==; Received: from [194.100.51.2] (helo=perseus.local) by fanzine.igalia.com with esmtpsa (Cipher TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim) id 1ghbsD-0003mT-NJ; Thu, 10 Jan 2019 16:03:57 +0100 Received: from berto by perseus.local with local (Exim 4.89) (envelope-from ) id 1ghbry-0002Bd-4R; Thu, 10 Jan 2019 17:03:42 +0200 From: Alberto Garcia To: qemu-devel@nongnu.org Date: Thu, 10 Jan 2019 17:03:36 +0200 Message-Id: <42c8dab1efbcd608a09a1d84468fc498b612bfa1.1547132561.git.berto@igalia.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: References: In-Reply-To: References: X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x (no timestamps) [generic] [fuzzy] X-Received-From: 91.117.99.155 Subject: [Qemu-devel] [PATCH 2/6] block: Acquire the AioContext in scsi_*_realize() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Alberto Garcia , qemu-block@nongnu.org, Max Reitz , Stefan Hajnoczi , Paolo Bonzini Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" X-Virus-Scanned: ClamAV using ClamSMTP This fixes the following crash: { "execute": "blockdev-add", "arguments": {"driver": "null-co", "node-name": "hd0"}} { "execute": "object-add", "arguments": {"qom-type": "iothread", "id": "iothread0"}} { "execute": "x-blockdev-set-iothread", "arguments": {"node-name": "hd0", "iothread": "iothread0"}} { "execute": "device_add", "arguments": {"id": "scsi-pci0", "driver": "virtio-scsi-pci"}} { "execute": "device_add", "arguments": {"id": "scsi-hd0", "driver": "scsi-hd", "drive": "hd0"}} qemu: qemu_mutex_unlock_impl: Operation not permitted Aborted Signed-off-by: Alberto Garcia --- hw/scsi/scsi-disk.c | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/hw/scsi/scsi-disk.c b/hw/scsi/scsi-disk.c index 0e9027c8f3..8a22def7f3 100644 --- a/hw/scsi/scsi-disk.c +++ b/hw/scsi/scsi-disk.c @@ -2318,16 +2318,20 @@ static void scsi_disk_unit_attention_reported(SCSIDevice *dev) static void scsi_realize(SCSIDevice *dev, Error **errp) { SCSIDiskState *s = DO_UPCAST(SCSIDiskState, qdev, dev); + AioContext *ctx; if (!s->qdev.conf.blk) { error_setg(errp, "drive property not set"); return; } + ctx = blk_get_aio_context(s->qdev.conf.blk); + aio_context_acquire(ctx); + if (!(s->features & (1 << SCSI_DISK_F_REMOVABLE)) && !blk_is_inserted(s->qdev.conf.blk)) { error_setg(errp, "Device needs media, but drive is empty"); - return; + goto out; } blkconf_blocksizes(&s->qdev.conf); @@ -2336,18 +2340,18 @@ static void scsi_realize(SCSIDevice *dev, Error **errp) s->qdev.conf.physical_block_size) { error_setg(errp, "logical_block_size > physical_block_size not supported"); - return; + goto out; } if (dev->type == TYPE_DISK) { if (!blkconf_geometry(&dev->conf, NULL, 65535, 255, 255, errp)) { - return; + goto out; } } if (!blkconf_apply_backend_options(&dev->conf, blk_is_read_only(s->qdev.conf.blk), dev->type == TYPE_DISK, errp)) { - return; + goto out; } if (s->qdev.conf.discard_granularity == -1) { @@ -2364,7 +2368,7 @@ static void scsi_realize(SCSIDevice *dev, Error **errp) if (blk_is_sg(s->qdev.conf.blk)) { error_setg(errp, "unwanted /dev/sg*"); - return; + goto out; } if ((s->features & (1 << SCSI_DISK_F_REMOVABLE)) && @@ -2376,6 +2380,9 @@ static void scsi_realize(SCSIDevice *dev, Error **errp) blk_set_guest_block_size(s->qdev.conf.blk, s->qdev.blocksize); blk_iostatus_enable(s->qdev.conf.blk); + +out: + aio_context_release(ctx); } static void scsi_hd_realize(SCSIDevice *dev, Error **errp) @@ -2385,7 +2392,10 @@ static void scsi_hd_realize(SCSIDevice *dev, Error **errp) * backend will be issued in scsi_realize */ if (s->qdev.conf.blk) { + AioContext *ctx = blk_get_aio_context(s->qdev.conf.blk); + aio_context_acquire(ctx); blkconf_blocksizes(&s->qdev.conf); + aio_context_release(ctx); } s->qdev.blocksize = s->qdev.conf.logical_block_size; s->qdev.type = TYPE_DISK; @@ -2553,6 +2563,7 @@ static int get_device_type(SCSIDiskState *s) static void scsi_block_realize(SCSIDevice *dev, Error **errp) { SCSIDiskState *s = DO_UPCAST(SCSIDiskState, qdev, dev); + AioContext *ctx; int sg_version; int rc; @@ -2568,7 +2579,10 @@ static void scsi_block_realize(SCSIDevice *dev, Error **errp) } /* check we are using a driver managing SG_IO (version 3 and after) */ + ctx = blk_get_aio_context(s->qdev.conf.blk); + aio_context_acquire(ctx); rc = blk_ioctl(s->qdev.conf.blk, SG_GET_VERSION_NUM, &sg_version); + aio_context_release(ctx); if (rc < 0) { error_setg_errno(errp, -rc, "cannot get SG_IO version number"); if (rc != -EPERM) { From patchwork Thu Jan 10 15:03:37 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alberto Garcia X-Patchwork-Id: 10756011 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 13AD513B5 for ; Thu, 10 Jan 2019 15:05:32 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 01C3129960 for ; Thu, 10 Jan 2019 15:05:32 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id EA49829A0F; Thu, 10 Jan 2019 15:05:31 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI autolearn=ham version=3.3.1 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 34BD029A23 for ; Thu, 10 Jan 2019 15:05:30 +0000 (UTC) Received: from localhost ([127.0.0.1]:44578 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ghbth-0004Bw-9x for patchwork-qemu-devel@patchwork.kernel.org; Thu, 10 Jan 2019 10:05:29 -0500 Received: from eggs.gnu.org ([209.51.188.92]:46099) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ghbsH-00030v-K7 for qemu-devel@nongnu.org; Thu, 10 Jan 2019 10:04:02 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ghbsG-0007OJ-G2 for qemu-devel@nongnu.org; Thu, 10 Jan 2019 10:04:01 -0500 Received: from fanzine.igalia.com ([91.117.99.155]:57868) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ghbsF-0007NH-Po; Thu, 10 Jan 2019 10:04:00 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=igalia.com; s=20170329; h=References:In-Reply-To:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From; bh=m2WBlCimuDjftw+8ixiiiYkdpLsUiwuy4ahzX9WwfLg=; b=hV8xgwpy3l9MDp8hb94GHuluEdsvFqA/IIELVFc3/HBU1g/JK8L+89H014LEWBf3OeQfgTDZuVz7JJQZ6aLR3B3LHWm01Fb5mei9aDv8XdA0PeUI30MoYY3vWWi7fUmnKh/47qzrX8zT4r1p4lWRqgYcME3CIvjym6AuprEOXXExAz4pE12399eygUNTTNFZzQJ4VMT0S6GdJqv/YtxHTZg++WEB2gmKdWYJqpZxiLtZQnbDVXOVBfEA7W6ATswLHHedb47kywlnm4Xj2vAvKNGUndDAw6j4qV+MSO59k+naFcyYmxVDYtpqrnWacmy76EupoXm3os52Cm9un8DGkg==; Received: from [194.100.51.2] (helo=perseus.local) by fanzine.igalia.com with esmtpsa (Cipher TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim) id 1ghbsD-0003mV-Kq; Thu, 10 Jan 2019 16:03:57 +0100 Received: from berto by perseus.local with local (Exim 4.89) (envelope-from ) id 1ghbry-0002Bf-5m; Thu, 10 Jan 2019 17:03:42 +0200 From: Alberto Garcia To: qemu-devel@nongnu.org Date: Thu, 10 Jan 2019 17:03:37 +0200 Message-Id: <26733c0b339a4cf53318aa2b898eaa409fb307c6.1547132561.git.berto@igalia.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: References: In-Reply-To: References: X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x (no timestamps) [generic] [fuzzy] X-Received-From: 91.117.99.155 Subject: [Qemu-devel] [PATCH 3/6] block: Acquire the AioContext in floppy_drive_realize() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Alberto Garcia , qemu-block@nongnu.org, Max Reitz , Stefan Hajnoczi , Paolo Bonzini Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" X-Virus-Scanned: ClamAV using ClamSMTP Signed-off-by: Alberto Garcia --- hw/block/fdc.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/hw/block/fdc.c b/hw/block/fdc.c index 6f19f127a5..d9bc80de83 100644 --- a/hw/block/fdc.c +++ b/hw/block/fdc.c @@ -512,6 +512,7 @@ static void floppy_drive_realize(DeviceState *qdev, Error **errp) { FloppyDrive *dev = FLOPPY_DRIVE(qdev); FloppyBus *bus = FLOPPY_BUS(qdev->parent_bus); + AioContext *ctx; FDrive *drive; int ret; @@ -543,13 +544,16 @@ static void floppy_drive_realize(DeviceState *qdev, Error **errp) assert(ret == 0); } + ctx = blk_get_aio_context(dev->conf.blk); + aio_context_acquire(ctx); + blkconf_blocksizes(&dev->conf); if (dev->conf.logical_block_size != 512 || dev->conf.physical_block_size != 512) { error_setg(errp, "Physical and logical block size must " "be 512 for floppy"); - return; + goto out; } /* rerror/werror aren't supported by fdc and therefore not even registered @@ -561,7 +565,7 @@ static void floppy_drive_realize(DeviceState *qdev, Error **errp) if (!blkconf_apply_backend_options(&dev->conf, blk_is_read_only(dev->conf.blk), false, errp)) { - return; + goto out; } /* 'enospc' is the default for -drive, 'report' is what blk_new() gives us @@ -569,11 +573,11 @@ static void floppy_drive_realize(DeviceState *qdev, Error **errp) if (blk_get_on_error(dev->conf.blk, 0) != BLOCKDEV_ON_ERROR_ENOSPC && blk_get_on_error(dev->conf.blk, 0) != BLOCKDEV_ON_ERROR_REPORT) { error_setg(errp, "fdc doesn't support drive option werror"); - return; + goto out; } if (blk_get_on_error(dev->conf.blk, 1) != BLOCKDEV_ON_ERROR_REPORT) { error_setg(errp, "fdc doesn't support drive option rerror"); - return; + goto out; } drive->conf = &dev->conf; @@ -589,6 +593,9 @@ static void floppy_drive_realize(DeviceState *qdev, Error **errp) dev->type = drive->drive; fd_revalidate(drive); + +out: + aio_context_release(ctx); } static void floppy_drive_class_init(ObjectClass *klass, void *data) From patchwork Thu Jan 10 15:03:38 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alberto Garcia X-Patchwork-Id: 10756033 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id E683A13B5 for ; Thu, 10 Jan 2019 15:07:47 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D59DB29129 for ; Thu, 10 Jan 2019 15:07:47 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id C9C9729A23; Thu, 10 Jan 2019 15:07:47 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI autolearn=ham version=3.3.1 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 7931529129 for ; Thu, 10 Jan 2019 15:07:47 +0000 (UTC) Received: from localhost ([127.0.0.1]:45167 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ghbvu-0005kE-Fn for patchwork-qemu-devel@patchwork.kernel.org; Thu, 10 Jan 2019 10:07:46 -0500 Received: from eggs.gnu.org ([209.51.188.92]:46112) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ghbsJ-000323-FD for qemu-devel@nongnu.org; Thu, 10 Jan 2019 10:04:04 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ghbsG-0007O9-Fd for qemu-devel@nongnu.org; Thu, 10 Jan 2019 10:04:03 -0500 Received: from fanzine.igalia.com ([91.117.99.155]:57858) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ghbsF-0007NG-Tk; Thu, 10 Jan 2019 10:04:00 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=igalia.com; s=20170329; h=References:In-Reply-To:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From; bh=2aMwKPnI9IS6rxkTuyf5yBvVNXJewJfksZj5pzl1vHY=; b=m6ObEf27W9eypmNOUfPMK8lJxtTvKlnGoS9X0lzrI9GnlbvVtCXWTvIlcKVxzdy2oaT6yI1+qCV8gWgYIpoCJ6j1iEvJPrxvYnVhw3PgerBNv7puNwqMXwE7bIUZxKGOL2TOMvZRy3vFEoi+4EKc2WKg3zZsdLnfk2E5SzES3BAV6TV/BtdeP1JmcyLiJTPKAwYNd0A6QtPAmVhc6T1jByLhmReLJnr+nv7PY7JMV2g4oYFpNRoLT593dt5EddDgIHayHMXJqf5WkLc077Wfm+A6F2LS7jj0HedTSuB4x3oR+fHL4JiS3bjiDOOB43czvpEJpnUIZ4eMxwNKW0Pynw==; Received: from [194.100.51.2] (helo=perseus.local) by fanzine.igalia.com with esmtpsa (Cipher TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim) id 1ghbsD-0003mW-NT; Thu, 10 Jan 2019 16:03:57 +0100 Received: from berto by perseus.local with local (Exim 4.89) (envelope-from ) id 1ghbry-0002Bk-6u; Thu, 10 Jan 2019 17:03:42 +0200 From: Alberto Garcia To: qemu-devel@nongnu.org Date: Thu, 10 Jan 2019 17:03:38 +0200 Message-Id: <9741b3d123b583ce0abc9f29c9c0abcc89a6aa79.1547132561.git.berto@igalia.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: References: In-Reply-To: References: X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x (no timestamps) [generic] [fuzzy] X-Received-From: 91.117.99.155 Subject: [Qemu-devel] [PATCH 4/6] block: Acquire the AioContext in nvme_realize() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Alberto Garcia , qemu-block@nongnu.org, Max Reitz , Stefan Hajnoczi , Paolo Bonzini Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" X-Virus-Scanned: ClamAV using ClamSMTP Signed-off-by: Alberto Garcia --- hw/block/nvme.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/hw/block/nvme.c b/hw/block/nvme.c index 7c8c63e8f5..72e94aff86 100644 --- a/hw/block/nvme.c +++ b/hw/block/nvme.c @@ -1203,6 +1203,7 @@ static void nvme_realize(PCIDevice *pci_dev, Error **errp) { NvmeCtrl *n = NVME(pci_dev); NvmeIdCtrl *id = &n->id_ctrl; + AioContext *ctx; int i; int64_t bs_size; @@ -1213,20 +1214,23 @@ static void nvme_realize(PCIDevice *pci_dev, Error **errp) return; } + ctx = blk_get_aio_context(n->conf.blk); + aio_context_acquire(ctx); + bs_size = blk_getlength(n->conf.blk); if (bs_size < 0) { error_setg(errp, "could not get backing file size"); - return; + goto out; } if (!n->serial) { error_setg(errp, "serial property not set"); - return; + goto out; } blkconf_blocksizes(&n->conf); if (!blkconf_apply_backend_options(&n->conf, blk_is_read_only(n->conf.blk), false, errp)) { - return; + goto out; } pci_conf = pci_dev->config; @@ -1323,6 +1327,9 @@ static void nvme_realize(PCIDevice *pci_dev, Error **errp) cpu_to_le64(n->ns_size >> id_ns->lbaf[NVME_ID_NS_FLBAS_INDEX(ns->id_ns.flbas)].ds); } + +out: + aio_context_release(ctx); } static void nvme_exit(PCIDevice *pci_dev) From patchwork Thu Jan 10 15:03:39 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alberto Garcia X-Patchwork-Id: 10756039 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id DA47E13B5 for ; Thu, 10 Jan 2019 15:09:38 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id CA3B82987E for ; Thu, 10 Jan 2019 15:09:38 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id BDFC129884; Thu, 10 Jan 2019 15:09:38 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI autolearn=ham version=3.3.1 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 677FF2987E for ; Thu, 10 Jan 2019 15:09:38 +0000 (UTC) Received: from localhost ([127.0.0.1]:45678 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ghbxh-0006uO-NB for patchwork-qemu-devel@patchwork.kernel.org; Thu, 10 Jan 2019 10:09:37 -0500 Received: from eggs.gnu.org ([209.51.188.92]:46108) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ghbsJ-00031u-A2 for qemu-devel@nongnu.org; Thu, 10 Jan 2019 10:04:05 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ghbsG-0007OD-Ff for qemu-devel@nongnu.org; Thu, 10 Jan 2019 10:04:01 -0500 Received: from fanzine.igalia.com ([91.117.99.155]:57859) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ghbsF-0007NB-PQ; Thu, 10 Jan 2019 10:04:00 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=igalia.com; s=20170329; h=References:In-Reply-To:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From; bh=W7LVq02B3oJ0WAICRK2gxqTMWcXU/5rEQ6zaeITmus4=; b=SBFLcEVcbyQBbvQfkSAywFHGme/vSU6jGP0YrXWu1haOdXPEg196F239bOPRCVdXtoX7ChQ9Jz8hJeevAGM8xSwVc/WfHGQ2cm0KVnWfN/r5rFQRbc2cgXEOezajWfnSge7hKtwbpOuSUyQQe+qvh29KyOPwmDgBci/IF07xGt/LkFYBIgPiIyZSUPDwwsPEGwH+U2kNeBPwVcxXr7P2PC3AzlUbxAOUvvpvFD72v02t8tKqx20GLazTjgWNA4IURN0RcxyMlGn2iEeQIsrzWZRT6xOlJoZoIDHz6Yfe6YpXROXankg742kbRGM06Mokt5sBSPziIqrCeflL5Hyb9Q==; Received: from [194.100.51.2] (helo=perseus.local) by fanzine.igalia.com with esmtpsa (Cipher TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim) id 1ghbsD-0003mX-O7; Thu, 10 Jan 2019 16:03:57 +0100 Received: from berto by perseus.local with local (Exim 4.89) (envelope-from ) id 1ghbry-0002Bn-7u; Thu, 10 Jan 2019 17:03:42 +0200 From: Alberto Garcia To: qemu-devel@nongnu.org Date: Thu, 10 Jan 2019 17:03:39 +0200 Message-Id: X-Mailer: git-send-email 2.11.0 In-Reply-To: References: In-Reply-To: References: X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x (no timestamps) [generic] [fuzzy] X-Received-From: 91.117.99.155 Subject: [Qemu-devel] [PATCH 5/6] block: Acquire the AioContext in ide_dev_initfn() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Alberto Garcia , qemu-block@nongnu.org, Max Reitz , Stefan Hajnoczi , Paolo Bonzini Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" X-Virus-Scanned: ClamAV using ClamSMTP Signed-off-by: Alberto Garcia --- hw/ide/qdev.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/hw/ide/qdev.c b/hw/ide/qdev.c index 573b022e1e..f355f2a352 100644 --- a/hw/ide/qdev.c +++ b/hw/ide/qdev.c @@ -160,6 +160,7 @@ static void ide_dev_initfn(IDEDevice *dev, IDEDriveKind kind, Error **errp) { IDEBus *bus = DO_UPCAST(IDEBus, qbus, dev->qdev.parent_bus); IDEState *s = bus->ifs + dev->unit; + AioContext *ctx; int ret; if (!dev->conf.blk) { @@ -174,36 +175,39 @@ static void ide_dev_initfn(IDEDevice *dev, IDEDriveKind kind, Error **errp) } } + ctx = blk_get_aio_context(dev->conf.blk); + aio_context_acquire(ctx); + if (dev->conf.discard_granularity == -1) { dev->conf.discard_granularity = 512; } else if (dev->conf.discard_granularity && dev->conf.discard_granularity != 512) { error_setg(errp, "discard_granularity must be 512 for ide"); - return; + goto out; } blkconf_blocksizes(&dev->conf); if (dev->conf.logical_block_size != 512) { error_setg(errp, "logical_block_size must be 512 for IDE"); - return; + goto out; } if (kind != IDE_CD) { if (!blkconf_geometry(&dev->conf, &dev->chs_trans, 65535, 16, 255, errp)) { - return; + goto out; } } if (!blkconf_apply_backend_options(&dev->conf, kind == IDE_CD, kind != IDE_CD, errp)) { - return; + goto out; } if (ide_init_drive(s, dev->conf.blk, kind, dev->version, dev->serial, dev->model, dev->wwn, dev->conf.cyls, dev->conf.heads, dev->conf.secs, dev->chs_trans, errp) < 0) { - return; + goto out; } if (!dev->version) { @@ -215,6 +219,9 @@ static void ide_dev_initfn(IDEDevice *dev, IDEDriveKind kind, Error **errp) add_boot_device_path(dev->conf.bootindex, &dev->qdev, dev->unit ? "/disk@1" : "/disk@0"); + +out: + aio_context_release(ctx); } static void ide_dev_get_bootindex(Object *obj, Visitor *v, const char *name, From patchwork Thu Jan 10 15:03:40 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alberto Garcia X-Patchwork-Id: 10756013 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 175D013B5 for ; Thu, 10 Jan 2019 15:05:34 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 0752F29960 for ; Thu, 10 Jan 2019 15:05:34 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id EF59A29A23; Thu, 10 Jan 2019 15:05:33 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI autolearn=ham version=3.3.1 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id A7E5129960 for ; Thu, 10 Jan 2019 15:05:33 +0000 (UTC) Received: from localhost ([127.0.0.1]:44589 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ghbtl-0004EG-0O for patchwork-qemu-devel@patchwork.kernel.org; Thu, 10 Jan 2019 10:05:33 -0500 Received: from eggs.gnu.org ([209.51.188.92]:46096) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ghbsH-00030l-C6 for qemu-devel@nongnu.org; Thu, 10 Jan 2019 10:04:02 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ghbsG-0007OW-H1 for qemu-devel@nongnu.org; Thu, 10 Jan 2019 10:04:01 -0500 Received: from fanzine.igalia.com ([91.117.99.155]:57864) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ghbsF-0007ND-TM; Thu, 10 Jan 2019 10:04:00 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=igalia.com; s=20170329; h=References:In-Reply-To:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From; bh=L9HmUY97OyxWpLBVGHyd1eTDvesw+Ee02jTzh2ZhCVw=; b=DVEIxDbQ8sOQc/VwIy/hKGboPcfncvAf190dawMLxCkzOdHd4QQZByTILwsltZ8P1ekDSLmoDOLMNaCM8QXH30oMRyOmngraAe7vZr68hTo7n4HTl0Te5Ykq45/FtRTB5qjWOQ9D9tYwHDrZd1fxr/gLggDRpuZ5/QYr9swaIl3gZELwGyshrVPf07u+zWbsE2XxrlUKOycPJ/rW//F0iICBsaEWib8UN9zBuTvHTMN1YVZnUf8t1t1YFVnNj4WmcY9E/ArYl2sg4/NZ6LHS/lAm3Gq1xpm2/CDCrDBh6/lkgA9OsNG8H2EOVqu+aQ+KdIevu+aOYPCpHIy6uvetYQ==; Received: from [194.100.51.2] (helo=perseus.local) by fanzine.igalia.com with esmtpsa (Cipher TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim) id 1ghbsD-0003mY-O5; Thu, 10 Jan 2019 16:03:57 +0100 Received: from berto by perseus.local with local (Exim 4.89) (envelope-from ) id 1ghbry-0002Bq-9N; Thu, 10 Jan 2019 17:03:42 +0200 From: Alberto Garcia To: qemu-devel@nongnu.org Date: Thu, 10 Jan 2019 17:03:40 +0200 Message-Id: <485e041662e587923855fdc037c88556ce6ea5d1.1547132561.git.berto@igalia.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: References: In-Reply-To: References: X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x (no timestamps) [generic] [fuzzy] X-Received-From: 91.117.99.155 Subject: [Qemu-devel] [PATCH 6/6] block: Acquire the AioContext in usb_msd_storage_realize() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Alberto Garcia , qemu-block@nongnu.org, Max Reitz , Stefan Hajnoczi , Paolo Bonzini Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" X-Virus-Scanned: ClamAV using ClamSMTP Signed-off-by: Alberto Garcia --- hw/usb/dev-storage.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/hw/usb/dev-storage.c b/hw/usb/dev-storage.c index cd5551d94f..fa6e552f0f 100644 --- a/hw/usb/dev-storage.c +++ b/hw/usb/dev-storage.c @@ -593,13 +593,18 @@ static void usb_msd_storage_realize(USBDevice *dev, Error **errp) MSDState *s = USB_STORAGE_DEV(dev); BlockBackend *blk = s->conf.blk; SCSIDevice *scsi_dev; + AioContext *ctx; if (!blk) { error_setg(errp, "drive property not set"); return; } + ctx = blk_get_aio_context(blk); + aio_context_acquire(ctx); blkconf_blocksizes(&s->conf); + aio_context_release(ctx); + if (!blkconf_apply_backend_options(&s->conf, blk_is_read_only(blk), true, errp)) { return;