package fsutils import ( `github.com/g0rbe/go-chattr` ) // https://github.com/torvalds/linux/blob/master/include/uapi/linux/fs.h const ( SecureDelete uint32 = chattr.FS_SECRM_FL // Secure deletion UnDelete = chattr.FS_UNRM_FL // Undelete CompressFile = chattr.FS_COMPR_FL // Compress file SyncUpdatechattr = chattr.FS_SYNC_FL // Synchronous updates Immutable = chattr.FS_IMMUTABLE_FL // Immutable file AppendOnly = chattr.FS_APPEND_FL // Writes to file may only append NoDumpFile = chattr.FS_NODUMP_FL // Do not dump file NoUpdateAtime = chattr.FS_NOATIME_FL // Do not update atime IsDirty = chattr.FS_DIRTY_FL // Nobody knows what this does, lol. CompressedClusters = chattr.FS_COMPRBLK_FL // One or more compressed clusters NoCompress = chattr.FS_NOCOMP_FL // Don't compress EncFile = chattr.FS_ENCRYPT_FL // Encrypted file BtreeFmt = chattr.FS_BTREE_FL // Btree format dir HashIdxDir = chattr.FS_INDEX_FL // Hash-indexed directory AfsDir = chattr.FS_IMAGIC_FL // AFS directory ReservedExt3 = chattr.FS_JOURNAL_DATA_FL // Reserved for ext3 NoMergeTail = chattr.FS_NOTAIL_FL // File tail should not be merged DirSync = chattr.FS_DIRSYNC_FL // dirsync behaviour (directories only) DirTop = chattr.FS_TOPDIR_FL // Top of directory hierarchies ReservedExt4a = chattr.FS_HUGE_FILE_FL // Reserved for ext4 Extents = chattr.FS_EXTENT_FL // Extents LargeEaInode = chattr.FS_EA_INODE_FL // Inode used for large EA ReservedExt4b = chattr.FS_EOFBLOCKS_FL // Reserved for ext4 NoCOWFile = chattr.FS_NOCOW_FL // Do not cow file ReservedExt4c = chattr.FS_INLINE_DATA_FL // Reserved for ext4 UseParentProjId = chattr.FS_PROJINHERIT_FL // Create with parents projid ReservedExt2 = chattr.FS_RESERVED_FL // Reserved for ext2 lib ) var ( // AttrNameValueMap contains a mapping of attribute names (as designated by this package) to their flag values. AttrNameValueMap map[string]uint32 = map[string]uint32{ "SecureDelete": SecureDelete, "UnDelete": UnDelete, "CompressFile": CompressFile, "SyncUpdatechattr": SyncUpdatechattr, "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, "LargeEaInode": LargeEaInode, "ReservedExt4b": ReservedExt4b, "NoCOWFile": NoCOWFile, "ReservedExt4c": ReservedExt4c, "UseParentProjId": UseParentProjId, "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 be forewarned. */ AttrValueNameMap map[uint32]string = map[uint32]string{ SecureDelete: "SecureDelete", UnDelete: "UnDelete", CompressFile: "CompressFile", SyncUpdatechattr: "SyncUpdatechattr", Immutable: "Immutable", AppendOnly: "AppendOnly", NoDumpFile: "NoDumpFile", NoUpdateAtime: "NoUpdateAtime", IsDirty: "IsDirty", CompressedClusters: "CompressedClusters", NoCompress: "NoCompress", EncFile: "EncFile", BtreeFmt: "BtreeFmt|HashIdxDir", // Well THIS is silly and seems like an oversight. Both FS_BTREE_FL and FS_INDEX_FL have the same flag. Confirmed in kernel source. AfsDir: "AfsDir", ReservedExt3: "ReservedExt3", NoMergeTail: "NoMergeTail", DirSync: "DirSync", DirTop: "DirTop", ReservedExt4a: "ReservedExt4a", Extents: "Extents", LargeEaInode: "LargeEaInode", ReservedExt4b: "ReservedExt4b", NoCOWFile: "NoCOWFile", ReservedExt4c: "ReservedExt4c", UseParentProjId: "UseParentProjId", ReservedExt2: "ReservedExt2", } )