From: levin li <xingke.lwp at taobao.com> v3 --> v4: 1. add some comments 2. move some process_event_request_queue() out of the loops 3. remove check_epoch() and move the code into check_request() levin li (8): sheep: port list_splice_tail_init() from linux kernel sheep: make requests with new epoch sleep until epoch is updated sheep: make gateway to retry when received SD_RES_OLD_NODE_VER recovery: make IO request to wait when recovery is in RW_INIT recovery: make IO request to wait when the requested object is in recovery recovery: clear the object wait queue when new recovery work comes recovery: fix a race condition in recovery sheep: make gateway requests only retry in io_op_done() include/list.h | 9 ++++ include/sheepdog_proto.h | 1 + sheep/group.c | 2 + sheep/recovery.c | 50 +++++++++++++++++--- sheep/sdnet.c | 115 ++++++++++++++++++++++++++++++++-------------- sheep/sheep_priv.h | 5 ++ 6 files changed, 142 insertions(+), 40 deletions(-) -- 1.7.10 |