On 12/16/2015 08:44 AM, Ján Tomko wrote:
On Wed, Dec 16, 2015 at 07:46:18AM -0500, John Ferlan wrote:
>
>
> On 12/16/2015 07:02 AM, Ján Tomko wrote:
>> On Mon, Dec 07, 2015 at 03:47:58PM -0500, John Ferlan wrote:
>>>
https://bugzilla.redhat.com/show_bug.cgi?id=1025230
>>>
>>> Add a new helper virStorageBackendLogicalMatchPoolSource to compare the
>>> pool's source name against the output from a 'pvs' command to
list all
>>> volume group physical volume data on the host. In addition, compare the
>>> pool's source device list against the particular volume group's
device
>>> list to ensure the source device(s) listed for the pool match what the
>>> was listed for the volume group.
>>>
>>> Then for pool startup or check API's we need to call this new API in
>>> order to ensure that the pool we're about to start or declare active
>>> during checkPool has a valid definition vs. the running host.
>>>
>>
>> This patch breaks starting of logical pools with no source devices.
>>
>> Jan
>>
>
> Not enough information for me to go on... Can you provide sample XML
> that works prior to the change? From just your description I assume you
> mean:
>
> <source>
> <name>xxx</name>
> <format type='lvm2'/>
> </source>
>
In my case it's:
<source>
<name>vg</name>
<format type='unknown'/>
</source>
<target>
<path>/dev/vg</path>
...
</target>
(Also, if the vg_name matches the pool name, the whole <source> element
can be omitted)
So the check should be "if provided", then also check that...
I'll send a patch shortly.
> instead of having a
>
> <device path='/dev/sde'/>
>
> As the source device
>
> Without a source device how would pool-build work (vgcreate)?
It would not, and pool-build is the only time when the list of physical
volumes is required.
Libvirt also uses the list for pool-delete, but this is IMO a bug,
considering that we do not keep this list up to date and it could end up
calling pvremove on PVs that are no longer a part of that VG.
Thinking about it some more, the point of LVM is to abstract from the
physical volumes, so I do not think we should burden the user with the
task of updating the pool's XML every time the underlying PVs change
(i.e. the USB hard drives were plugged in in a different order).
Instead of logging a warning / rejecting the pool, could we update the
source devices list on pool refresh?
I don't see why not, but that seems to be a different/separate issue -
would also involve a write of the changed XML (to at least the running
cache area).
John
Jan