From: Kevin Wolf <kwolf@redhat.com>
To: "wangjie (P)" <wangjie88@huawei.com>
Cc: qemu-block@nongnu.org, "Fangyi \(C\)" <eric.fangyi@huawei.com>,
armbru@redhat.com, qemu-devel@nongnu.org,
Paolo Bonzini <pbonzini@redhat.com>,
mreitz@redhat.com
Subject: Re: [Qemu-devel] question:about introduce a new feature named “I/O hang”
Date: Fri, 5 Jul 2019 09:50:53 +0200 [thread overview]
Message-ID: <20190705075053.GA5016@dhcp-200-226.str.redhat.com> (raw)
In-Reply-To: <2b55a1d9-7c4f-c895-95fa-a32a7f63ad07@huawei.com>
Am 04.07.2019 um 17:16 hat wangjie (P) geschrieben:
> Hi, everybody:
>
> I developed a feature named "I/O hang",my intention is to solve the problem
> like that:
> If the backend storage media of VM disk is far-end storage like IPSAN or
> FCSAN, storage net link will always disconnection and
> make I/O requests return EIO to Guest, and the status of filesystem in Guest
> will be read-only, even the link recovered
> after a while, the status of filesystem in Guest will not recover.
The standard solution for this is configuring the guest device with
werror=stop,rerror=stop so that the error is not delivered to the guest,
but the VM is stopped. When you run 'cont', the request is then retried.
> So I developed a feature named "I/O hang" to solve this problem, the
> solution like that:
> when some I/O requests return EIO in backend, "I/O hang" will catch the
> requests in qemu block layer and
> insert the requests to a rehandle queue but not return EIO to Guest, the I/O
> requests in Guest will hang but it does not lead
> Guest filesystem to be read-only, then "I/O hang" will loop to rehandle the
> requests for a period time(ex. 5 second) until the requests
> not return EIO(when backend storage link recovered).
Letting requests hang without stopping the VM risks the guest running
into timeouts and deciding that its disk is broken.
As you say your "hang" and retry logic sits in the block layer, what do
you do when you encounter a bdrv_drain() request?
> In addition to the function as above, "I/O hang" also can sent event to
> libvirt after backend storage status changed.
>
> configure methods:
> 1. "I/O hang" ability can be configured for each disk as a disk attribute.
> 2. "I/O hang" timeout value also can be configured for each disk, when
> storage link not recover in timeout value,
> "I/O hang" will disable rehandle I/O requests and return EIO to Guest.
>
> Are you interested in the feature? I intend to push this feature to qemu
> org, what's your opinion?
Were you aware of werror/rerror? Before we add another mechanism, we
need to be sure how the features compare, that the new mechanism
provides a significant advantage and that we keep code duplication as
low as possible.
Kevin
next prev parent reply other threads:[~2019-07-05 7:52 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-07-04 15:16 [Qemu-devel] question:about introduce a new feature named “I/O hang” wangjie (P)
2019-07-05 7:50 ` Kevin Wolf [this message]
2019-07-08 13:16 ` [Qemu-devel] [Qemu-block] " Maxim Levitsky
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190705075053.GA5016@dhcp-200-226.str.redhat.com \
--to=kwolf@redhat.com \
--cc=armbru@redhat.com \
--cc=eric.fangyi@huawei.com \
--cc=mreitz@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=wangjie88@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).