Il 27/07/2012 17:26, Eric Blake ha scritto: > On 07/24/2012 05:04 AM, Paolo Bonzini wrote: >> Error management is important for mirroring; otherwise, an error on the >> target (even something as "innocent" as ENOSPC) requires to start again >> with a full copy. Similar to on_read_error/on_write_error, two separate >> knobs are provided for on_source_error (reads) and on_target_error (writes). >> The default is 'report' for both. >> >> The 'ignore' policy will leave the sector dirty, so that it will be >> retried later. Thus, it will not cause corruption. > > How frequently will the dirty sector be retried when the policy is > 'ignore'? Are we going to be causing a denial-of-service by repeatedly > retrying the sector until the user does something about the error event?
A lot. It is definitely the "I know what I'm doing" kind of option. The usecase I had in mind was a network backend that had some kind of timeout-and-reconnect option, so that you know all failing operations will take at least a few seconds. Paolo >> +++ b/qapi-schema.json >> @@ -1389,17 +1389,27 @@ >> # (all the disk, only the sectors allocated in the topmost image, or >> # only new I/O). >> # >> +# @on-source-error: #optional the action to take on an error on the source, >> +# default 'report'. 'stop' and 'enospc' can only be used >> +# if the block device supports io-status (see BlockInfo). >> +# >> +# @on-target-error: #optional the action to take on an error on the target, >> +# default 'report' (no limitations, since this applies to >> +# a different block device than @device). >> +# >> # Returns: nothing on success >> # If @device is not a valid block device, DeviceNotFound >> # If @target can't be opened, OpenFileFailed >> # If @format is invalid, InvalidBlockFormat >> +# If @on_source_error is not supported, InvalidParameter > > s/_/-/g >