mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-23 22:25:25 +00:00
virfile: Handle directories in virFileBindMountDevice()
The @src is not always a file. It may also be a directory (for instance qemuDomainCreateDeviceRecursive() assumes that) - even though it doesn't happen usually. Anyway, mount() can mount only a dir onto a dir and a file onto a file. Signed-off-by: Michal Privoznik <mprivozn@redhat.com> Reviewed-by: Pavel Mores <pmores@redhat.com>
This commit is contained in:
parent
140036237e
commit
ed8c503ae8
@ -3743,8 +3743,17 @@ int
|
||||
virFileBindMountDevice(const char *src,
|
||||
const char *dst)
|
||||
{
|
||||
if (virFileTouch(dst, 0666) < 0)
|
||||
return -1;
|
||||
if (!virFileExists(dst)) {
|
||||
if (virFileIsDir(src)) {
|
||||
if (virFileMakePath(dst) < 0) {
|
||||
virReportSystemError(errno, _("Unable to make dir %s"), dst);
|
||||
return -1;
|
||||
}
|
||||
} else {
|
||||
if (virFileTouch(dst, 0666) < 0)
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
if (mount(src, dst, "none", MS_BIND, NULL) < 0) {
|
||||
virReportSystemError(errno, _("Failed to bind %s on to %s"), src,
|
||||
|
Loading…
Reference in New Issue
Block a user