refactor: Introduce config struct for operations
This commit is contained in:
@@ -76,21 +76,25 @@ var archiveCmd = &cobra.Command{
|
||||
}
|
||||
|
||||
ops := operations.NewOperations(
|
||||
tm.GetWriter,
|
||||
tm.Close,
|
||||
config.BackendConfig{
|
||||
GetWriter: tm.GetWriter,
|
||||
CloseWriter: tm.Close,
|
||||
|
||||
tm.GetReader,
|
||||
tm.Close,
|
||||
GetReader: tm.GetReader,
|
||||
CloseReader: tm.Close,
|
||||
|
||||
tm.GetDrive,
|
||||
tm.Close,
|
||||
|
||||
metadataPersister,
|
||||
GetDrive: tm.GetDrive,
|
||||
CloseDrive: tm.Close,
|
||||
},
|
||||
config.MetadataConfig{
|
||||
Metadata: metadataPersister,
|
||||
},
|
||||
|
||||
config.PipeConfig{
|
||||
Compression: viper.GetString(compressionFlag),
|
||||
Encryption: viper.GetString(encryptionFlag),
|
||||
Signature: viper.GetString(signatureFlag),
|
||||
RecordSize: viper.GetInt(recordSizeFlag),
|
||||
},
|
||||
config.CryptoConfig{
|
||||
Recipient: recipient,
|
||||
@@ -98,8 +102,6 @@ var archiveCmd = &cobra.Command{
|
||||
Password: viper.GetString(passwordFlag),
|
||||
},
|
||||
|
||||
viper.GetInt(recordSizeFlag),
|
||||
|
||||
logging.NewLogger().PrintHeader,
|
||||
)
|
||||
|
||||
|
||||
@@ -63,21 +63,25 @@ var deleteCmd = &cobra.Command{
|
||||
}
|
||||
|
||||
ops := operations.NewOperations(
|
||||
tm.GetWriter,
|
||||
tm.Close,
|
||||
config.BackendConfig{
|
||||
GetWriter: tm.GetWriter,
|
||||
CloseWriter: tm.Close,
|
||||
|
||||
tm.GetReader,
|
||||
tm.Close,
|
||||
GetReader: tm.GetReader,
|
||||
CloseReader: tm.Close,
|
||||
|
||||
tm.GetDrive,
|
||||
tm.Close,
|
||||
|
||||
metadataPersister,
|
||||
GetDrive: tm.GetDrive,
|
||||
CloseDrive: tm.Close,
|
||||
},
|
||||
config.MetadataConfig{
|
||||
Metadata: metadataPersister,
|
||||
},
|
||||
|
||||
config.PipeConfig{
|
||||
Compression: viper.GetString(compressionFlag),
|
||||
Encryption: viper.GetString(encryptionFlag),
|
||||
Signature: viper.GetString(signatureFlag),
|
||||
RecordSize: viper.GetInt(recordSizeFlag),
|
||||
},
|
||||
config.CryptoConfig{
|
||||
Recipient: recipient,
|
||||
@@ -85,8 +89,6 @@ var deleteCmd = &cobra.Command{
|
||||
Password: viper.GetString(passwordFlag),
|
||||
},
|
||||
|
||||
viper.GetInt(recordSizeFlag),
|
||||
|
||||
logging.NewLogger().PrintHeader,
|
||||
)
|
||||
|
||||
|
||||
@@ -59,21 +59,25 @@ var moveCmd = &cobra.Command{
|
||||
}
|
||||
|
||||
ops := operations.NewOperations(
|
||||
tm.GetWriter,
|
||||
tm.Close,
|
||||
config.BackendConfig{
|
||||
GetWriter: tm.GetWriter,
|
||||
CloseWriter: tm.Close,
|
||||
|
||||
tm.GetReader,
|
||||
tm.Close,
|
||||
GetReader: tm.GetReader,
|
||||
CloseReader: tm.Close,
|
||||
|
||||
tm.GetDrive,
|
||||
tm.Close,
|
||||
|
||||
metadataPersister,
|
||||
GetDrive: tm.GetDrive,
|
||||
CloseDrive: tm.Close,
|
||||
},
|
||||
config.MetadataConfig{
|
||||
Metadata: metadataPersister,
|
||||
},
|
||||
|
||||
config.PipeConfig{
|
||||
Compression: viper.GetString(compressionFlag),
|
||||
Encryption: viper.GetString(encryptionFlag),
|
||||
Signature: viper.GetString(signatureFlag),
|
||||
RecordSize: viper.GetInt(recordSizeFlag),
|
||||
},
|
||||
config.CryptoConfig{
|
||||
Recipient: recipient,
|
||||
@@ -81,8 +85,6 @@ var moveCmd = &cobra.Command{
|
||||
Password: viper.GetString(passwordFlag),
|
||||
},
|
||||
|
||||
viper.GetInt(recordSizeFlag),
|
||||
|
||||
logging.NewLogger().PrintHeader,
|
||||
)
|
||||
|
||||
|
||||
@@ -63,21 +63,25 @@ var restoreCmd = &cobra.Command{
|
||||
}
|
||||
|
||||
ops := operations.NewOperations(
|
||||
tm.GetWriter,
|
||||
tm.Close,
|
||||
config.BackendConfig{
|
||||
GetWriter: tm.GetWriter,
|
||||
CloseWriter: tm.Close,
|
||||
|
||||
tm.GetReader,
|
||||
tm.Close,
|
||||
GetReader: tm.GetReader,
|
||||
CloseReader: tm.Close,
|
||||
|
||||
tm.GetDrive,
|
||||
tm.Close,
|
||||
|
||||
metadataPersister,
|
||||
GetDrive: tm.GetDrive,
|
||||
CloseDrive: tm.Close,
|
||||
},
|
||||
config.MetadataConfig{
|
||||
Metadata: metadataPersister,
|
||||
},
|
||||
|
||||
config.PipeConfig{
|
||||
Compression: viper.GetString(compressionFlag),
|
||||
Encryption: viper.GetString(encryptionFlag),
|
||||
Signature: viper.GetString(signatureFlag),
|
||||
RecordSize: viper.GetInt(recordSizeFlag),
|
||||
},
|
||||
config.CryptoConfig{
|
||||
Recipient: recipient,
|
||||
@@ -85,8 +89,6 @@ var restoreCmd = &cobra.Command{
|
||||
Password: viper.GetString(passwordFlag),
|
||||
},
|
||||
|
||||
viper.GetInt(recordSizeFlag),
|
||||
|
||||
logging.NewLogger().PrintHeader,
|
||||
)
|
||||
|
||||
|
||||
@@ -66,21 +66,25 @@ var updateCmd = &cobra.Command{
|
||||
}
|
||||
|
||||
ops := operations.NewOperations(
|
||||
tm.GetWriter,
|
||||
tm.Close,
|
||||
config.BackendConfig{
|
||||
GetWriter: tm.GetWriter,
|
||||
CloseWriter: tm.Close,
|
||||
|
||||
tm.GetReader,
|
||||
tm.Close,
|
||||
GetReader: tm.GetReader,
|
||||
CloseReader: tm.Close,
|
||||
|
||||
tm.GetDrive,
|
||||
tm.Close,
|
||||
|
||||
metadataPersister,
|
||||
GetDrive: tm.GetDrive,
|
||||
CloseDrive: tm.Close,
|
||||
},
|
||||
config.MetadataConfig{
|
||||
Metadata: metadataPersister,
|
||||
},
|
||||
|
||||
config.PipeConfig{
|
||||
Compression: viper.GetString(compressionFlag),
|
||||
Encryption: viper.GetString(encryptionFlag),
|
||||
Signature: viper.GetString(signatureFlag),
|
||||
RecordSize: viper.GetInt(recordSizeFlag),
|
||||
},
|
||||
config.CryptoConfig{
|
||||
Recipient: recipient,
|
||||
@@ -88,8 +92,6 @@ var updateCmd = &cobra.Command{
|
||||
Password: viper.GetString(passwordFlag),
|
||||
},
|
||||
|
||||
viper.GetInt(recordSizeFlag),
|
||||
|
||||
logging.NewLogger().PrintHeader,
|
||||
)
|
||||
|
||||
|
||||
@@ -22,6 +22,17 @@ type DriveConfig struct {
|
||||
DriveIsRegular bool
|
||||
}
|
||||
|
||||
type BackendConfig struct {
|
||||
GetWriter func() (DriveWriterConfig, error)
|
||||
CloseWriter func() error
|
||||
|
||||
GetReader func() (DriveReaderConfig, error)
|
||||
CloseReader func() error
|
||||
|
||||
GetDrive func() (DriveConfig, error)
|
||||
CloseDrive func() error
|
||||
}
|
||||
|
||||
type MetadataConfig struct {
|
||||
Metadata *persisters.MetadataPersister
|
||||
}
|
||||
@@ -30,6 +41,7 @@ type PipeConfig struct {
|
||||
Compression string
|
||||
Encryption string
|
||||
Signature string
|
||||
RecordSize int
|
||||
}
|
||||
|
||||
type CryptoConfig struct {
|
||||
|
||||
@@ -37,13 +37,13 @@ func (o *Operations) Archive(
|
||||
o.diskOperationLock.Lock()
|
||||
defer o.diskOperationLock.Unlock()
|
||||
|
||||
writer, err := o.getWriter()
|
||||
writer, err := o.backend.GetWriter()
|
||||
if err != nil {
|
||||
return []*tar.Header{}, err
|
||||
}
|
||||
|
||||
dirty := false
|
||||
tw, cleanup, err := tarext.NewTapeWriter(writer.Drive, writer.DriveIsRegular, o.recordSize)
|
||||
tw, cleanup, err := tarext.NewTapeWriter(writer.Drive, writer.DriveIsRegular, o.pipes.RecordSize)
|
||||
if err != nil {
|
||||
return []*tar.Header{}, err
|
||||
}
|
||||
@@ -51,7 +51,7 @@ func (o *Operations) Archive(
|
||||
lastIndexedRecord := int64(0)
|
||||
lastIndexedBlock := int64(0)
|
||||
if !overwrite {
|
||||
lastIndexedRecord, lastIndexedBlock, err = o.metadataPersister.GetLastIndexedRecordAndBlock(context.Background(), o.recordSize)
|
||||
lastIndexedRecord, lastIndexedBlock, err = o.metadata.Metadata.GetLastIndexedRecordAndBlock(context.Background(), o.pipes.RecordSize)
|
||||
if err != nil {
|
||||
return []*tar.Header{}, err
|
||||
}
|
||||
@@ -103,7 +103,7 @@ func (o *Operations) Archive(
|
||||
o.pipes.Compression,
|
||||
compressionLevel,
|
||||
writer.DriveIsRegular,
|
||||
o.recordSize,
|
||||
o.pipes.RecordSize,
|
||||
)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -124,7 +124,7 @@ func (o *Operations) Archive(
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
buf := make([]byte, mtio.BlockSize*o.recordSize)
|
||||
buf := make([]byte, mtio.BlockSize*o.pipes.RecordSize)
|
||||
if _, err := io.CopyBuffer(compressor, signer, buf); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -207,7 +207,7 @@ func (o *Operations) Archive(
|
||||
o.pipes.Compression,
|
||||
compressionLevel,
|
||||
writer.DriveIsRegular,
|
||||
o.recordSize,
|
||||
o.pipes.RecordSize,
|
||||
)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -223,7 +223,7 @@ func (o *Operations) Archive(
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
buf := make([]byte, mtio.BlockSize*o.recordSize)
|
||||
buf := make([]byte, mtio.BlockSize*o.pipes.RecordSize)
|
||||
if _, err := io.CopyBuffer(compressor, file, buf); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -259,32 +259,30 @@ func (o *Operations) Archive(
|
||||
index = 0 // If we are starting fresh, index from start
|
||||
}
|
||||
|
||||
if err := o.closeWriter(); err != nil {
|
||||
if err := o.backend.CloseWriter(); err != nil {
|
||||
return []*tar.Header{}, err
|
||||
}
|
||||
|
||||
reader, err := o.getReader()
|
||||
reader, err := o.backend.GetReader()
|
||||
if err != nil {
|
||||
return []*tar.Header{}, err
|
||||
}
|
||||
defer o.closeReader()
|
||||
defer o.backend.CloseReader()
|
||||
|
||||
drive, err := o.getDrive()
|
||||
drive, err := o.backend.GetDrive()
|
||||
if err != nil {
|
||||
return []*tar.Header{}, err
|
||||
}
|
||||
defer o.closeDrive()
|
||||
defer o.backend.CloseDrive()
|
||||
|
||||
return hdrs, recovery.Index(
|
||||
reader,
|
||||
drive,
|
||||
config.MetadataConfig{
|
||||
Metadata: o.metadataPersister,
|
||||
},
|
||||
o.metadata,
|
||||
o.pipes,
|
||||
o.crypto,
|
||||
|
||||
o.recordSize,
|
||||
o.pipes.RecordSize,
|
||||
int(lastIndexedRecord),
|
||||
int(lastIndexedBlock),
|
||||
overwrite,
|
||||
|
||||
@@ -18,24 +18,24 @@ func (o *Operations) Delete(name string) error {
|
||||
o.diskOperationLock.Lock()
|
||||
defer o.diskOperationLock.Unlock()
|
||||
|
||||
writer, err := o.getWriter()
|
||||
writer, err := o.backend.GetWriter()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
dirty := false
|
||||
tw, cleanup, err := tarext.NewTapeWriter(writer.Drive, writer.DriveIsRegular, o.recordSize)
|
||||
tw, cleanup, err := tarext.NewTapeWriter(writer.Drive, writer.DriveIsRegular, o.pipes.RecordSize)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
lastIndexedRecord, lastIndexedBlock, err := o.metadataPersister.GetLastIndexedRecordAndBlock(context.Background(), o.recordSize)
|
||||
lastIndexedRecord, lastIndexedBlock, err := o.metadata.Metadata.GetLastIndexedRecordAndBlock(context.Background(), o.pipes.RecordSize)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
headersToDelete := []*models.Header{}
|
||||
dbhdr, err := o.metadataPersister.GetHeader(context.Background(), name)
|
||||
dbhdr, err := o.metadata.Metadata.GetHeader(context.Background(), name)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -43,7 +43,7 @@ func (o *Operations) Delete(name string) error {
|
||||
|
||||
// If the header refers to a directory, get it's children
|
||||
if dbhdr.Typeflag == tar.TypeDir {
|
||||
dbhdrs, err := o.metadataPersister.GetHeaderChildren(context.Background(), name)
|
||||
dbhdrs, err := o.metadata.Metadata.GetHeaderChildren(context.Background(), name)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -93,32 +93,30 @@ func (o *Operations) Delete(name string) error {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := o.closeWriter(); err != nil {
|
||||
if err := o.backend.CloseWriter(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
reader, err := o.getReader()
|
||||
reader, err := o.backend.GetReader()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer o.closeReader()
|
||||
defer o.backend.CloseReader()
|
||||
|
||||
drive, err := o.getDrive()
|
||||
drive, err := o.backend.GetDrive()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer o.closeDrive()
|
||||
defer o.backend.CloseDrive()
|
||||
|
||||
return recovery.Index(
|
||||
reader,
|
||||
drive,
|
||||
config.MetadataConfig{
|
||||
Metadata: o.metadataPersister,
|
||||
},
|
||||
o.metadata,
|
||||
o.pipes,
|
||||
o.crypto,
|
||||
|
||||
o.recordSize,
|
||||
o.pipes.RecordSize,
|
||||
int(lastIndexedRecord),
|
||||
int(lastIndexedBlock),
|
||||
false,
|
||||
|
||||
@@ -19,24 +19,24 @@ func (o *Operations) Move(from string, to string) error {
|
||||
o.diskOperationLock.Lock()
|
||||
defer o.diskOperationLock.Unlock()
|
||||
|
||||
writer, err := o.getWriter()
|
||||
writer, err := o.backend.GetWriter()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
dirty := false
|
||||
tw, cleanup, err := tarext.NewTapeWriter(writer.Drive, writer.DriveIsRegular, o.recordSize)
|
||||
tw, cleanup, err := tarext.NewTapeWriter(writer.Drive, writer.DriveIsRegular, o.pipes.RecordSize)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
lastIndexedRecord, lastIndexedBlock, err := o.metadataPersister.GetLastIndexedRecordAndBlock(context.Background(), o.recordSize)
|
||||
lastIndexedRecord, lastIndexedBlock, err := o.metadata.Metadata.GetLastIndexedRecordAndBlock(context.Background(), o.pipes.RecordSize)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
headersToMove := []*models.Header{}
|
||||
dbhdr, err := o.metadataPersister.GetHeader(context.Background(), from)
|
||||
dbhdr, err := o.metadata.Metadata.GetHeader(context.Background(), from)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -44,7 +44,7 @@ func (o *Operations) Move(from string, to string) error {
|
||||
|
||||
// If the header refers to a directory, get it's children
|
||||
if dbhdr.Typeflag == tar.TypeDir {
|
||||
dbhdrs, err := o.metadataPersister.GetHeaderChildren(context.Background(), from)
|
||||
dbhdrs, err := o.metadata.Metadata.GetHeaderChildren(context.Background(), from)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -96,32 +96,30 @@ func (o *Operations) Move(from string, to string) error {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := o.closeWriter(); err != nil {
|
||||
if err := o.backend.CloseWriter(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
reader, err := o.getReader()
|
||||
reader, err := o.backend.GetReader()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer o.closeReader()
|
||||
defer o.backend.CloseReader()
|
||||
|
||||
drive, err := o.getDrive()
|
||||
drive, err := o.backend.GetDrive()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer o.closeDrive()
|
||||
defer o.backend.CloseDrive()
|
||||
|
||||
return recovery.Index(
|
||||
reader,
|
||||
drive,
|
||||
config.MetadataConfig{
|
||||
Metadata: o.metadataPersister,
|
||||
},
|
||||
o.metadata,
|
||||
o.pipes,
|
||||
o.crypto,
|
||||
|
||||
o.recordSize,
|
||||
o.pipes.RecordSize,
|
||||
int(lastIndexedRecord),
|
||||
int(lastIndexedBlock),
|
||||
false,
|
||||
|
||||
@@ -4,68 +4,37 @@ import (
|
||||
"sync"
|
||||
|
||||
models "github.com/pojntfx/stfs/internal/db/sqlite/models/metadata"
|
||||
"github.com/pojntfx/stfs/internal/persisters"
|
||||
"github.com/pojntfx/stfs/pkg/config"
|
||||
)
|
||||
|
||||
type Operations struct {
|
||||
getWriter func() (config.DriveWriterConfig, error)
|
||||
closeWriter func() error
|
||||
|
||||
getReader func() (config.DriveReaderConfig, error)
|
||||
closeReader func() error
|
||||
|
||||
getDrive func() (config.DriveConfig, error)
|
||||
closeDrive func() error
|
||||
|
||||
metadataPersister *persisters.MetadataPersister
|
||||
backend config.BackendConfig
|
||||
metadata config.MetadataConfig
|
||||
|
||||
pipes config.PipeConfig
|
||||
crypto config.CryptoConfig
|
||||
|
||||
recordSize int
|
||||
|
||||
onHeader func(hdr *models.Header)
|
||||
|
||||
diskOperationLock sync.Mutex
|
||||
}
|
||||
|
||||
func NewOperations(
|
||||
getWriter func() (config.DriveWriterConfig, error),
|
||||
closeWriter func() error,
|
||||
|
||||
getReader func() (config.DriveReaderConfig, error),
|
||||
closeReader func() error,
|
||||
|
||||
getDrive func() (config.DriveConfig, error),
|
||||
closeDrive func() error,
|
||||
|
||||
metadataPersister *persisters.MetadataPersister,
|
||||
backend config.BackendConfig,
|
||||
metadata config.MetadataConfig,
|
||||
|
||||
pipes config.PipeConfig,
|
||||
crypto config.CryptoConfig,
|
||||
|
||||
recordSize int,
|
||||
|
||||
onHeader func(hdr *models.Header),
|
||||
) *Operations {
|
||||
return &Operations{
|
||||
getWriter: getWriter,
|
||||
closeWriter: closeWriter,
|
||||
|
||||
getReader: getReader,
|
||||
closeReader: closeReader,
|
||||
|
||||
getDrive: getDrive,
|
||||
closeDrive: closeDrive,
|
||||
|
||||
metadataPersister: metadataPersister,
|
||||
backend: backend,
|
||||
metadata: metadata,
|
||||
|
||||
pipes: pipes,
|
||||
crypto: crypto,
|
||||
|
||||
recordSize: recordSize,
|
||||
|
||||
onHeader: onHeader,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,12 +18,12 @@ func (o *Operations) Restore(from string, to string, flatten bool) error {
|
||||
|
||||
headersToRestore := []*models.Header{}
|
||||
src := strings.TrimSuffix(from, "/")
|
||||
dbhdr, err := o.metadataPersister.GetHeader(context.Background(), src)
|
||||
dbhdr, err := o.metadata.Metadata.GetHeader(context.Background(), src)
|
||||
if err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
src = src + "/"
|
||||
|
||||
dbhdr, err = o.metadataPersister.GetHeader(context.Background(), src)
|
||||
dbhdr, err = o.metadata.Metadata.GetHeader(context.Background(), src)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -35,7 +35,7 @@ func (o *Operations) Restore(from string, to string, flatten bool) error {
|
||||
|
||||
// If the header refers to a directory, get it's children
|
||||
if dbhdr.Typeflag == tar.TypeDir {
|
||||
dbhdrs, err := o.metadataPersister.GetHeaderChildren(context.Background(), src)
|
||||
dbhdrs, err := o.metadata.Metadata.GetHeaderChildren(context.Background(), src)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -43,17 +43,17 @@ func (o *Operations) Restore(from string, to string, flatten bool) error {
|
||||
headersToRestore = append(headersToRestore, dbhdrs...)
|
||||
}
|
||||
|
||||
reader, err := o.getReader()
|
||||
reader, err := o.backend.GetReader()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer o.closeReader()
|
||||
defer o.backend.CloseReader()
|
||||
|
||||
drive, err := o.getDrive()
|
||||
drive, err := o.backend.GetDrive()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer o.closeDrive()
|
||||
defer o.backend.CloseDrive()
|
||||
|
||||
for _, dbhdr := range headersToRestore {
|
||||
if o.onHeader != nil {
|
||||
@@ -79,7 +79,7 @@ func (o *Operations) Restore(from string, to string, flatten bool) error {
|
||||
o.pipes,
|
||||
o.crypto,
|
||||
|
||||
o.recordSize,
|
||||
o.pipes.RecordSize,
|
||||
int(dbhdr.Record),
|
||||
int(dbhdr.Block),
|
||||
dst,
|
||||
|
||||
@@ -31,18 +31,18 @@ func (o *Operations) Update(
|
||||
o.diskOperationLock.Lock()
|
||||
defer o.diskOperationLock.Unlock()
|
||||
|
||||
writer, err := o.getWriter()
|
||||
writer, err := o.backend.GetWriter()
|
||||
if err != nil {
|
||||
return []*tar.Header{}, err
|
||||
}
|
||||
|
||||
dirty := false
|
||||
tw, cleanup, err := tarext.NewTapeWriter(writer.Drive, writer.DriveIsRegular, o.recordSize)
|
||||
tw, cleanup, err := tarext.NewTapeWriter(writer.Drive, writer.DriveIsRegular, o.pipes.RecordSize)
|
||||
if err != nil {
|
||||
return []*tar.Header{}, err
|
||||
}
|
||||
|
||||
lastIndexedRecord, lastIndexedBlock, err := o.metadataPersister.GetLastIndexedRecordAndBlock(context.Background(), o.recordSize)
|
||||
lastIndexedRecord, lastIndexedBlock, err := o.metadata.Metadata.GetLastIndexedRecordAndBlock(context.Background(), o.pipes.RecordSize)
|
||||
if err != nil {
|
||||
return []*tar.Header{}, err
|
||||
}
|
||||
@@ -93,7 +93,7 @@ func (o *Operations) Update(
|
||||
o.pipes.Compression,
|
||||
compressionLevel,
|
||||
writer.DriveIsRegular,
|
||||
o.recordSize,
|
||||
o.pipes.RecordSize,
|
||||
)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -114,7 +114,7 @@ func (o *Operations) Update(
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
buf := make([]byte, mtio.BlockSize*o.recordSize)
|
||||
buf := make([]byte, mtio.BlockSize*o.pipes.RecordSize)
|
||||
if _, err := io.CopyBuffer(compressor, signer, buf); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -198,7 +198,7 @@ func (o *Operations) Update(
|
||||
o.pipes.Compression,
|
||||
compressionLevel,
|
||||
writer.DriveIsRegular,
|
||||
o.recordSize,
|
||||
o.pipes.RecordSize,
|
||||
)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -214,7 +214,7 @@ func (o *Operations) Update(
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
buf := make([]byte, mtio.BlockSize*o.recordSize)
|
||||
buf := make([]byte, mtio.BlockSize*o.pipes.RecordSize)
|
||||
if _, err := io.CopyBuffer(compressor, file, buf); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -274,32 +274,30 @@ func (o *Operations) Update(
|
||||
return []*tar.Header{}, err
|
||||
}
|
||||
|
||||
if err := o.closeWriter(); err != nil {
|
||||
if err := o.backend.CloseWriter(); err != nil {
|
||||
return []*tar.Header{}, err
|
||||
}
|
||||
|
||||
reader, err := o.getReader()
|
||||
reader, err := o.backend.GetReader()
|
||||
if err != nil {
|
||||
return []*tar.Header{}, err
|
||||
}
|
||||
defer o.closeReader()
|
||||
defer o.backend.CloseReader()
|
||||
|
||||
drive, err := o.getDrive()
|
||||
drive, err := o.backend.GetDrive()
|
||||
if err != nil {
|
||||
return []*tar.Header{}, err
|
||||
}
|
||||
defer o.closeDrive()
|
||||
defer o.backend.CloseDrive()
|
||||
|
||||
return hdrs, recovery.Index(
|
||||
reader,
|
||||
drive,
|
||||
config.MetadataConfig{
|
||||
Metadata: o.metadataPersister,
|
||||
},
|
||||
o.metadata,
|
||||
o.pipes,
|
||||
o.crypto,
|
||||
|
||||
o.recordSize,
|
||||
o.pipes.RecordSize,
|
||||
int(lastIndexedRecord),
|
||||
int(lastIndexedBlock),
|
||||
false,
|
||||
|
||||
Reference in New Issue
Block a user