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)
|
||||
}
|
||||
|
||||
// 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.
|
||||
//
|
||||
// Implements:
|
||||
|
|
|
@ -276,3 +276,55 @@ func TestMdsCommandError(t *testing.T) {
|
|||
assert.NotEqual(t, "", string(info))
|
||||
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