From b5bd041bd8c9f0008ea574dca801eabd472be23a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wojciech=20Ma=C5=82ota-W=C3=B3jcik?= <59281144+outofforest@users.noreply.github.com> Date: Mon, 3 Jul 2023 18:59:21 +0200 Subject: [PATCH] Fix references to root directory (#242) --- boot.go | 2 +- go.mod | 2 +- go.sum | 4 ++-- infra/build.go | 2 +- infra/storage/zfs.go | 10 ++++++---- vm.go | 5 ++--- 6 files changed, 13 insertions(+), 12 deletions(-) diff --git a/boot.go b/boot.go index efe0f9e..3cb0bbd 100644 --- a/boot.go +++ b/boot.go @@ -22,7 +22,7 @@ import ( ) func copyKernel(buildMountPoint string, storage config.Storage, buildID types.BuildID) error { - buildBootDir := filepath.Join(buildMountPoint, "root", "boot") + buildBootDir := filepath.Join(buildMountPoint, "boot") return forEachBootMaster(bootPrefix(storage.Root), func(diskMountpoint string) error { kernelDir := filepath.Join(diskMountpoint, "zfs", string(buildID)) if err := os.MkdirAll(kernelDir, 0o755); err != nil { diff --git a/go.mod b/go.mod index 06b92cc..0541d67 100644 --- a/go.mod +++ b/go.mod @@ -16,7 +16,7 @@ require ( github.com/google/uuid v1.3.0 github.com/outofforest/go-zfs/v3 v3.1.14 github.com/outofforest/ioc/v2 v2.5.2 - github.com/outofforest/isolator v0.7.0 + github.com/outofforest/isolator v0.7.1 github.com/outofforest/logger v0.4.0 github.com/outofforest/parallel v0.2.3 github.com/outofforest/run v0.6.0 diff --git a/go.sum b/go.sum index 32ea96a..cb6ffae 100644 --- a/go.sum +++ b/go.sum @@ -29,8 +29,8 @@ github.com/outofforest/go-zfs/v3 v3.1.14 h1:F0MosonFuGwiIotlMVKoMsvAmISnOWOAncev github.com/outofforest/go-zfs/v3 v3.1.14/go.mod h1:H8SgVKbvhso4bQGQMn6P21mFEd3oDOIaBH2w0Bcsu3c= github.com/outofforest/ioc/v2 v2.5.2 h1:4mNzLuzoZTXL/cO0qf1TrSYvejMgbZz5OUhdLzAUbek= github.com/outofforest/ioc/v2 v2.5.2/go.mod h1:yI+FHuHchC/t6nVo3WJ96qEgCXdHQKFI/4wW2/75YcU= -github.com/outofforest/isolator v0.7.0 h1:xlHhWuUI2G/zIWXyynmQQOdreHCcC29o0fGNra8/7k4= -github.com/outofforest/isolator v0.7.0/go.mod h1:02EyC+kX65/xHY0TWHec52JmYLJ8mb+04Cd+Sn2lN5s= +github.com/outofforest/isolator v0.7.1 h1:S8Gk8H0UB8QpiHhrS+qqVWjCVi2icgiffeYDPymz/k0= +github.com/outofforest/isolator v0.7.1/go.mod h1:02EyC+kX65/xHY0TWHec52JmYLJ8mb+04Cd+Sn2lN5s= github.com/outofforest/libexec v0.3.9 h1:KvVLuKDHqpydwNoKm+j36hi9DVPU61X4oHonlZ5cw88= github.com/outofforest/libexec v0.3.9/go.mod h1:J2rUB/m0ER8UNOHd3/UQM55bvh1cbMwhb8gibeF/zyo= github.com/outofforest/logger v0.3.3/go.mod h1:+M5sO17Va9V33t28Qs9VqRQ8bFV501Uhq2PtQY+R3Ms= diff --git a/infra/build.go b/infra/build.go index 6eba758..bf39cc2 100644 --- a/infra/build.go +++ b/infra/build.go @@ -96,7 +96,7 @@ func (b *Builder) build(ctx context.Context, stack map[types.BuildKey]bool, img var path string defer func() { if path != "" { - if err := os.Remove(filepath.Join(path, "root", ".specdir")); err != nil && !os.IsNotExist(err) { + if err := os.Remove(filepath.Join(path, ".specdir")); err != nil && !os.IsNotExist(err) { if retErr == nil { retErr = err } diff --git a/infra/storage/zfs.go b/infra/storage/zfs.go index 84426ed..2c73975 100644 --- a/infra/storage/zfs.go +++ b/infra/storage/zfs.go @@ -102,8 +102,9 @@ func (d *zfsDriver) BuildID(ctx context.Context, buildKey types.BuildKey) (types // CreateEmpty creates blank build func (d *zfsDriver) CreateEmpty(ctx context.Context, imageName string, buildID types.BuildID) (FinalizeFn, string, error) { buildDir := filepath.Join("/", d.config.Root, string(buildID)) + mountPoint := filepath.Join(buildDir, "root") filesystem, err := zfs.CreateFilesystem(ctx, d.config.Root+"/"+string(buildID), zfs.CreateFilesystemOptions{Properties: map[string]string{ - "mountpoint": filepath.Join(buildDir, "root"), + "mountpoint": mountPoint, propertyName: string(must.Bytes(json.Marshal(types.BuildInfo{ BuildID: buildID, Name: imageName, @@ -129,7 +130,7 @@ func (d *zfsDriver) CreateEmpty(ctx context.Context, imageName string, buildID t } _, err := filesystem.Snapshot(ctx, "image") return err - }, buildDir, nil + }, mountPoint, nil } // Clone clones source build to destination build @@ -141,8 +142,9 @@ func (d *zfsDriver) Clone(ctx context.Context, srcBuildID types.BuildID, dstImag properties := dstBuildID.Type().Properties() buildDir := filepath.Join("/", d.config.Root, string(dstBuildID)) + mountPoint := filepath.Join(buildDir, "root") filesystem, err := snapshot.Clone(ctx, d.config.Root+"/"+string(dstBuildID), zfs.CloneOptions{Properties: map[string]string{ - "mountpoint": filepath.Join(buildDir, "root"), + "mountpoint": mountPoint, propertyName: string(must.Bytes(json.Marshal(types.BuildInfo{ BuildID: dstBuildID, BasedOn: srcBuildID, @@ -177,7 +179,7 @@ func (d *zfsDriver) Clone(ctx context.Context, srcBuildID types.BuildID, dstImag } } return nil - }, buildDir, nil + }, mountPoint, nil } // StoreManifest stores manifest of build diff --git a/vm.go b/vm.go index b3c1279..62e88a3 100644 --- a/vm.go +++ b/vm.go @@ -969,7 +969,6 @@ func deployVM( } domainDoc.Metadata = metaLibvirt - rootDir := filepath.Join(mount.Mounted, "root") domainDoc.Devices.Filesystems = append(domainDoc.Devices.Filesystems, libvirtxml.DomainFilesystem{ Driver: &libvirtxml.DomainFilesystemDriver{ Type: "virtiofs", @@ -982,7 +981,7 @@ func deployVM( }, Source: &libvirtxml.DomainFilesystemSource{ Mount: &libvirtxml.DomainFilesystemSourceMount{ - Dir: rootDir, + Dir: mount.Mounted, }, }, Target: &libvirtxml.DomainFilesystemTarget{ @@ -993,7 +992,7 @@ func deployVM( if domainDoc.OS == nil { domainDoc.OS = &libvirtxml.DomainOS{} } - bootDir := filepath.Join(rootDir, "boot") + bootDir := filepath.Join(mount.Mounted, "boot") domainDoc.OS.Kernel = filepath.Join(bootDir, "vmlinuz") domainDoc.OS.Initrd = filepath.Join(bootDir, "initramfs.img") domainDoc.OS.Cmdline = strings.Join(append([]string{"root=virtiofs:root"}, mount.Params...), " ")