On Wed, 2021-01-20 at 10:30 +0800, lixiaokeng wrote: > Hi Martin: > Thanks for your reply. > > > > verify_paths() would detect this. We do call verify_paths() in > > coalesce_paths() before calling domap(), but not immediately > > before. > > Perhaps we should move the verify_paths() call down to immediately > > before the domap() call. That would at least minimize the time > > window > > for this race. It's hard to avoid it entirely. The way multipathd > > is > > written, the vecs lock is held all the time during > > coalesce_paths(), > > and thus no uevents can be processed. We could also consider > > calling > > verify_paths() before *and* after domap(). > > Can calling verify_paths() before *and* after domap() deal this > entirely? Probably yes. If you look at update_map(), we do it there until domap() succeeds. Could you try adding a verify_paths() call after domap() in the failure case, before removing the map? I wouldn't go for a retry loop like in update_map() at this point. Martin -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel