[sheepdog] [PATCH] sheep: add a kill node operation

MORITA Kazutaka morita.kazutaka at lab.ntt.co.jp
Mon Jul 23 06:08:48 CEST 2012


At Fri, 20 Jul 2012 17:12:21 +0000,
Dietmar Maurer wrote:
> 
> after some more thinking, this is also wrong. I would be really great to
> have some documentation about that? How does read/write during recovery
> works exactly.
> 
> I first though we can simply reject reads. For writes, we can reject them
> until we start object recovery. After that point we cache written data (but
> still reject reads). When we have received the whole object we merge with
> write cache. But that is not the way it works?

Sheepdog has two object ID queues for recovery, rw->oids and
rw->prio_oids.  All object IDs accessed from VMs during object
recovery are pushed into a high priority queue (rw->prio_oids).  Sheep
will recover objects in rw->prio_oids first, and after rw->prio_oids
becomes empty, sheep will recover objects in the normal priority queue
(rw->oids).  That's the reason sheep doesn't block I/Os during object
recovery long time.  (Yuan, correct me if I'm wrong.)

I think we cannot delay the recovery of rw->prio_oids but can delay
rw->oids.  It will work something like lazy recovery; objects will be
recovered when they are accessed.

Thanks,

Kazutaka



More information about the sheepdog mailing list