From 087a8e53612bf29aa8b3395710de1aa69c22cd03 Mon Sep 17 00:00:00 2001 From: mudler Date: Wed, 1 Feb 2023 19:27:01 +0100 Subject: [PATCH] mount state depends on custom mounts --- pkg/mount/mount.go | 34 ++++++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/pkg/mount/mount.go b/pkg/mount/mount.go index 9ac1853..859e4a9 100644 --- a/pkg/mount/mount.go +++ b/pkg/mount/mount.go @@ -219,8 +219,34 @@ type State struct { fstabs []*fstab.Mount } +func genOpreferenceName(op, s string) string { + return fmt.Sprintf("%s-%s", op, s) +} + +func genOpreferenceFromMap(op string, m map[string]string) (res []string) { + values := []string{} + for _, n := range m { + values = append(values, n) + } + + res = genOpreference(op, values) + return +} +func genOpreference(op string, s []string) (res []string) { + for _, n := range s { + res = append(res, genOpreferenceName(op, n)) + } + return +} + +const ( + opCustomMounts = "custom-mount" +) + func (s *State) Register(g *herd.Graph) error { + // TODO: add, hooks, fstab, systemd compat + g.Add("discover-mount", herd.WithDeps("mount-cos-state"), herd.WithCallback( @@ -277,7 +303,8 @@ func (s *State) Register(g *herd.Graph) error { // custom mounts TODO: disk/path for id, mountpoint := range s.CustomMounts { - g.Add("mount-custom", + g.Add( + genOpreferenceName(opCustomMounts, mountpoint), herd.WithCallback( s.MountOP( id, @@ -291,8 +318,11 @@ func (s *State) Register(g *herd.Graph) error { } // mount state + // mount state is defined over a custom mount (/usr/local/.state for instance, needs to be mounted over a device) for _, p := range s.BindMounts { - g.Add("mount-state", + g.Add( + genOpreferenceName("mount-state", p), + herd.WithDeps(genOpreferenceFromMap(opCustomMounts, s.CustomMounts)...), herd.WithCallback( func(ctx context.Context) error { op, err := mountBind(p, s.Rootdir, "/usr/local/.state")