Ver código fonte

Merge pull request #25316 from cpuguy83/25310_persit_volume_opts

Fix issue reloading mount options on restart
Vincent Demeester 9 anos atrás
pai
commit
2011320fa9
2 arquivos alterados com 18 adições e 1 exclusões
  1. 3 1
      volume/local/local.go
  2. 15 0
      volume/local/local_test.go

+ 3 - 1
volume/local/local.go

@@ -88,7 +88,9 @@ func New(scope string, rootUID, rootGID int) (*Root, error) {
 			path:       r.DataPath(name),
 			path:       r.DataPath(name),
 		}
 		}
 		r.volumes[name] = v
 		r.volumes[name] = v
-		if b, err := ioutil.ReadFile(filepath.Join(name, "opts.json")); err == nil {
+		optsFilePath := filepath.Join(rootDirectory, name, "opts.json")
+		if b, err := ioutil.ReadFile(optsFilePath); err == nil {
+			v.opts = &optsConfig{}
 			if err := json.Unmarshal(b, v.opts); err != nil {
 			if err := json.Unmarshal(b, v.opts); err != nil {
 				return nil, err
 				return nil, err
 			}
 			}

+ 15 - 0
volume/local/local_test.go

@@ -3,6 +3,7 @@ package local
 import (
 import (
 	"io/ioutil"
 	"io/ioutil"
 	"os"
 	"os"
+	"reflect"
 	"runtime"
 	"runtime"
 	"strings"
 	"strings"
 	"testing"
 	"testing"
@@ -246,4 +247,18 @@ func TestCreateWithOpts(t *testing.T) {
 	if !mounted {
 	if !mounted {
 		t.Fatal("expected mount to still be active")
 		t.Fatal("expected mount to still be active")
 	}
 	}
+
+	r, err = New(rootDir, 0, 0)
+	if err != nil {
+		t.Fatal(err)
+	}
+
+	v2, exists := r.volumes["test"]
+	if !exists {
+		t.Fatal("missing volume on restart")
+	}
+
+	if !reflect.DeepEqual(v.opts, v2.opts) {
+		t.Fatal("missing volume options on restart")
+	}
 }
 }