dedupe errors
This commit is contained in:
parent
d11fa31023
commit
3dcf27d900
1 changed files with 7 additions and 11 deletions
|
@ -118,12 +118,12 @@ func (s *fileStorage) dedupeFiles(ctx context.Context, paths []string) (deduped
|
||||||
|
|
||||||
srcF, err := os.Open(paths[0])
|
srcF, err := os.Open(paths[0])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return deduped, err
|
return deduped, fmt.Errorf("error opening file %s: %w", paths[0], err)
|
||||||
}
|
}
|
||||||
defer srcF.Close()
|
defer srcF.Close()
|
||||||
srcStat, err := srcF.Stat()
|
srcStat, err := srcF.Stat()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return deduped, err
|
return deduped, fmt.Errorf("error stat file %s: %w", paths[0], err)
|
||||||
}
|
}
|
||||||
|
|
||||||
srcFd := int(srcF.Fd())
|
srcFd := int(srcF.Fd())
|
||||||
|
@ -133,12 +133,12 @@ func (s *fileStorage) dedupeFiles(ctx context.Context, paths []string) (deduped
|
||||||
err = unix.Fstatfs(srcFd, &fsStat)
|
err = unix.Fstatfs(srcFd, &fsStat)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
span.RecordError(err)
|
span.RecordError(err)
|
||||||
return deduped, err
|
return deduped, fmt.Errorf("error statfs file %s: %w", paths[0], err)
|
||||||
}
|
}
|
||||||
|
|
||||||
srcHash, err := filehash(srcF)
|
srcHash, err := filehash(srcF)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return deduped, err
|
return deduped, fmt.Errorf("error hashing file %s: %w", paths[0], err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if int64(fsStat.Bsize) > srcSize { // for btrfs it means file in residing in not deduplicatable metadata
|
if int64(fsStat.Bsize) > srcSize { // for btrfs it means file in residing in not deduplicatable metadata
|
||||||
|
@ -162,13 +162,13 @@ func (s *fileStorage) dedupeFiles(ctx context.Context, paths []string) (deduped
|
||||||
|
|
||||||
destF, err := os.OpenFile(dst, os.O_RDWR, os.ModePerm)
|
destF, err := os.OpenFile(dst, os.O_RDWR, os.ModePerm)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return deduped, err
|
return deduped, fmt.Errorf("error opening file %s: %w", dst, err)
|
||||||
}
|
}
|
||||||
defer destF.Close()
|
defer destF.Close()
|
||||||
|
|
||||||
dstHash, err := filehash(destF)
|
dstHash, err := filehash(destF)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return deduped, err
|
return deduped, fmt.Errorf("error hashing file %s: %w", dst, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if srcHash != dstHash {
|
if srcHash != dstHash {
|
||||||
|
@ -199,7 +199,7 @@ func (s *fileStorage) dedupeFiles(ctx context.Context, paths []string) (deduped
|
||||||
|
|
||||||
err = unix.IoctlFileDedupeRange(srcFd, &rng)
|
err = unix.IoctlFileDedupeRange(srcFd, &rng)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return deduped, err
|
return deduped, fmt.Errorf("error calling FIDEDUPERANGE: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
for i := range rng.Info {
|
for i := range rng.Info {
|
||||||
|
@ -223,7 +223,3 @@ func filehash(r io.Reader) ([20]byte, error) {
|
||||||
|
|
||||||
return sha1.Sum(buf), nil
|
return sha1.Sum(buf), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func ptr[D any](v D) *D {
|
|
||||||
return &v
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in a new issue