diff --git a/cmd/restic/cmd_debug.go b/cmd/restic/cmd_debug.go index 2a9115b19..ac4996b7c 100644 --- a/cmd/restic/cmd_debug.go +++ b/cmd/restic/cmd_debug.go @@ -107,7 +107,7 @@ func printPacks(ctx context.Context, repo *repository.Repository, wr io.Writer) return repo.List(ctx, restic.PackFile, func(id restic.ID, size int64) error { h := restic.Handle{Type: restic.PackFile, Name: id.String()} - blobs, _, err := pack.List(repo.Key(), restic.ReaderAt(ctx, repo.Backend(), h), size) + blobs, _, err := pack.List(repo.Key(), backend.ReaderAt(ctx, repo.Backend(), h), size) if err != nil { Warnf("error for pack %v: %v\n", id.Str(), err) return nil @@ -525,7 +525,7 @@ func examinePack(ctx context.Context, repo restic.Repository, id restic.ID) erro Printf(" ========================================\n") Printf(" inspect the pack itself\n") - blobs, _, err := pack.List(repo.Key(), restic.ReaderAt(ctx, repo.Backend(), h), fi.Size) + blobs, _, err := pack.List(repo.Key(), backend.ReaderAt(ctx, repo.Backend(), h), fi.Size) if err != nil { return fmt.Errorf("pack %v: %v", id.Str(), err) } diff --git a/internal/restic/readerat.go b/internal/backend/readerat.go similarity index 75% rename from internal/restic/readerat.go rename to internal/backend/readerat.go index 1a781c03f..ff2e40393 100644 --- a/internal/restic/readerat.go +++ b/internal/backend/readerat.go @@ -1,4 +1,4 @@ -package restic +package backend import ( "context" @@ -6,12 +6,13 @@ import ( "github.com/restic/restic/internal/debug" "github.com/restic/restic/internal/errors" + "github.com/restic/restic/internal/restic" ) type backendReaderAt struct { ctx context.Context - be Backend - h Handle + be restic.Backend + h restic.Handle } func (brd backendReaderAt) ReadAt(p []byte, offset int64) (n int, err error) { @@ -21,12 +22,12 @@ func (brd backendReaderAt) ReadAt(p []byte, offset int64) (n int, err error) { // ReaderAt returns an io.ReaderAt for a file in the backend. The returned reader // should not escape the caller function to avoid unexpected interactions with the // embedded context -func ReaderAt(ctx context.Context, be Backend, h Handle) io.ReaderAt { +func ReaderAt(ctx context.Context, be restic.Backend, h restic.Handle) io.ReaderAt { return backendReaderAt{ctx: ctx, be: be, h: h} } // ReadAt reads from the backend handle h at the given position. -func ReadAt(ctx context.Context, be Backend, h Handle, offset int64, p []byte) (n int, err error) { +func ReadAt(ctx context.Context, be restic.Backend, h restic.Handle, offset int64, p []byte) (n int, err error) { debug.Log("ReadAt(%v) at %v, len %v", h, offset, len(p)) err = be.Load(ctx, h, len(p), offset, func(rd io.Reader) (ierr error) { diff --git a/internal/pack/pack_test.go b/internal/pack/pack_test.go index 7c8250613..3f7077390 100644 --- a/internal/pack/pack_test.go +++ b/internal/pack/pack_test.go @@ -9,6 +9,7 @@ import ( "io" "testing" + "github.com/restic/restic/internal/backend" "github.com/restic/restic/internal/backend/mem" "github.com/restic/restic/internal/crypto" "github.com/restic/restic/internal/pack" @@ -128,7 +129,7 @@ func TestUnpackReadSeeker(t *testing.T) { handle := restic.Handle{Type: restic.PackFile, Name: id.String()} rtest.OK(t, b.Save(context.TODO(), handle, restic.NewByteReader(packData, b.Hasher()))) - verifyBlobs(t, bufs, k, restic.ReaderAt(context.TODO(), b, handle), packSize) + verifyBlobs(t, bufs, k, backend.ReaderAt(context.TODO(), b, handle), packSize) } func TestShortPack(t *testing.T) { @@ -141,5 +142,5 @@ func TestShortPack(t *testing.T) { handle := restic.Handle{Type: restic.PackFile, Name: id.String()} rtest.OK(t, b.Save(context.TODO(), handle, restic.NewByteReader(packData, b.Hasher()))) - verifyBlobs(t, bufs, k, restic.ReaderAt(context.TODO(), b, handle), packSize) + verifyBlobs(t, bufs, k, backend.ReaderAt(context.TODO(), b, handle), packSize) } diff --git a/internal/repository/repository.go b/internal/repository/repository.go index dc2b86919..ac9537f67 100644 --- a/internal/repository/repository.go +++ b/internal/repository/repository.go @@ -14,6 +14,7 @@ import ( "github.com/cenkalti/backoff/v4" "github.com/klauspost/compress/zstd" "github.com/restic/chunker" + "github.com/restic/restic/internal/backend" "github.com/restic/restic/internal/backend/dryrun" "github.com/restic/restic/internal/cache" "github.com/restic/restic/internal/crypto" @@ -263,7 +264,7 @@ func (r *Repository) LoadBlob(ctx context.Context, t restic.BlobType, id restic. buf = buf[:blob.Length] } - n, err := restic.ReadAt(ctx, r.be, h, int64(blob.Offset), buf) + n, err := backend.ReadAt(ctx, r.be, h, int64(blob.Offset), buf) if err != nil { debug.Log("error loading blob %v: %v", blob, err) lastError = err @@ -793,7 +794,7 @@ func (r *Repository) List(ctx context.Context, t restic.FileType, fn func(restic func (r *Repository) ListPack(ctx context.Context, id restic.ID, size int64) ([]restic.Blob, uint32, error) { h := restic.Handle{Type: restic.PackFile, Name: id.String()} - return pack.List(r.Key(), restic.ReaderAt(ctx, r.Backend(), h), size) + return pack.List(r.Key(), backend.ReaderAt(ctx, r.Backend(), h), size) } // Delete calls backend.Delete() if implemented, and returns an error