[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 2/6] block: Acquire the AioContext in scsi_*_rea
From: |
Kevin Wolf |
Subject: |
Re: [Qemu-devel] [PATCH 2/6] block: Acquire the AioContext in scsi_*_realize() |
Date: |
Fri, 11 Jan 2019 16:14:26 +0100 |
User-agent: |
Mutt/1.10.1 (2018-07-13) |
Am 11.01.2019 um 16:05 hat Alberto Garcia geschrieben:
> On Fri 11 Jan 2019 04:02:13 PM CET, Kevin Wolf wrote:
> >> @@ -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) {
> >
> > This is probably not enough. get_device_type() and
> > scsi_generic_read_device_inquiry() below issue more ioctls (but we
> > need to be careful not to include the scsi_realize() call in the
> > locked section if you take the lock again there).
>
> Hmmm, another alternative is not to take the lock in scsi_realize() and
> take it instead in all the functions that call it (it's 4 or 5).
We touch most of them anyway, so I think it is an option.
Kevin
- [Qemu-devel] [PATCH 0/6] Acquire the AioContext during _realize(), Alberto Garcia, 2019/01/10
- [Qemu-devel] [PATCH 5/6] block: Acquire the AioContext in ide_dev_initfn(), Alberto Garcia, 2019/01/10
- [Qemu-devel] [PATCH 1/6] block: Acquire the AioContext in virtio_blk_device_realize(), Alberto Garcia, 2019/01/10
- Re: [Qemu-devel] [PATCH 0/6] Acquire the AioContext during _realize(), Markus Armbruster, 2019/01/11
- Re: [Qemu-devel] [PATCH 0/6] Acquire the AioContext during _realize(), Kevin Wolf, 2019/01/11