From: 张明富 <zha...@in...> - 2011-11-01 06:59:58
|
Hello friends: I find a problem when I read the source code of MooseFS . In the file mfsmaster/chunks.c there is a function called "chunk_do_jobs" and in the step 7c there is a judge as "if (vc+tdc>=scount && vc<c->goal && tdc>0 && vc+tdc>1)" . My question is : why use the condition "vc+tdc>=scount" and "vc<c->goal" here to restrict deleting the TDVALID chunks ? If there are 100 chunkservers in the pool and I want to remove a chunkserver called node_50 from the pool and there is a copy of a chunk with 2 goal just on node_50 . Now because of the condition "vc+tdc>=scount" the TDVALID chunks can't be deleted by the master forever ! Also the condition "vc<c->goal" is puzzled . Is it a bug ? Or it has some othe purposes ? Also the condition "tdc>0 && vc+tdc>1" is not strict . If I mark node_50 and node_51 for removal at the same time , and the copies of a chunk with 2 goal just on them . Now the number of VALID chunks is 0 and the number of TDVALID chunks is 2 . If use the condition "tdc>0 && vc+tdc>1" then the 2 TDVALID chunks will be deleted and there will be no valid copies for the chunk ! I look forward to your reply . Thanks very much . |