[sheepdog-users] Stability problems with kvm using a remote sheepdog volume

MORITA Kazutaka morita.kazutaka at lab.ntt.co.jp
Tue Jun 12 07:04:28 CEST 2012


At Mon, 11 Jun 2012 15:22:44 +0200,
David Douard wrote:
> 
> On 09/06/2012 12:39, David Douard wrote:
> > On 08/06/2012 16:48, MORITA Kazutaka wrote:
> >> On Fri, Jun 8, 2012 at 9:41 PM, David Douard <david.douard at logilab.fr> wrote:
> >>> Hi,
> >>>
> >>> I still have very serious stability problems with kvm when using remote
> >>> sheepdog access.
> >>>
> >>> I filles a bug on github about this:
> >>>
> >>>  https://github.com/collie/sheepdog/issues/26
> >>>
> >>> Are there any other people having similar problems? What can I do to
> >>> identify the problem and try to fix it?
> >> Hi David,
> >>
> > Hi,
> >
> >> I'm working on fixing a race condition in the qemu sheepdog block driver.
> >> I guess you are hitting the same problem.  I've pushed some half baked fixes to
> >>   git://github.com/kazum/qemu.git
> >>
> >> Can you try this tree?
> > I will.
> >
> > Thanks,
> > David
> 
> Humm, spoke a bit too quick.
> 
> The kvm does not segfault any more, but the sheepdog volume generates
> errors (in the guest) when writing. I have many
> 
>   end_request: I/O error, dev vdc, sector 0
> 
> in the syslog of the guest (vdc being the block device served by sheepdog).
> 
> Running "zcav -w",  the guest freezed for a while, and finally produced
> the traceback below.

I updated the qemu tree, can you try again?  I also recommend to
update your sheepdog code to the latest one because a fatal network
I/O problem was fixed last week.

> 
> If I can, I'd like to try to rebuild the kvm binary from the ubuntu
> package, just applying the required patches to fix the race condition.
> Kazataka, can you please point me the strictly required changesets in
> your git repo I must apply as patches?

The required patches are:
  54de366 sheepdog: avoid sleep while traversing pending_list
  3585170 sheepdog: split outstanding list into inflight and pending
  b319e0a sheepdog: create all aio_reqs before sending I/Os
  fead1e7 sheepdog: restart I/O when socket becomes ready in do_co_req()
  72eafcf sheepdog: fix dprintf format strings

But I'm not sure you can apply them cleanly.  I think it is easier to
copy block/sheepdog.c to your source tree.

Thanks,

Kazutaka



More information about the sheepdog-users mailing list