Bug 1180084

Summary: Inactive fs pool always autostarts while libvirtd starts up when fs target has been mounted by any source
Product: Red Hat Enterprise Linux 7 Reporter: Yang Yang <yanyang>
Component: libvirtAssignee: Libvirt Maintainers <libvirt-maint>
Status: CLOSED DUPLICATE QA Contact: Virtualization Bugs <virt-bugs>
Severity: medium Docs Contact:
Priority: medium    
Version: 7.1CC: dyuan, jferlan, rbalakri, shyu, xuzhang, ydu
Target Milestone: rc   
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2015-01-12 10:06:45 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Yang Yang 2015-01-08 10:12:00 UTC
Description of problem:
When the fs pool target has been mounted, the inactive fs pool always autostarts while libvirtd starts up. It does not check whether the source /proc/mounts matches the source device in fs pool xml. The pool starts up even though using null as the source device in fs pool config xml.

Version-Release number of selected component (if applicable):
libvirt-1.2.8-12.el7.x86_64

How reproducible:
100%

Steps to Reproduce:
1. Prepare an inactive fs pool
# virsh pool-list --all
 Name                 State      Autostart
-------------------------------------------
fs                   inactive   no

2. # virsh pool-dumpxml fs
<pool type='fs'>
  <name>fs</name>
  <uuid>93709095-8f44-45ad-a2c9-15fc5e2cd410</uuid>
  <capacity unit='bytes'>75125227520</capacity>
  <allocation unit='bytes'>58557726720</allocation>
  <available unit='bytes'>16567500800</available>
  <source>
    <device path='/dev/sdc'/>    OR   <device path=''/>----> here using null as device
    <format type='xfs'/>
  </source>
  <target>
    <path>/tmp/fs</path>
    <permissions>
      <mode>0755</mode>
      <owner>-1</owner>
      <group>-1</group>
    </permissions>
  </target>
</pool>

3. mount a nfs server to /tmp/fs
# mount $ip:/var/lib/libvirt/images/ /tmp/fs
#mount
$ip:/var/lib/libvirt/images on /tmp/fs type nfs4 (rw,relatime,vers=4.0,
rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,port=0,timeo=600,
retrans=2,sec=sys,clientaddr=$ip,local_lock=none,addr=$ip)

4. restart libvirtd
# service libvirtd restart
Redirecting to /bin/systemctl restart  libvirtd.service

# virsh pool-list --all
Name                 State      Autostart
-------------------------------------------
fs                   active     no

Actual Results: 
the fs pool always starts up while libvirtd starts



Expected results:


Additional info:
Following info from Daniel, 
that sounds like libvirt needs todo strict validation before
marking the pool as active. I guess we only check whether the
target directory is present in /proc/mounts. We'll need to add
a check on the source in /proc/mounts too.

Comment 1 Yang Yang 2015-01-12 10:06:45 UTC
Duplicated it to BZ 1025230.

*** This bug has been marked as a duplicate of bug 1025230 ***