[dm-devel] dm-raid1: Fix to commit pending clear region requests

Jonathan Brassow jbrassow at redhat.com
Thu Apr 5 15:12:31 UTC 2007


 brassow

With the code as it is, it is possible for clear region request to never get flushed at the
end of the life of a mirror.  When deactivating or suspending, the mirror may have issued
clear region requests to the log, but it will never flush them.  This means there will
always be some resync work required when a mirror is activated - even though it may very
well be in-sync.

Always performing the flush doesn't hurt us.  This is because the log keeps track of
any changes that occur.  If there are no changes, the log does not flush to disk.

Index: linux-2.6.21-rc5-mm4/drivers/md/dm-raid1.c
===================================================================
--- linux-2.6.21-rc5-mm4.orig/drivers/md/dm-raid1.c
+++ linux-2.6.21-rc5-mm4/drivers/md/dm-raid1.c
@@ -405,8 +405,7 @@ static void rh_update_states(struct regi
 		mempool_free(reg, rh->region_pool);
 	}
 
-	if (!list_empty(&recovered))
-		rh->log->type->flush(rh->log);
+	rh->log->type->flush(rh->log);
 
 	list_for_each_entry_safe (reg, next, &clean, list)
 		mempool_free(reg, rh->region_pool);





More information about the dm-devel mailing list