diff --git a/go.mod b/go.mod index 9f7ec09e46..80d14dfb9a 100644 --- a/go.mod +++ b/go.mod @@ -60,10 +60,10 @@ require ( github.com/jinzhu/copier v0.3.5 github.com/kubernetes-csi/csi-lib-utils v0.6.1 github.com/longhorn/backing-image-manager v1.6.3-dev-20240825.0.20240826130124-80e6f6e95d2c - github.com/longhorn/backupstore v0.0.0-20240823072635-7afd6aa10d3e + github.com/longhorn/backupstore v0.0.0-20240905092550-326b9844e10b github.com/longhorn/go-common-libs v0.0.0-20240821134112-907f57efd48f github.com/longhorn/go-iscsi-helper v0.0.0-20240811043302-df8de353dd58 - github.com/longhorn/go-spdk-helper v0.0.0-20240616091844-5afd86a1d892 + github.com/longhorn/go-spdk-helper v0.0.0-20240902084253-ba8761258885 github.com/longhorn/longhorn-engine v1.6.3-dev-20240825.0.20240826220611-e53cd9a2b741 github.com/longhorn/longhorn-instance-manager v1.6.3-dev-20240825.0.20240826123612-012cacf4f2b6 github.com/longhorn/longhorn-share-manager v1.6.3-dev-20240825 @@ -91,7 +91,7 @@ require ( k8s.io/kubernetes v1.28.5 k8s.io/metrics v0.28.5 k8s.io/mount-utils v0.31.0 - k8s.io/utils v0.0.0-20240821151609-f90d01438635 + k8s.io/utils v0.0.0-20240902221715-702e33fdd3c3 sigs.k8s.io/controller-runtime v0.10.1 ) diff --git a/go.sum b/go.sum index bd9352574f..ae6afdf84d 100644 --- a/go.sum +++ b/go.sum @@ -1047,14 +1047,14 @@ github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de h1:9TO3cAIGXtEhn github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod h1:zAbeS9B/r2mtpb6U+EI2rYA5OAXxsYw6wTamcNW+zcE= github.com/longhorn/backing-image-manager v1.6.3-dev-20240825.0.20240826130124-80e6f6e95d2c h1:mk1uxUoYuq5DiqBaqB/8eZXM1pvsXO2he3J/rGiZJNA= github.com/longhorn/backing-image-manager v1.6.3-dev-20240825.0.20240826130124-80e6f6e95d2c/go.mod h1:f41D/ZuKQngKrumn/I3TYOwwXHYiMkRe+rldzjyCv28= -github.com/longhorn/backupstore v0.0.0-20240823072635-7afd6aa10d3e h1:Kvt/BqiHKaOlTPSM2HFz0VupuQM0laln67rMIDCRYxQ= -github.com/longhorn/backupstore v0.0.0-20240823072635-7afd6aa10d3e/go.mod h1:N4cqNhSs4VUw9aGbO2OfyiIvJL7/L53hUrNiT73UN+U= +github.com/longhorn/backupstore v0.0.0-20240905092550-326b9844e10b h1:S+VuYPFMq235z7A/GaGTlv7P1GaUMBjWFeXE+ihn/CM= +github.com/longhorn/backupstore v0.0.0-20240905092550-326b9844e10b/go.mod h1:N4cqNhSs4VUw9aGbO2OfyiIvJL7/L53hUrNiT73UN+U= github.com/longhorn/go-common-libs v0.0.0-20240821134112-907f57efd48f h1:hjqUs3WVodkzrWwlUMVsnKAlom3uohoNlhZBGLsRvQY= github.com/longhorn/go-common-libs v0.0.0-20240821134112-907f57efd48f/go.mod h1:Qv34svr/msf6XoUwnrltNBTwMhQljbHEhb5ZKWiRdxo= github.com/longhorn/go-iscsi-helper v0.0.0-20240811043302-df8de353dd58 h1:fzLAnCLCecoUnsSYyyo7li5GD17xckyBl/zietxz168= github.com/longhorn/go-iscsi-helper v0.0.0-20240811043302-df8de353dd58/go.mod h1:TobRDCXmF0Ni+jz6+nLJamw3uVu+gNDZoZre1JczGwc= -github.com/longhorn/go-spdk-helper v0.0.0-20240616091844-5afd86a1d892 h1:ph1ZasNZQnztQvUNdTmBpx7GzMx6b5eth07WwO3vVUU= -github.com/longhorn/go-spdk-helper v0.0.0-20240616091844-5afd86a1d892/go.mod h1:dUMQPK0GsY+sX8MEvKR5Yb53uRDErEqMTTKPw26d3go= +github.com/longhorn/go-spdk-helper v0.0.0-20240902084253-ba8761258885 h1:T0IQ9TIVDBm3IYy7ufvxBclxVa4q4c69HgjP0/OlnhY= +github.com/longhorn/go-spdk-helper v0.0.0-20240902084253-ba8761258885/go.mod h1:hoJmEzRBENFMEPqdX7jiEyjWMYMXNDxEXrHfAE99qVg= github.com/longhorn/longhorn-engine v1.6.3-dev-20240825.0.20240826220611-e53cd9a2b741 h1:PilExj2tZ1CVzwBbP+Z2YrKGk0ID25ozTQGphmlXI+Q= github.com/longhorn/longhorn-engine v1.6.3-dev-20240825.0.20240826220611-e53cd9a2b741/go.mod h1:575yxk44byyYhFRNgBjtXZZWr7vrIyHUC1LGL7oJDTc= github.com/longhorn/longhorn-instance-manager v1.6.3-dev-20240825.0.20240826123612-012cacf4f2b6 h1:KHI0N9LJB3f04R3huAz+aAjHwiKNUu6H4Z7kLazHY8U= @@ -2217,8 +2217,8 @@ k8s.io/mount-utils v0.28.5/go.mod h1:ceMAZ+Nzlk8zOwN205YXXGJRGmf1o0/XIwsKnG44p0I k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= k8s.io/utils v0.0.0-20210819203725-bdf08cb9a70a/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= k8s.io/utils v0.0.0-20230406110748-d93618cff8a2/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -k8s.io/utils v0.0.0-20240821151609-f90d01438635 h1:2wThSvJoW/Ncn9TmQEYXRnevZXi2duqHWf5OX9S3zjI= -k8s.io/utils v0.0.0-20240821151609-f90d01438635/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +k8s.io/utils v0.0.0-20240902221715-702e33fdd3c3 h1:b2FmK8YH+QEwq/Sy2uAEhmqL5nPfGYbJOcaqjeYYZoA= +k8s.io/utils v0.0.0-20240902221715-702e33fdd3c3/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= lukechampine.com/uint128 v1.1.1/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= lukechampine.com/uint128 v1.2.0/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= modernc.org/cc/v3 v3.36.0/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= diff --git a/vendor/github.com/longhorn/backupstore/deltablock.go b/vendor/github.com/longhorn/backupstore/deltablock.go index 16c5ad42cc..edb237cd72 100644 --- a/vendor/github.com/longhorn/backupstore/deltablock.go +++ b/vendor/github.com/longhorn/backupstore/deltablock.go @@ -741,7 +741,9 @@ func RestoreDeltaBlockBackup(ctx context.Context, config *DeltaRestoreConfig) er } defer func() { if err != nil { - _ = deltaOps.CloseVolumeDev(volDev) + if _err := deltaOps.CloseVolumeDev(volDev); _err != nil { + logrus.WithError(_err).Warnf("Failed to close volume device %v", volDevName) + } } }() @@ -775,7 +777,10 @@ func RestoreDeltaBlockBackup(ctx context.Context, config *DeltaRestoreConfig) er currentProgress := 0 defer func() { - _ = deltaOps.CloseVolumeDev(volDev) + if _err := deltaOps.CloseVolumeDev(volDev); _err != nil { + logrus.WithError(_err).Warnf("Failed to close volume device %v", volDevName) + } + deltaOps.UpdateRestoreStatus(volDevName, currentProgress, err) if unlockErr := lock.Unlock(); unlockErr != nil { logrus.WithError(unlockErr).Warn("Failed to unlock") @@ -843,8 +848,9 @@ func RestoreDeltaBlockBackupIncrementally(ctx context.Context, config *DeltaRest lastBackupName := config.LastBackupName deltaOps := config.DeltaOps if deltaOps == nil { - return fmt.Errorf("missing DeltaBlockBackupOperations") + return fmt.Errorf("missing DeltaRestoreOperations") } + bsDriver, err := GetBackupStoreDriver(backupURL) if err != nil { return err @@ -894,14 +900,16 @@ func RestoreDeltaBlockBackupIncrementally(ctx context.Context, config *DeltaRest } } - volDev, err := os.Create(volDevName) + volDev, volDevPath, err := deltaOps.OpenVolumeDev(volDevName) if err != nil { - return err + return errors.Wrapf(err, "failed to open volume device %v", volDevName) } defer func() { // make sure to close the device if err != nil { - _ = volDev.Close() + if _err := deltaOps.CloseVolumeDev(volDev); _err != nil { + logrus.WithError(_err).Warnf("Failed to close volume device %v", volDevName) + } } }() @@ -933,10 +941,18 @@ func RestoreDeltaBlockBackupIncrementally(ctx context.Context, config *DeltaRest return err } go func() { - defer volDev.Close() + var err error + finalProgress := 0 + defer func() { + if _err := deltaOps.CloseVolumeDev(volDev); _err != nil { + logrus.WithError(_err).Warnf("Failed to close volume device %v", volDevName) + } + + deltaOps.UpdateRestoreStatus(volDevName, finalProgress, err) + if unlockErr := lock.Unlock(); unlockErr != nil { - logrus.WithError(err).Warn("Failed to unlock") + logrus.WithError(unlockErr).Warn("Failed to unlock") } }() @@ -945,20 +961,20 @@ func RestoreDeltaBlockBackupIncrementally(ctx context.Context, config *DeltaRest // closed. // https://github.com/longhorn/longhorn/issues/2503 // We want to truncate regular files, but not device - if stat.Mode()&os.ModeType == 0 { - log.Debugf("Truncate %v to size %v", volDevName, vol.Size) - if err := volDev.Truncate(vol.Size); err != nil { - deltaOps.UpdateRestoreStatus(volDevName, 0, err) + if stat.Mode().IsRegular() { + log.Infof("Truncate %v to size %v", volDevName, vol.Size) + err = volDev.Truncate(vol.Size) + if err != nil { return } } - if err := performIncrementalRestore(ctx, bsDriver, config, srcVolumeName, volDevName, lastBackup, backup); err != nil { - deltaOps.UpdateRestoreStatus(volDevName, 0, err) + err = performIncrementalRestore(ctx, bsDriver, config, srcVolumeName, volDevPath, lastBackup, backup) + if err != nil { return } - deltaOps.UpdateRestoreStatus(volDevName, PROGRESS_PERCENTAGE_BACKUP_TOTAL, nil) + finalProgress = PROGRESS_PERCENTAGE_BACKUP_TOTAL }() return nil } @@ -1107,7 +1123,7 @@ func restoreBlocks(ctx context.Context, bsDriver BackupStoreDriver, deltaOps Del } func performIncrementalRestore(ctx context.Context, bsDriver BackupStoreDriver, config *DeltaRestoreConfig, - srcVolumeName, volDevName string, lastBackup *Backup, backup *Backup) error { + srcVolumeName, volDevPath string, lastBackup *Backup, backup *Backup) error { var err error concurrentLimit := config.ConcurrentLimit @@ -1119,7 +1135,7 @@ func performIncrementalRestore(ctx context.Context, bsDriver BackupStoreDriver, errorChans := []<-chan error{errChan} for i := 0; i < int(concurrentLimit); i++ { - errorChans = append(errorChans, restoreBlocks(ctx, bsDriver, config.DeltaOps, config.Filename, srcVolumeName, blockChan, progress)) + errorChans = append(errorChans, restoreBlocks(ctx, bsDriver, config.DeltaOps, volDevPath, srcVolumeName, blockChan, progress)) } mergedErrChan := mergeErrorChannels(ctx, errorChans...) diff --git a/vendor/github.com/longhorn/backupstore/lock.go b/vendor/github.com/longhorn/backupstore/lock.go index ee321b62a5..32e7fc0499 100644 --- a/vendor/github.com/longhorn/backupstore/lock.go +++ b/vendor/github.com/longhorn/backupstore/lock.go @@ -29,6 +29,12 @@ const BACKUP_LOCK LockType = 1 const RESTORE_LOCK LockType = 1 const DELETION_LOCK LockType = 2 +type Operation string + +const BackupOperationCreateRestore Operation = "create/restore" +const BackupOperationDelete Operation = "delete" +const BackupOperationUndefined Operation = "undefined" + type FileLock struct { Name string Type LockType @@ -80,6 +86,14 @@ func (lock *FileLock) canAcquire() bool { func (lock *FileLock) Lock() error { lock.mutex.Lock() defer lock.mutex.Unlock() + + operation := BackupOperationUndefined + if lock.Type == BACKUP_LOCK || lock.Type == RESTORE_LOCK { + operation = BackupOperationCreateRestore + } else if lock.Type == DELETION_LOCK { + operation = BackupOperationDelete + } + if lock.Acquired { atomic.AddInt32(&lock.count, 1) _ = saveLock(lock) @@ -107,16 +121,16 @@ func (lock *FileLock) Lock() error { if !lock.canAcquire() { file := getLockFilePath(lock.volume, lock.Name) _ = removeLock(lock) - return fmt.Errorf("failed lock %v type %v acquisition", file, lock.Type) + return fmt.Errorf("failed to acquire lock %v when performing backup %v, please try again later.", file, operation) } file := getLockFilePath(lock.volume, lock.Name) - log.Infof("Acquired lock %v type %v on backupstore", file, lock.Type) + log.Infof("Acquired lock %v for backup %v on backupstore", file, operation) lock.Acquired = true atomic.AddInt32(&lock.count, 1) if err := saveLock(lock); err != nil { _ = removeLock(lock) - return errors.Wrapf(err, "failed to store updated lock %v type %v after acquisition", file, lock.Type) + return errors.Wrapf(err, "failed to store updated lock %v when performing backup %v, please try again later", file, operation) } // enable lock refresh @@ -133,7 +147,7 @@ func (lock *FileLock) Lock() error { if lock.Acquired { if err := saveLock(lock); err != nil { // nothing we can do here, that's why the lock acquisition time is 2x lock refresh interval - log.WithError(err).Warnf("Failed to refresh acquired lock %v type %v", file, lock.Type) + log.WithError(err).Warnf("Failed to refresh acquired lock %v when performing backup %v, please try again later", file, operation) } } lock.mutex.Unlock() diff --git a/vendor/github.com/longhorn/go-spdk-helper/pkg/types/types.go b/vendor/github.com/longhorn/go-spdk-helper/pkg/types/types.go index f717cd9c7a..19e75bf4d1 100644 --- a/vendor/github.com/longhorn/go-spdk-helper/pkg/types/types.go +++ b/vendor/github.com/longhorn/go-spdk-helper/pkg/types/types.go @@ -18,9 +18,13 @@ const ( FrontendSPDKTCPNvmf = "spdk-tcp-nvmf" FrontendSPDKTCPBlockdev = "spdk-tcp-blockdev" + ShallowCopyStateInProgress = "in progress" + ShallowCopyStateComplete = "complete" + ShallowCopyStateError = "error" + DefaultCtrlrLossTimeoutSec = 30 // DefaultReconnectDelaySec can't be more than DefaultFastIoFailTimeoutSec, same for non-default values. - DefaultReconnectDelaySec = 5 + DefaultReconnectDelaySec = 2 DefaultFastIOFailTimeoutSec = 15 // DefaultTransportAckTimeout value is not the timeout second. // The timeout formula is 2^(transport_ack_timeout) msec. diff --git a/vendor/k8s.io/apiserver/pkg/server/config.go b/vendor/k8s.io/apiserver/pkg/server/config.go index 81376538f9..047736e57d 100644 --- a/vendor/k8s.io/apiserver/pkg/server/config.go +++ b/vendor/k8s.io/apiserver/pkg/server/config.go @@ -78,7 +78,6 @@ import ( "k8s.io/component-base/tracing" "k8s.io/klog/v2" openapicommon "k8s.io/kube-openapi/pkg/common" - "k8s.io/kube-openapi/pkg/spec3" "k8s.io/kube-openapi/pkg/validation/spec" "k8s.io/utils/clock" utilsnet "k8s.io/utils/net" @@ -195,7 +194,7 @@ type Config struct { // OpenAPIConfig will be used in generating OpenAPI spec. This is nil by default. Use DefaultOpenAPIConfig for "working" defaults. OpenAPIConfig *openapicommon.Config // OpenAPIV3Config will be used in generating OpenAPI V3 spec. This is nil by default. Use DefaultOpenAPIV3Config for "working" defaults. - OpenAPIV3Config *openapicommon.OpenAPIV3Config + OpenAPIV3Config *openapicommon.Config // SkipOpenAPIInstallation avoids installing the OpenAPI handler if set to true. SkipOpenAPIInstallation bool @@ -609,45 +608,6 @@ func completeOpenAPI(config *openapicommon.Config, version *version.Info) { } } -func completeOpenAPIV3(config *openapicommon.OpenAPIV3Config, version *version.Info) { - if config == nil { - return - } - if config.SecuritySchemes != nil { - // Setup OpenAPI security: all APIs will have the same authentication for now. - config.DefaultSecurity = []map[string][]string{} - keys := []string{} - for k := range config.SecuritySchemes { - keys = append(keys, k) - } - sort.Strings(keys) - for _, k := range keys { - config.DefaultSecurity = append(config.DefaultSecurity, map[string][]string{k: {}}) - } - if config.CommonResponses == nil { - config.CommonResponses = map[int]*spec3.Response{} - } - if _, exists := config.CommonResponses[http.StatusUnauthorized]; !exists { - config.CommonResponses[http.StatusUnauthorized] = &spec3.Response{ - ResponseProps: spec3.ResponseProps{ - Description: "Unauthorized", - }, - } - } - } - // make sure we populate info, and info.version, if not manually set - if config.Info == nil { - config.Info = &spec.Info{} - } - if config.Info.Version == "" { - if version != nil { - config.Info.Version = strings.Split(version.String(), "-")[0] - } else { - config.Info.Version = "unversioned" - } - } -} - // DrainedNotify returns a lifecycle signal of genericapiserver already drained while shutting down. func (c *Config) DrainedNotify() <-chan struct{} { return c.lifecycleSignals.InFlightRequestsDrained.Signaled() @@ -673,7 +633,7 @@ func (c *Config) Complete(informers informers.SharedInformerFactory) CompletedCo } completeOpenAPI(c.OpenAPIConfig, c.Version) - completeOpenAPIV3(c.OpenAPIV3Config, c.Version) + completeOpenAPI(c.OpenAPIV3Config, c.Version) if c.DiscoveryAddresses == nil { c.DiscoveryAddresses = discovery.DefaultAddresses{DefaultAddress: c.ExternalAddress} diff --git a/vendor/k8s.io/apiserver/pkg/server/genericapiserver.go b/vendor/k8s.io/apiserver/pkg/server/genericapiserver.go index e4bf674a62..665f20bebd 100644 --- a/vendor/k8s.io/apiserver/pkg/server/genericapiserver.go +++ b/vendor/k8s.io/apiserver/pkg/server/genericapiserver.go @@ -158,7 +158,7 @@ type GenericAPIServer struct { openAPIConfig *openapicommon.Config // Enable swagger and/or OpenAPI V3 if these configs are non-nil. - openAPIV3Config *openapicommon.OpenAPIV3Config + openAPIV3Config *openapicommon.Config // SkipOpenAPIInstallation indicates not to install the OpenAPI handler // during PrepareRun. @@ -432,7 +432,7 @@ func (s *GenericAPIServer) PrepareRun() preparedGenericAPIServer { if s.openAPIV3Config != nil && !s.skipOpenAPIInstallation { if utilfeature.DefaultFeatureGate.Enabled(features.OpenAPIV3) { s.OpenAPIV3VersionedService = routes.OpenAPI{ - V3Config: s.openAPIV3Config, + Config: s.openAPIV3Config, }.InstallV3(s.Handler.GoRestfulContainer, s.Handler.NonGoRestfulMux) } } diff --git a/vendor/k8s.io/apiserver/pkg/server/routes/openapi.go b/vendor/k8s.io/apiserver/pkg/server/routes/openapi.go index 12c8b1ad91..2819d15760 100644 --- a/vendor/k8s.io/apiserver/pkg/server/routes/openapi.go +++ b/vendor/k8s.io/apiserver/pkg/server/routes/openapi.go @@ -32,8 +32,7 @@ import ( // OpenAPI installs spec endpoints for each web service. type OpenAPI struct { - Config *common.Config - V3Config *common.OpenAPIV3Config + Config *common.Config } // Install adds the SwaggerUI webservice to the given mux. @@ -66,7 +65,7 @@ func (oa OpenAPI) InstallV3(c *restful.Container, mux *mux.PathRecorderMux) *han } for gv, ws := range grouped { - spec, err := builder3.BuildOpenAPISpecFromRoutes(restfuladapter.AdaptWebServices(ws), oa.V3Config) + spec, err := builder3.BuildOpenAPISpecFromRoutes(restfuladapter.AdaptWebServices(ws), oa.Config) if err != nil { klog.Errorf("Failed to build OpenAPI v3 for group %s, %q", gv, err) diff --git a/vendor/k8s.io/utils/strings/slices/slices.go b/vendor/k8s.io/utils/strings/slices/slices.go index 1636dfa740..8e21838f24 100644 --- a/vendor/k8s.io/utils/strings/slices/slices.go +++ b/vendor/k8s.io/utils/strings/slices/slices.go @@ -20,14 +20,21 @@ limitations under the License. // replace "stringslices" if the "slices" package becomes standard. package slices -import goslices "slices" - // Equal reports whether two slices are equal: the same length and all // elements equal. If the lengths are different, Equal returns false. // Otherwise, the elements are compared in index order, and the // comparison stops at the first unequal pair. -// Deprecated: use [slices.Equal] instead. -var Equal = goslices.Equal[[]string, string] +func Equal(s1, s2 []string) bool { + if len(s1) != len(s2) { + return false + } + for i, n := range s1 { + if n != s2[i] { + return false + } + } + return true +} // Filter appends to d each element e of s for which keep(e) returns true. // It returns the modified d. d may be s[:0], in which case the kept @@ -44,14 +51,32 @@ func Filter(d, s []string, keep func(string) bool) []string { } // Contains reports whether v is present in s. -// Deprecated: use [slices.Contains] instead. -var Contains = goslices.Contains[[]string, string] +func Contains(s []string, v string) bool { + return Index(s, v) >= 0 +} // Index returns the index of the first occurrence of v in s, or -1 if // not present. -// Deprecated: use [slices.Index] instead. -var Index = goslices.Index[[]string, string] +func Index(s []string, v string) int { + // "Contains" may be replaced with "Index(s, v) >= 0": + // https://github.com/golang/go/issues/45955#issuecomment-873377947 + for i, n := range s { + if n == v { + return i + } + } + return -1 +} + +// Functions below are not in https://github.com/golang/go/issues/45955 // Clone returns a new clone of s. -// Deprecated: use [slices.Clone] instead. -var Clone = goslices.Clone[[]string, string] +func Clone(s []string) []string { + // https://github.com/go101/go101/wiki/There-is-not-a-perfect-way-to-clone-slices-in-Go + if s == nil { + return nil + } + c := make([]string, len(s)) + copy(c, s) + return c +} diff --git a/vendor/modules.txt b/vendor/modules.txt index 6adaf69e2f..cae4709920 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -231,7 +231,7 @@ github.com/longhorn/backing-image-manager/pkg/meta github.com/longhorn/backing-image-manager/pkg/rpc github.com/longhorn/backing-image-manager/pkg/types github.com/longhorn/backing-image-manager/pkg/util -# github.com/longhorn/backupstore v0.0.0-20240823072635-7afd6aa10d3e +# github.com/longhorn/backupstore v0.0.0-20240905092550-326b9844e10b ## explicit; go 1.22.0 github.com/longhorn/backupstore github.com/longhorn/backupstore/backupbackingimage @@ -258,7 +258,7 @@ github.com/longhorn/go-common-libs/utils github.com/longhorn/go-iscsi-helper/iscsi github.com/longhorn/go-iscsi-helper/types github.com/longhorn/go-iscsi-helper/util -# github.com/longhorn/go-spdk-helper v0.0.0-20240616091844-5afd86a1d892 +# github.com/longhorn/go-spdk-helper v0.0.0-20240902084253-ba8761258885 ## explicit; go 1.22.0 github.com/longhorn/go-spdk-helper/pkg/types # github.com/longhorn/longhorn-engine v1.6.3-dev-20240825.0.20240826220611-e53cd9a2b741 @@ -1520,7 +1520,7 @@ k8s.io/metrics/pkg/client/clientset/versioned/typed/metrics/v1beta1 # k8s.io/mount-utils v0.31.0 => k8s.io/mount-utils v0.28.5 ## explicit; go 1.20 k8s.io/mount-utils -# k8s.io/utils v0.0.0-20240821151609-f90d01438635 +# k8s.io/utils v0.0.0-20240902221715-702e33fdd3c3 ## explicit; go 1.18 k8s.io/utils/buffer k8s.io/utils/clock