refactor: Remove reader and seeker capabilities from Drive interface to prevent incorrect usage as reader

This commit is contained in:
Felix Pojtinger
2022-01-16 22:09:44 +01:00
parent 186d9351f6
commit 932a58d9d0
6 changed files with 35 additions and 26 deletions

View File

@@ -217,13 +217,15 @@ func (f *STFS) Initialize(rootProposal string, rootPerm os.FileMode) (root strin
existingRoot, err := f.metadata.Metadata.GetRootPath(context.Background())
if err == config.ErrNoRootDirectory {
drive, err := f.readOps.GetBackend().GetDrive()
mkdirRoot := func() (string, error) {
if err := f.readOps.GetBackend().CloseDrive(); err != nil {
return "", err
}
if err := f.readOps.GetBackend().CloseReader(); err != nil {
return "", err
}
if f.readOnly {
return "", os.ErrPermission
}
@@ -236,15 +238,18 @@ func (f *STFS) Initialize(rootProposal string, rootPerm os.FileMode) (root strin
return f.metadata.Metadata.GetRootPath(context.Background())
}
drive, err := f.readOps.GetBackend().GetDrive()
if err != nil {
return mkdirRoot()
}
reader, err := f.readOps.GetBackend().GetReader()
if err != nil {
return mkdirRoot()
}
if err := recovery.Index(
config.DriveReaderConfig{
Drive: drive.Drive,
DriveIsRegular: drive.DriveIsRegular,
},
reader,
drive,
f.readOps.GetMetadata(),
f.readOps.GetPipes(),