mirror of
git://sourceware.org/git/lvm2.git
synced 2025-01-21 22:04:19 +03:00
74a388cca1
When a VG has multiple PVs, and all those PVs come online at the same time, concurrent pvscans for each PV will all create the individual pvid files, and all will often see the VG is now complete. This causes each of the pvscan commands to think it should activate the VG, so there are multiple activations of the same VG. The vg lock serializes them, and only the first pvscan actually does the activation, but there is still a lot of extra overhead and time used by the other pvscans that attempt to activate the already active VG. This can lead to a backlog of pvscans and timeouts. To fix this, this adds a new /run/lvm/vgs_online/ dir that works like the existing /run/lvm/pvs_online/ dir. Each pvscan that wants to activate a VG will first try to exlusively create the file vgs_online/<vgname>. Only the first pvscan will succeed, and that one will do the VG activation. The other pvscans will find the vgname file exists and will not do the activation step. When a PV goes offline, the vgs_online file for the corresponding VG is removed. This allows the VG to be autoactivated again when the PV comes online again. This requires that the vgname be stored in the pvid files.