mirror of https://github.com/ceph/go-ceph
cephfs: add MountWithRoot to implement the root arg to ceph_mount
The existing Mount() method did not provide a way to access the root path argument to ceph_mount. This new function allows the caller to specify an alternate root dir for the mount. Signed-off-by: John Mulligan <jmulligan@redhat.com>
This commit is contained in:
parent
d2e8f936b2
commit
8948b20f5a
|
@ -91,6 +91,17 @@ func (mount *MountInfo) Mount() error {
|
||||||
return getError(ret)
|
return getError(ret)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// MountWithRoot mounts the file system using the path provided for the root of
|
||||||
|
// the mount. This establishes a connection capable of I/O.
|
||||||
|
//
|
||||||
|
// Implements:
|
||||||
|
// int ceph_mount(struct ceph_mount_info *cmount, const char *root);
|
||||||
|
func (mount *MountInfo) MountWithRoot(root string) error {
|
||||||
|
croot := C.CString(root)
|
||||||
|
defer C.free(unsafe.Pointer(croot))
|
||||||
|
return getError(C.ceph_mount(mount.mount, croot))
|
||||||
|
}
|
||||||
|
|
||||||
// Unmount the file system.
|
// Unmount the file system.
|
||||||
//
|
//
|
||||||
// Implements:
|
// Implements:
|
||||||
|
|
|
@ -276,3 +276,55 @@ func TestMdsCommandError(t *testing.T) {
|
||||||
assert.NotEqual(t, "", string(info))
|
assert.NotEqual(t, "", string(info))
|
||||||
assert.Contains(t, string(info), "unparseable JSON")
|
assert.Contains(t, string(info), "unparseable JSON")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestMountWithRoot(t *testing.T) {
|
||||||
|
bMount := fsConnect(t)
|
||||||
|
defer func() {
|
||||||
|
assert.NoError(t, bMount.Unmount())
|
||||||
|
assert.NoError(t, bMount.Release())
|
||||||
|
}()
|
||||||
|
|
||||||
|
dir1 := "/test-mount-with-root"
|
||||||
|
err := bMount.MakeDir(dir1, 0755)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
defer bMount.RemoveDir(dir1)
|
||||||
|
|
||||||
|
sub1 := "/i.was.here"
|
||||||
|
dir2 := dir1 + sub1
|
||||||
|
err = bMount.MakeDir(dir2, 0755)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
defer bMount.RemoveDir(dir2)
|
||||||
|
|
||||||
|
t.Run("withRoot", func(t *testing.T) {
|
||||||
|
mount, err := CreateMount()
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.NotNil(t, mount)
|
||||||
|
defer func() {
|
||||||
|
assert.NoError(t, mount.Unmount())
|
||||||
|
assert.NoError(t, mount.Release())
|
||||||
|
}()
|
||||||
|
|
||||||
|
err = mount.ReadDefaultConfigFile()
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
err = mount.MountWithRoot(dir1)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
err = mount.ChangeDir(sub1)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
})
|
||||||
|
t.Run("badRoot", func(t *testing.T) {
|
||||||
|
mount, err := CreateMount()
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.NotNil(t, mount)
|
||||||
|
defer func() {
|
||||||
|
assert.NoError(t, mount.Release())
|
||||||
|
}()
|
||||||
|
|
||||||
|
err = mount.ReadDefaultConfigFile()
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
err = mount.MountWithRoot("/i-yam-what-i-yam")
|
||||||
|
assert.Error(t, err)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue