v1.11.0
ADDED: * fsutils: better/additional fsattrs functionality * paths: highly filterable filesystem searching
This commit is contained in:
127
fsutils/consts_lin.go
Normal file
127
fsutils/consts_lin.go
Normal file
@@ -0,0 +1,127 @@
|
||||
package fsutils
|
||||
|
||||
/*
|
||||
https://github.com/torvalds/linux/blob/master/include/uapi/linux/fs.h "Inode flags (FS_IOC_GETFLAGS / FS_IOC_SETFLAGS)"
|
||||
Up to date as of Linux 6.12-rc7.
|
||||
*/
|
||||
const (
|
||||
SecureDelete fsAttr = 1 << iota // Secure deletion
|
||||
UnDelete // Undelete
|
||||
CompressFile // Compress file
|
||||
SyncUpdate // Synchronous updates
|
||||
Immutable // Immutable file
|
||||
AppendOnly // Writes to file may only append
|
||||
NoDumpFile // Do not dump file
|
||||
NoUpdateAtime // Do not update atime
|
||||
IsDirty // Nobody knows what this does, lol.
|
||||
CompressedClusters // One or more compressed clusters
|
||||
NoCompress // Don't compress
|
||||
EncFile // Encrypted file
|
||||
BtreeFmt // Btree format dir
|
||||
AfsDir // AFS directory
|
||||
ReservedExt3 // Reserved for ext3
|
||||
NoMergeTail // File tail should not be merged
|
||||
DirSync // dirsync behaviour (directories only)
|
||||
DirTop // Top of directory hierarchies
|
||||
ReservedExt4a // Reserved for ext4
|
||||
Extents // Extents
|
||||
VerityProtected // Verity-protected inode
|
||||
LargeEaInode // Inode used for large EA
|
||||
ReservedExt4b // Reserved for ext4
|
||||
NoCOWFile // Do not cow file
|
||||
_ // (Unused)
|
||||
DAX // Inode is DAX
|
||||
_ // (Unused)
|
||||
_ // (Unused)
|
||||
ReservedExt4c // Reserved for ext4
|
||||
UseParentProjId // Create with parents projid
|
||||
CaseInsensitive // Folder is case-insensitive
|
||||
ReservedExt2 // Reserved for ext2 lib
|
||||
)
|
||||
|
||||
// These are the same value. For some reason.
|
||||
const (
|
||||
HashIdxDir fsAttr = BtreeFmt // Hash-indexed directory
|
||||
)
|
||||
|
||||
var (
|
||||
// AttrNameValueMap contains a mapping of attribute names (as designated by this package) to their flag values.
|
||||
AttrNameValueMap map[string]fsAttr = map[string]fsAttr{
|
||||
"SecureDelete": SecureDelete,
|
||||
"UnDelete": UnDelete,
|
||||
"CompressFile": CompressFile,
|
||||
"SyncUpdate": SyncUpdate,
|
||||
"Immutable": Immutable,
|
||||
"AppendOnly": AppendOnly,
|
||||
"NoDumpFile": NoDumpFile,
|
||||
"NoUpdateAtime": NoUpdateAtime,
|
||||
"IsDirty": IsDirty,
|
||||
"CompressedClusters": CompressedClusters,
|
||||
"NoCompress": NoCompress,
|
||||
"EncFile": EncFile,
|
||||
"BtreeFmt": BtreeFmt,
|
||||
"HashIdxDir": HashIdxDir,
|
||||
"AfsDir": AfsDir,
|
||||
"ReservedExt3": ReservedExt3,
|
||||
"NoMergeTail": NoMergeTail,
|
||||
"DirSync": DirSync,
|
||||
"DirTop": DirTop,
|
||||
"ReservedExt4a": ReservedExt4a,
|
||||
"Extents": Extents,
|
||||
"VerityProtected": VerityProtected,
|
||||
"LargeEaInode": LargeEaInode,
|
||||
"ReservedExt4b": ReservedExt4b,
|
||||
"NoCOWFile": NoCOWFile,
|
||||
"DAX": DAX,
|
||||
"ReservedExt4c": ReservedExt4c,
|
||||
"UseParentProjId": UseParentProjId,
|
||||
"CaseInsensitive": CaseInsensitive,
|
||||
"ReservedExt2": ReservedExt2,
|
||||
}
|
||||
|
||||
/*
|
||||
AttrValueNameMap contains a mapping of attribute flags to their names (as designated by this package).
|
||||
Note the oddball here, BtreeFmt and HashIdxDir are actually the same value, so their string value is unpredictable.
|
||||
*/
|
||||
AttrValueNameMap map[fsAttr]string = invertMap(AttrNameValueMap)
|
||||
|
||||
// KernelNameValueMap allows lookups using the symbol name as used in the Linux kernel source.
|
||||
KernelNameValueMap map[string]fsAttr = map[string]fsAttr{
|
||||
"FS_SECRM_FL": SecureDelete,
|
||||
"FS_UNRM_FL": UnDelete,
|
||||
"FS_COMPR_FL": CompressFile,
|
||||
"FS_SYNC_FL": SyncUpdate,
|
||||
"FS_IMMUTABLE_FL": Immutable,
|
||||
"FS_APPEND_FL": AppendOnly,
|
||||
"FS_NODUMP_FL": NoDumpFile,
|
||||
"FS_NOATIME_FL": NoUpdateAtime,
|
||||
"FS_DIRTY_FL": IsDirty,
|
||||
"FS_COMPRBLK_FL": CompressedClusters,
|
||||
"FS_NOCOMP_FL": NoCompress,
|
||||
"FS_ENCRYPT_FL": EncFile,
|
||||
"FS_BTREE_FL": BtreeFmt,
|
||||
"FS_INDEX_FL": HashIdxDir,
|
||||
"FS_IMAGIC_FL": AfsDir,
|
||||
"FS_JOURNAL_DATA_FL": ReservedExt3,
|
||||
"FS_NOTAIL_FL": NoMergeTail,
|
||||
"FS_DIRSYNC_FL": DirSync,
|
||||
"FS_TOPDIR_FL": DirTop,
|
||||
"FS_HUGE_FILE_FL": ReservedExt4a,
|
||||
"FS_EXTENT_FL": Extents,
|
||||
"FS_VERITY_FL": VerityProtected,
|
||||
"FS_EA_INODE_FL": LargeEaInode,
|
||||
"FS_EOFBLOCKS_FL": ReservedExt4b,
|
||||
"FS_NOCOW_FL": NoCOWFile,
|
||||
"FS_DAX_FL": DAX,
|
||||
"FS_INLINE_DATA_FL": ReservedExt4c,
|
||||
"FS_PROJINHERIT_FL": UseParentProjId,
|
||||
"FS_CASEFOLD_FL": CaseInsensitive,
|
||||
"FS_RESERVED_FL": ReservedExt2,
|
||||
}
|
||||
|
||||
/*
|
||||
KernelValueNameMap contains a mapping of attribute flags to their kernel source symbol name.
|
||||
Note the oddball here, BtreeFmt and HashIdxDir are actually the same value, so their string value is unpredictable.
|
||||
*/
|
||||
KernelValueNameMap map[fsAttr]string = invertMap(KernelNameValueMap)
|
||||
)
|
||||
Reference in New Issue
Block a user