Hi Stefan, On 2021/2/23 17:40, Stefan Hajnoczi wrote: > On Fri, Feb 05, 2021 at 06:13:06PM +0800, Jiahui Cen wrote: >> This patch series propose to extend the werror=/rerror= mechanism to add >> a 'retry' feature. It can automatically retry failed I/O requests on error >> without sending error back to guest, and guest can get back running smoothly >> when I/O is recovred. > > This patch series implements a retry followed by werror/rerror=report > after a timeout. This mechanism could be made more generic (and the code > could be simplified) by removing the new werror/rerror=retry action and > instead implementing the retry/timeout followed by *any* werror=/rerror= > policy chosen by the user. > > In other words, if the retry interval is non-zero, retry the request and > check for timeouts. When the timeout is reached, obey the > werror=/rerror= action. > > This is more flexible than hard-coding werror=retry to mean retry > timeout followed by werror=report. > > For example: > > werror=stop,write-retry-interval=1000,write-retry-timeout=15000, > rerror=report,read-retry-interval=1000,read-retry-timeout=15000 > > Failed write requests will be retried once a second for 15 seconds. > If the timeout is reached the guest is stopped. > > Failed read requests will be retried once a second for 15 seconds. If > the timeout is reached the error is reported to the guest.
Sounds like a better way for me. I'll refactor this patch series under your suggestion. Also thanks for your review. Thanks, Jiahui