Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 8 additions & 5 deletions resize.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,12 @@ import (
"github.com/diskfs/go-diskfs/sync"
)

type copyData struct {
count int64
err error
// isUnknownFilesystem reports whether err is a *disk.UnknownFilesystemError.
// Use errors.As so the per-instance partition field doesn't matter
// (which it would with errors.Is against a zero-valued instance).
func isUnknownFilesystem(err error) bool {
var u *disk.UnknownFilesystemError
return errors.As(err, &u)
}

// resize performs the actual resize operations on the given disk
Expand Down Expand Up @@ -133,10 +136,10 @@ func copyFilesystems(d *disk.Disk, resizes []partitionResizeTarget) error {
log.Printf("copying data from original partition %d to new partition %d", r.original.number, r.target.number)
fs, err := d.GetFilesystem(r.original.number)
switch {
case err != nil && !errors.Is(err, &disk.UnknownFilesystemError{}):
case err != nil && !isUnknownFilesystem(err):
return fmt.Errorf("failed to get filesystem for partition %s: %v", r.original.label, err)
case err != nil || fs.Type() == filesystem.TypeSquashfs:
log.Printf("partition %d -> %d: performing raw data copy for filesystem type %v", r.original.number, r.target.number, fs.Type())
log.Printf("partition %d -> %d: performing raw data copy", r.original.number, r.target.number)
if err := sync.CopyPartitionRaw(d, r.original.number, r.target.number); err != nil {
return fmt.Errorf("failed to copy raw data for partition %s: %v", r.original.label, err)
}
Expand Down
Loading