Add /mnt link to mounts

This commit is contained in:
2023-09-29 16:07:34 +02:00
parent 826c381ead
commit 2f1dea86ec
+42 -4
View File
@@ -14,6 +14,7 @@ import (
// Vendors // Vendors
"iscsi" "iscsi"
"util" "util"
"github.com/Sirupsen/logrus" "github.com/Sirupsen/logrus"
"github.com/docker/go-plugins-helpers/volume" "github.com/docker/go-plugins-helpers/volume"
) )
@@ -21,7 +22,7 @@ import (
var iSCSI iscsi.ISCSIPlugin var iSCSI iscsi.ISCSIPlugin
type iscsiVolume struct { type iscsiVolume struct {
Host string Host string
TargetIQN string TargetIQN string
Options []string Options []string
@@ -269,6 +270,7 @@ func (d *iscsiDriver) Capabilities() *volume.CapabilitiesResponse {
// Local Functions // Local Functions
func (d *iscsiDriver) mountVolume(v *iscsiVolume) error { func (d *iscsiDriver) mountVolume(v *iscsiVolume) error {
// Discover iSCSI LUNs // Discover iSCSI LUNs
logrus.Debugf("Discovering %s", v.Host)
err := iSCSI.DiscoverLUNs(v.Host) err := iSCSI.DiscoverLUNs(v.Host)
if err != nil { if err != nil {
return err return err
@@ -276,6 +278,7 @@ func (d *iscsiDriver) mountVolume(v *iscsiVolume) error {
if !iSCSI.TargetLoggedIn(v.TargetIQN) { if !iSCSI.TargetLoggedIn(v.TargetIQN) {
// Login to iSCSI Target // Login to iSCSI Target
logrus.Debugf("Logging in %s", v.TargetIQN)
err = iSCSI.LoginTarget(v.TargetIQN, v.Host) err = iSCSI.LoginTarget(v.TargetIQN, v.Host)
if err != nil { if err != nil {
return err return err
@@ -318,6 +321,7 @@ func (d *iscsiDriver) mountVolume(v *iscsiVolume) error {
device := strings.TrimSuffix(out, "\n") device := strings.TrimSuffix(out, "\n")
// FSCK // FSCK
logrus.Debugf("Checking %s", device)
cmd = "e2fsck -p " + device cmd = "e2fsck -p " + device
out, errMsg = util.ExecuteCommandString(cmd) out, errMsg = util.ExecuteCommandString(cmd)
@@ -330,6 +334,7 @@ func (d *iscsiDriver) mountVolume(v *iscsiVolume) error {
} }
// Mount // Mount
logrus.Debugf("Mounting %s", device)
cmd = "mount -o discard " + device + " " + v.Mountpoint cmd = "mount -o discard " + device + " " + v.Mountpoint
out, errMsg = util.ExecuteCommandString(cmd) out, errMsg = util.ExecuteCommandString(cmd)
@@ -341,14 +346,47 @@ func (d *iscsiDriver) mountVolume(v *iscsiVolume) error {
return err return err
} }
// Get MountPoint
cmd = "chroot /host docker plugin ls --no-trunc | grep volume-iscsi | awk '{print $1;}' | tr -d '\n'"
out, errMsg = util.ExecuteCommandString(cmd)
mountPath := "/opt/docker/system/docker/plugins/" + out + "/propagated-mount/"
mountPoint := strings.Replace(v.Mountpoint, "/var/lib/docker/volumes/", mountPath, -1)
// Link
logrus.Debugf("Linking %s", v.TargetIQN)
cmd = "ln -s " + mountPoint + " /host/mnt/iSCSI_" + v.TargetIQN
out, errMsg = util.ExecuteCommandString(cmd)
if len(out) > 0 {
logrus.Debug(out)
}
if len(errMsg) > 0 {
err := fmt.Errorf("Unable to Link to Mounted Volume: %s", errMsg)
return err
}
return nil return nil
} }
func (d *iscsiDriver) unmountVolume(v *iscsiVolume) error { func (d *iscsiDriver) unmountVolume(v *iscsiVolume) error {
// Unmount // Unlink
cmd := "umount " + v.Mountpoint logrus.Debugf("Unlinking %s", v.TargetIQN)
cmd := "rm -f /host/mnt/iSCSI_" + v.TargetIQN
out, errMsg := util.ExecuteCommandString(cmd) out, errMsg := util.ExecuteCommandString(cmd)
if len(out) > 0 {
logrus.Debug(out)
}
if len(errMsg) > 0 {
err := fmt.Errorf("Unable to Remove Link: %s", errMsg)
logrus.Info(err)
}
// Unmount
logrus.Debugf("Unmounting %s", v.Mountpoint)
cmd = "umount " + v.Mountpoint
out, errMsg = util.ExecuteCommandString(cmd)
if len(out) > 0 { if len(out) > 0 {
logrus.Debug(out) logrus.Debug(out)
} }
@@ -359,6 +397,7 @@ func (d *iscsiDriver) unmountVolume(v *iscsiVolume) error {
if iSCSI.TargetLoggedIn(v.TargetIQN) { if iSCSI.TargetLoggedIn(v.TargetIQN) {
// Logout from iSCSI Target // Logout from iSCSI Target
logrus.Debugf("Logging out %s", v.TargetIQN)
err := iSCSI.LogoutTarget(v.TargetIQN, v.Host) err := iSCSI.LogoutTarget(v.TargetIQN, v.Host)
if err != nil { if err != nil {
return err return err
@@ -380,4 +419,3 @@ func (d *iscsiDriver) saveState() {
logrus.WithField("savestate", d.statePath).Error(err) logrus.WithField("savestate", d.statePath).Error(err)
} }
} }