Merge pull request #6291 from ningmingxiao/dev1

fix when kernel version < 4.13rc1 by using index=off cause test error
This commit is contained in:
Michael Crosby 2021-12-20 14:24:54 -05:00 committed by GitHub
commit 653f2f1ce4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 8 deletions

View File

@ -107,13 +107,6 @@ func NewSnapshotter(root string, opts ...Opt) (snapshots.Snapshotter, error) {
if err := os.Mkdir(filepath.Join(root, "snapshots"), 0700); err != nil && !os.IsExist(err) { if err := os.Mkdir(filepath.Join(root, "snapshots"), 0700); err != nil && !os.IsExist(err) {
return nil, err return nil, err
} }
// figure out whether "index=off" option is recognized by the kernel
var indexOff bool
if _, err = os.Stat("/sys/module/overlay/parameters/index"); err == nil {
indexOff = true
}
// figure out whether "userxattr" option is recognized by the kernel && needed // figure out whether "userxattr" option is recognized by the kernel && needed
userxattr, err := overlayutils.NeedsUserXAttr(root) userxattr, err := overlayutils.NeedsUserXAttr(root)
if err != nil { if err != nil {
@ -125,7 +118,7 @@ func NewSnapshotter(root string, opts ...Opt) (snapshots.Snapshotter, error) {
ms: ms, ms: ms,
asyncRemove: config.asyncRemove, asyncRemove: config.asyncRemove,
upperdirLabel: config.upperdirLabel, upperdirLabel: config.upperdirLabel,
indexOff: indexOff, indexOff: supportsIndex(),
userxattr: userxattr, userxattr: userxattr,
}, nil }, nil
} }
@ -572,3 +565,11 @@ func (o *snapshotter) workPath(id string) string {
func (o *snapshotter) Close() error { func (o *snapshotter) Close() error {
return o.ms.Close() return o.ms.Close()
} }
// supportsIndex checks whether the "index=off" option is supported by the kernel.
func supportsIndex() bool {
if _, err := os.Stat("/sys/module/overlay/parameters/index"); err == nil {
return true
}
return false
}

View File

@ -178,6 +178,9 @@ func testOverlayOverlayMount(t *testing.T, newSnapshotter testsuite.SnapshotterF
expected := []string{ expected := []string{
"index=off", "index=off",
} }
if !supportsIndex() {
expected = expected[1:]
}
if userxattr, err := overlayutils.NeedsUserXAttr(root); err != nil { if userxattr, err := overlayutils.NeedsUserXAttr(root); err != nil {
t.Fatal(err) t.Fatal(err)
} else if userxattr { } else if userxattr {
@ -346,7 +349,11 @@ func testOverlayView(t *testing.T, newSnapshotter testsuite.SnapshotterFunc) {
t.Errorf("mount source should be overlay but received %q", m.Source) t.Errorf("mount source should be overlay but received %q", m.Source)
} }
supportsIndex := supportsIndex()
expectedOptions := 2 expectedOptions := 2
if !supportsIndex {
expectedOptions--
}
userxattr, err := overlayutils.NeedsUserXAttr(root) userxattr, err := overlayutils.NeedsUserXAttr(root)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
@ -361,6 +368,9 @@ func testOverlayView(t *testing.T, newSnapshotter testsuite.SnapshotterFunc) {
lowers := getParents(ctx, o, root, "/tmp/view2") lowers := getParents(ctx, o, root, "/tmp/view2")
expected = fmt.Sprintf("lowerdir=%s:%s", lowers[0], lowers[1]) expected = fmt.Sprintf("lowerdir=%s:%s", lowers[0], lowers[1])
optIdx := 1 optIdx := 1
if !supportsIndex {
optIdx--
}
if userxattr { if userxattr {
optIdx++ optIdx++
} }