On Wed, Jun 03, 2015 at 13:06:58 -0400, John Ferlan wrote: > 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 <[email protected]> > --- > docs/formatstorage.html.in | 7 +++++-- > docs/storage.html.in | 3 ++- > src/storage/storage_backend_fs.c | 29 ++++++++++++++++++++++++----- > 3 files changed, 31 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="since">Since 0.4.1</span></dd> > <dt><code>dir</code></dt> > <dd>Provides the source for pools backed by directories (pool > - type <code>dir</code>), or optionally to select a subdirectory > + types <code>dir</code>, <code>netfs</code>, <code>gluster</code>), > + or optionally to select a subdirectory > within a pool that resembles a filesystem (pool > type <code>gluster</code>). May > only occur once. Contains a single attribute <code>path</code> > - which is the fully qualified path to the backing directory. > + which is the fully qualified path to the backing directory or > + for a <code>netfs</code> pool type using <code>format</code> > + type "cifs", the path to the Samba share without the leading slash. > <span class="since">Since 0.4.1</span></dd> > <dt><code>adapter</code></dt> > <dd>Provides 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="#StorageBackendGluster">gluster</a> pool.) > </li> > <li> > - <code>cifs</code> - use the SMB (samba) or CIFS file system > + <code>cifs</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 337b8d3..6ba698c 100644 > --- a/src/storage/storage_backend_fs.c > +++ b/src/storage/storage_backend_fs.c > @@ -388,6 +388,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);
@cifsfs can be true only if pool->def->type == VIR_STORAGE_POOL_NETFS.
> virCommandPtr cmd = NULL;
> int ret = -1;
> int rc;
> @@ -427,11 +429,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;
> @@ -453,6 +461,17 @@ virStorageBackendFileSystemMount(virStoragePoolObjPtr
> pool)
> "direct-io-mode=1",
> pool->def->target.path,
> NULL);
> + else if (cifsfs)
> + cmd = virCommandNewArgList(MOUNT,
> + "-t",
> + (pool->def->type == VIR_STORAGE_POOL_FS ?
... so the first part of this ternary can't ever be true here.
> +
> virStoragePoolFormatFileSystemTypeToString(pool->def->source.format) :
> +
> virStoragePoolFormatFileSystemNetTypeToString(pool->def->source.format)),
> + src,
> + pool->def->target.path,
> + "-o",
> + "guest",
> + NULL);
> else
> cmd = virCommandNewArgList(MOUNT,
> "-t",
Peter
signature.asc
Description: Digital signature
-- libvir-list mailing list [email protected] https://www.redhat.com/mailman/listinfo/libvir-list
