github.com/dennwc/btrfs@v0.0.0-20221026161108-3097362dc072/errors.go (about) 1 package btrfs 2 3 import ( 4 "errors" 5 "fmt" 6 ) 7 8 type ErrNotBtrfs struct { 9 Path string 10 } 11 12 func (e ErrNotBtrfs) Error() string { 13 return fmt.Sprintf("not a btrfs filesystem: %s", e.Path) 14 } 15 16 // Error codes as returned by the kernel 17 type ErrCode int 18 19 func (e ErrCode) Error() string { 20 s, ok := errorString[e] 21 if ok { 22 return s 23 } 24 return fmt.Sprintf("error %d", int(e)) 25 } 26 27 const ( 28 ErrDevRAID1MinNotMet = ErrCode(iota + 1) 29 ErrDevRAID10MinNotMet 30 ErrDevRAID5MinNotMet 31 ErrDevRAID6MinNotMet 32 ErrDevTargetReplace 33 ErrDevMissingNotFound 34 ErrDevOnlyWritable 35 ErrDevExclRunInProgress 36 ) 37 38 var errorString = map[ErrCode]string{ 39 ErrDevRAID1MinNotMet: "unable to go below two devices on raid1", 40 ErrDevRAID10MinNotMet: "unable to go below four devices on raid10", 41 ErrDevRAID5MinNotMet: "unable to go below two devices on raid5", 42 ErrDevRAID6MinNotMet: "unable to go below three devices on raid6", 43 ErrDevTargetReplace: "unable to remove the dev_replace target dev", 44 ErrDevMissingNotFound: "no missing devices found to remove", 45 ErrDevOnlyWritable: "unable to remove the only writeable device", 46 ErrDevExclRunInProgress: "add/delete/balance/replace/resize operation in progress", 47 } 48 49 var ( 50 ErrNotFound = errors.New("not found") 51 errNotImplemented = errors.New("not implemented") 52 )