diff --git a/docs/formatstorage.html.in b/docs/formatstorage.html.in index 17558f87be..b6f43613ee 100644 --- a/docs/formatstorage.html.in +++ b/docs/formatstorage.html.in @@ -124,11 +124,14 @@ Since 0.4.1
dir
Provides the source for pools backed by directories (pool - type dir), or optionally to select a subdirectory + types dir, netfs, gluster), + or optionally to select a subdirectory within a pool that resembles a filesystem (pool type gluster). May only occur once. Contains a single attribute path - which is the fully qualified path to the backing directory. + which is the fully qualified path to the backing directory or + for a netfs pool type using format + type "cifs", the path to the Samba share without the leading slash. Since 0.4.1
adapter
Provides the source for pools backed by SCSI adapters (pool diff --git a/docs/storage.html.in b/docs/storage.html.in index 92e9ae7b59..0b467d586d 100644 --- a/docs/storage.html.in +++ b/docs/storage.html.in @@ -291,7 +291,8 @@ the gluster pool.)
  • - cifs - use the SMB (samba) or CIFS file system + cifs - use the SMB (samba) or CIFS file system. + The mount will use "-o guest" to mount the directory anonymously.
  • diff --git a/src/storage/storage_backend_fs.c b/src/storage/storage_backend_fs.c index d2cf470f48..b751687291 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",