Nir Soffer has posted comments on this change.
Change subject: Invalidate filters on HSMs before rescanning extended VG ......................................................................
Patch Set 16:
(1 comment)
.................................................... File vdsm/storage/hsm.py Line 2004: boolean Line 2005: :rtype: dict Line 2006: """ Line 2007: visibility = self.scanDevicesVisibility(guids) Line 2008: lvm.invalidateFilter() getDeviceVisibility is called before engine extends a volume group, to make sure that all hosts see the new physical volume. Here it is likely that the host does not know yet the pv and will discover it using multipath (see scanDeviceVisibility). So getDeviceVisibility already has side effect and has a poor name, but that too late to fix.
When new pv is found, filters must be invalidated, otherwise volume groups that use that pv become partial, because we filter all calls to lvm with the list of known pvs. Having partial vg will cause selftest() to fail and the host will become non-operational.
This should probably be documented in the relevant code. Line 2009: for guid in guids: Line 2010: if visibility[guid]: Line 2011: visibility[guid] = (os.stat('/dev/mapper/' + guid).st_mode & Line 2012: stat.S_IRUSR != 0)