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.

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).

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?


Reply via email to