Hi As you talked about setting the whole device dirty. The problem is this: When there are no writes pending for a given region, we set the bit in memory, indicating that the region is clean. Some times later (usually while setting another dirty bit in the log), we write the log to disk. Before writing the log, we must flush cache on both mirror legs. (otherwise, we might write some bit as clean while the data is still pending in the disk cache) If this flush fails, the bits in memory are already clean and we don't know which regions may hold unwritten data in the disk cache and which not. So, we must set all regions as dirty. --- If you don't like setting all regions as dirty, we would have to introduce new region state ("no pending writes but possibly unflushed") and introduce new bitmap for regions in this state. I wouldn't like to do it because it is considerable coding overhead, it makes a lot of opportunities for bugs (which are hard to find because failures happen rarely) and the whole effect for the user could be negative --- instead of resyncing the whole array it could introduce a bug that corrupts user's data. BTW, when running with dmeventd, the whole issue is poitless because dmeventd removes failed mirror legs, so it always resyncs when recreating the mirror. Without dmeventd, the mirror is already unsafe and has problems leading to data corruption when failed devices reappear, so resyncing or not-resyncing the whole mirror is probably the least serious thing to worry about. Mikulas -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel