From 83e533086ba2050dd0a94dbae87f8dfcef3917ba Mon Sep 17 00:00:00 2001 From: "zhuangbowei.zbw" Date: Thu, 13 Jun 2024 17:49:01 +0800 Subject: [PATCH] convertor: option to disable sparse file Signed-off-by: zhuangbowei.zbw --- cmd/convertor/builder/builder.go | 4 ++++ cmd/convertor/builder/overlaybd_builder.go | 6 +++++- cmd/convertor/main.go | 3 +++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/cmd/convertor/builder/builder.go b/cmd/convertor/builder/builder.go index 6dd76009..f6db7a8d 100644 --- a/cmd/convertor/builder/builder.go +++ b/cmd/convertor/builder/builder.go @@ -66,6 +66,9 @@ type BuilderOptions struct { // ConcurrencyLimit limits the number of manifests that can be built at once // 0 means no limit ConcurrencyLimit int + + // disable sparse file when converting overlaybd + DisableSprase bool } type graphBuilder struct { @@ -248,6 +251,7 @@ func (b *graphBuilder) buildOne(ctx context.Context, src v1.Descriptor, tag bool switch b.Engine { case Overlaybd: engine = NewOverlayBDBuilderEngine(engineBase) + engine.(*overlaybdBuilderEngine).disableSprase = b.DisableSprase case TurboOCI: engine = NewTurboOCIBuilderEngine(engineBase) } diff --git a/cmd/convertor/builder/overlaybd_builder.go b/cmd/convertor/builder/overlaybd_builder.go index 09a8c4f1..485fd3f2 100644 --- a/cmd/convertor/builder/overlaybd_builder.go +++ b/cmd/convertor/builder/overlaybd_builder.go @@ -51,6 +51,7 @@ type overlaybdConvertResult struct { type overlaybdBuilderEngine struct { *builderEngineBase + disableSprase bool overlaybdConfig *sn.OverlayBDBSConfig overlaybdLayers []overlaybdConvertResult } @@ -427,7 +428,10 @@ func (e *overlaybdBuilderEngine) getLayerDir(idx int) string { } func (e *overlaybdBuilderEngine) create(ctx context.Context, dir string, mkfs bool, vsizeGB int) error { - opts := []string{"-s", fmt.Sprintf("%d", vsizeGB)} + opts := []string{fmt.Sprintf("%d", vsizeGB)} + if !e.disableSprase { + opts = append(opts, "-s") + } if mkfs { opts = append(opts, "--mkfs") logrus.Infof("mkfs for baselayer, vsize: %d GB", vsizeGB) diff --git a/cmd/convertor/main.go b/cmd/convertor/main.go index b2e47962..f1dbb2a1 100644 --- a/cmd/convertor/main.go +++ b/cmd/convertor/main.go @@ -48,6 +48,7 @@ var ( dbstr string dbType string concurrencyLimit int + disableSprase bool // certification certDirs []string @@ -104,6 +105,7 @@ Version: ` + commitID, NoUpload: noUpload, DumpManifest: dumpManifest, ConcurrencyLimit: concurrencyLimit, + DisableSprase: disableSprase, } if overlaybd != "" { logrus.Info("building [Overlaybd - Native] image...") @@ -165,6 +167,7 @@ func init() { rootCmd.Flags().StringVar(&dbstr, "db-str", "", "db str for overlaybd conversion") rootCmd.Flags().StringVar(&dbType, "db-type", "", "type of db to use for conversion deduplication. Available: mysql. Default none") rootCmd.Flags().IntVar(&concurrencyLimit, "concurrency-limit", 4, "the number of manifests that can be built at the same time, used for multi-arch images, 0 means no limit") + rootCmd.Flags().BoolVar(&disableSprase, "disable-sparse", false, "disable sparse file for overlaybd") // certification rootCmd.Flags().StringArrayVar(&certDirs, "cert-dir", nil, "In these directories, root CA should be named as *.crt and client cert should be named as *.cert, *.key")