[sheepdog] [PATCH] sheep: handle recovery request in check_request_in_recovery()
Liu Yuan
namei.unix at gmail.com
Sat Jun 2 17:30:15 CEST 2012
On 06/02/2012 11:24 PM, Christoph Hellwig wrote:
> From looking at a bit more instrumentation the problem is the following:
>
> - the cluster only has nr_copies = 2
> - one zone already went down, leaving only one copy of the object
> - the sheep that has the copy stays is in RW_INIT state for a while
> so we get a SD_RES_OBJ_RECOVERING completion
int is_recoverying_oid(uint64_t oid)
{
.....
if (sd_store->exist(oid)) {
dprintf("the object %" PRIx64 " is already recoverd\n",
oid);
return 0;
}
if (rw->state == RW_INIT)
return 1;
.......
}
So if the object does exist on the targeted node, we
is_recoverying_oid() will return false and we don't get this
SD_RES_OBJ_RECOVERING.
Thanks,
Yuan
More information about the sheepdog
mailing list