https://bugzilla.redhat.com/show_bug.cgi?id=1186969
When generating the path to the dir for a CIFS/Samba driver, the code
would generate a source path for the mount using %s:%s while the
mount.cifs expects to see //%s/%s. So check for the cifsfs and
format the source path appropriately.
Additionally, since there is no means to authenticate, the mount
needs a -o guest on the command line in order to anonymously mount
the Samba directory.
Signed-off-by: John Ferlan jfer...@redhat.com
---
docs/formatstorage.html.in | 7 +--
docs/storage.html.in | 3 ++-
src/storage/storage_backend_fs.c | 27 ++-
3 files changed, 29 insertions(+), 8 deletions(-)
diff --git a/docs/formatstorage.html.in b/docs/formatstorage.html.in
index 17558f8..b6f4361 100644
--- a/docs/formatstorage.html.in
+++ b/docs/formatstorage.html.in
@@ -124,11 +124,14 @@
span class=sinceSince 0.4.1/span/dd
dtcodedir/code/dt
ddProvides the source for pools backed by directories (pool
-type codedir/code), or optionally to select a subdirectory
+types codedir/code, codenetfs/code, codegluster/code),
+or optionally to select a subdirectory
within a pool that resembles a filesystem (pool
type codegluster/code). May
only occur once. Contains a single attribute codepath/code
-which is the fully qualified path to the backing directory.
+which is the fully qualified path to the backing directory or
+for a codenetfs/code pool type using codeformat/code
+type cifs, the path to the Samba share without the leading slash.
span class=sinceSince 0.4.1/span/dd
dtcodeadapter/code/dt
ddProvides the source for pools backed by SCSI adapters (pool
diff --git a/docs/storage.html.in b/docs/storage.html.in
index 92e9ae7..0b467d5 100644
--- a/docs/storage.html.in
+++ b/docs/storage.html.in
@@ -291,7 +291,8 @@
the a href=#StorageBackendGlustergluster/a pool.)
/li
li
-codecifs/code - use the SMB (samba) or CIFS file system
+codecifs/code - use the SMB (samba) or CIFS file system.
+The mount will use -o guest to mount the directory anonymously.
/li
/ul
diff --git a/src/storage/storage_backend_fs.c b/src/storage/storage_backend_fs.c
index d2cf470..b751687 100644
--- a/src/storage/storage_backend_fs.c
+++ b/src/storage/storage_backend_fs.c
@@ -426,6 +426,8 @@ virStorageBackendFileSystemMount(virStoragePoolObjPtr pool)
pool-def-source.format == VIR_STORAGE_POOL_NETFS_AUTO);
bool glusterfs = (pool-def-type == VIR_STORAGE_POOL_NETFS
pool-def-source.format ==
VIR_STORAGE_POOL_NETFS_GLUSTERFS);
+bool cifsfs = (pool-def-type == VIR_STORAGE_POOL_NETFS
+ pool-def-source.format == VIR_STORAGE_POOL_NETFS_CIFS);
virCommandPtr cmd = NULL;
int ret = -1;
int rc;
@@ -444,11 +446,17 @@ virStorageBackendFileSystemMount(virStoragePoolObjPtr
pool)
}
if (pool-def-type == VIR_STORAGE_POOL_NETFS) {
-if (virAsprintf(src, %s:%s,
-pool-def-source.hosts[0].name,
-pool-def-source.dir) == -1)
-return -1;
-
+if (pool-def-source.format == VIR_STORAGE_POOL_NETFS_CIFS) {
+if (virAsprintf(src, //%s/%s,
+pool-def-source.hosts[0].name,
+pool-def-source.dir) == -1)
+return -1;
+} else {
+if (virAsprintf(src, %s:%s,
+pool-def-source.hosts[0].name,
+pool-def-source.dir) == -1)
+return -1;
+}
} else {
if (VIR_STRDUP(src, pool-def-source.devices[0].path) 0)
return -1;
@@ -468,6 +476,15 @@ virStorageBackendFileSystemMount(virStoragePoolObjPtr pool)
direct-io-mode=1,
pool-def-target.path,
NULL);
+else if (cifsfs)
+cmd = virCommandNewArgList(MOUNT,
+ -t,
+
virStoragePoolFormatFileSystemNetTypeToString(pool-def-source.format),
+ src,
+ pool-def-target.path,
+ -o,
+ guest,
+ NULL);
else
cmd = virCommandNewArgList(MOUNT,
-t,
--
2.1.0
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list