github.com/dennwc/btrfs@v0.0.0-20221026161108-3097362dc072/btrfs_h.go (about) 1 package btrfs 2 3 import "strings" 4 5 const maxUint64 = 1<<64 - 1 6 7 const labelSize = 256 8 9 type FeatureFlags uint64 10 11 const ( 12 FeatureCompatROFreeSpaceTree = FeatureFlags(1 << 0) 13 ) 14 15 type IncompatFeatures uint64 16 17 func (f IncompatFeatures) String() string { 18 var s []string 19 for i, name := range incompatFeatureNames { 20 if uint64(f)&uint64(i) != 0 { 21 s = append(s, name) 22 } 23 } 24 return strings.Join(s, ",") 25 } 26 27 var incompatFeatureNames = []string{ 28 "DefaultSubvol", 29 "MixedGroups", 30 "CompressLZO", 31 "CompressLZOv2", 32 "BigMetadata", 33 "ExtendedIRef", 34 "RAID56", 35 "SkinnyMetadata", 36 "NoHoles", 37 } 38 39 const ( 40 FeatureIncompatMixedBackRef = IncompatFeatures(1 << 0) 41 FeatureIncompatDefaultSubvol = IncompatFeatures(1 << 1) 42 FeatureIncompatMixedGroups = IncompatFeatures(1 << 2) 43 FeatureIncompatCompressLZO = IncompatFeatures(1 << 3) 44 45 // Some patches floated around with a second compression method 46 // lets save that incompat here for when they do get in. 47 // Note we don't actually support it, we're just reserving the number. 48 FeatureIncompatCompressLZOv2 = IncompatFeatures(1 << 4) 49 50 // Older kernels tried to do bigger metadata blocks, but the 51 // code was pretty buggy. Lets not let them try anymore. 52 FeatureIncompatBigMetadata = IncompatFeatures(1 << 5) 53 54 FeatureIncompatExtendedIRef = IncompatFeatures(1 << 6) 55 FeatureIncompatRAID56 = IncompatFeatures(1 << 7) 56 FeatureIncompatSkinnyMetadata = IncompatFeatures(1 << 8) 57 FeatureIncompatNoHoles = IncompatFeatures(1 << 9) 58 ) 59 60 // Flags definition for balance. 61 type BalanceFlags uint64 62 63 // Restriper's general type filter. 64 const ( 65 BalanceData = BalanceFlags(1 << 0) 66 BalanceSystem = BalanceFlags(1 << 1) 67 BalanceMetadata = BalanceFlags(1 << 2) 68 69 BalanceMask = (BalanceData | BalanceSystem | BalanceMetadata) 70 71 BalanceForce = BalanceFlags(1 << 3) 72 BalanceResume = BalanceFlags(1 << 4) 73 )