Bug 608092
Summary: | Libvirt not resolving symlinks correctly, resulting in failed access to relative paths | ||
---|---|---|---|
Product: | Red Hat Enterprise Linux 6 | Reporter: | Matěj Cepl <mcepl> |
Component: | libvirt | Assignee: | Eric Blake <eblake> |
Status: | CLOSED CURRENTRELEASE | QA Contact: | Virtualization Bugs <virt-bugs> |
Severity: | medium | Docs Contact: | |
Priority: | low | ||
Version: | 6.0 | CC: | berrange, dallan, dyuan, hbrock, mbroz, mjenner, xen-maint |
Target Milestone: | rc | ||
Target Release: | 6.0 | ||
Hardware: | All | ||
OS: | Linux | ||
Whiteboard: | |||
Fixed In Version: | libvirt-0_8_1-12_el6 | Doc Type: | Bug Fix |
Doc Text: | Story Points: | --- | |
Clone Of: | Environment: | ||
Last Closed: | 2010-11-11 14:50:07 UTC | Type: | --- |
Regression: | --- | Mount Type: | --- |
Documentation: | --- | CRM: | |
Verified Versions: | Category: | --- | |
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
Cloudforms Team: | --- | Target Upstream Version: | |
Embargoed: |
Description
Matěj Cepl
2010-06-25 16:18:57 UTC
This error message is coming from the SELinux security driver restore method if (virFileResolveLink(path, &newpath) < 0) { VIR_WARN("cannot resolve symlink %s: %s", path, virStrerror(errno, ebuf, sizeof(ebuf))); goto err; } if (stat(newpath, &buf) != 0) { VIR_WARN("cannot stat %s: %s", newpath, virStrerror(errno, ebuf, sizeof(ebuf))); goto err; } So for some reason virFileResolveLink("/dev/vg_bradford/lv_tikanga") is returning "../dm-3" instead of "/dev/dm-3" This code just calls gnulib's areadlink(), so either there's a bug in that function, or we need to manually canonicalize the path to make it absolute instead of relative. This request was evaluated by Red Hat Product Management for inclusion in a Red Hat Enterprise Linux major release. Product Management has requested further review of this request by Red Hat Engineering, for potential inclusion in a Red Hat Enterprise Linux Major release. This request is not yet committed for inclusion. areadlink() intentionally returns relative paths (it is a thin wrapper around readlink(2), which does likewise), so if libvirt needs an absolute path, it needs to do manual canonicalization after the fact. libvirt-0_8_1-12_el6 has been built in RHEL-6-candidate with the fix. Dave Hi, MCepl I cannot reproduce the bug with libvirt-0.8.1-10.el6 and kernel-2.6.32-37.el6.x86_64. There must be some missing in my steps, could you help to check it ? # modprobe -v -r vhost # ll /dev/lv_pool/lv_test lrwxrwxrwx. 1 root root 7 Jul 1 18:21 /dev/lv_pool/lv_test -> ../dm-0 add lv_test as the second disk to guest, start guest successfully, when I shutdown the guest, only the following warning shown in /var/log/messages but not error: Jul 1 18:16:36 dhcp-66-70-43 libvirtd: 18:16:36.632: warning : SELinuxRestoreSecurityFileLabel:372 : cannot stat ../dm-0: No such file or directory ** No warning output with libvirt-0.8.1-13.el6. dyuan - it may be that you are seeing a warning rather than an error because you used a second disk. At any rate, the warning is evidence of the bug; since it disappeared in -13, you have demonstrated that the bug was fixed. (In reply to comment #9) > dyuan - it may be that you are seeing a warning rather than an error because > you used a second disk. At any rate, the warning is evidence of the bug; since > it disappeared in -13, you have demonstrated that the bug was fixed. Ah, Thanks very much:-) Red Hat Enterprise Linux 6.0 is now available and should resolve the problem described in this bug report. This report is therefore being closed with a resolution of CURRENTRELEASE. You may reopen this bug report if the solution does not work for you. |