Maybe this is a decent approach to deal with the problem. First some definitions. T is the target segment to be cleaned, S is the spare segment that valid data is written to, O are other segments that contain indirect blocks I for valid data D in T.
Have two different GC mechanisms to choose between: 1. Regular GC that copies D and I into S. On average D+I should require less space than S can offer. 2. Slow GC only copies D into S. Indirect blocks get modified in-place in O. This variant requires more seeks due to writing in various O, but it guarantees that D always requires less space than S can offer. Whenever you are running out of spare segments and are in danger of the deadlock, switch to mechanism 2. Now your correctness problem is reduced to a performance problem. Jörn -- To recognize individual spam features you have to try to get into the mind of the spammer, and frankly I want to spend as little time inside the minds of spammers as possible. -- Paul Graham - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/