[sheepdog] [PATCH 3/6] recovery: don't allow tgt_epoch decremented	to 0
    Liu Yuan 
    namei.unix at gmail.com
       
    Tue Mar 26 10:46:22 CET 2013
    
    
  
From: Liu Yuan <tailai.ly at taobao.com>
This will cause troulbe when (epoch=0)--, which will result a very large but
valid epoch to the recovery code and cause trouble.
This is a prepare patch for MD recovery.
Signed-off-by: Liu Yuan <tailai.ly at taobao.com>
---
 sheep/recovery.c |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/sheep/recovery.c b/sheep/recovery.c
index 7388564..d49d1e1 100644
--- a/sheep/recovery.c
+++ b/sheep/recovery.c
@@ -136,7 +136,9 @@ static int do_recover_object(struct recovery_work *rw)
 {
 	struct vnode_info *old;
 	uint64_t oid = rw->oids[rw->done];
-	uint32_t epoch = rw->epoch, tgt_epoch = rw->epoch - 1;
+	uint32_t epoch = rw->epoch,
+		 /* tgt_epoch should not less than 1 */
+		 tgt_epoch = rw->epoch - 1 ? rw->epoch - 1 : 1;
 	int nr_copies, ret, i;
 
 	old = grab_vnode_info(rw->old_vinfo);
-- 
1.7.9.5
    
    
More information about the sheepdog
mailing list