[sheepdog] [PATCH] fix a bug that read_object() fail in recovery

Liu Yuan namei.unix at gmail.com
Wed Jun 20 13:37:01 CEST 2012


On 06/20/2012 07:09 PM, levin li wrote:
> +	pthread_mutex_lock(&sys->rw_object_mutex);
> +	pthread_cond_broadcast(&sys->rw_object_cond);
> +	pthread_mutex_unlock(&sys->rw_object_mutex);
> +

Use condition & mutex is overkill for this corner case and doesn't look
right to me, since epoch is passed down from callers, this means caller
asks read_object() to read exact object of the very *epoch*. We should
honor this semantics or the caller shouldn't pass the epoch down,
otherwise call should do error handling, not read_object() per se as a
generic function.


With further thinking on this problem, I think callers of
read/write/remove_object() family might not necessarily need 'epoch'
parameter and would better forward these requests to gateway code, which
manages retry well in recovery phase.

Thanks,
Yuan



More information about the sheepdog mailing list