mirror of
https://github.com/versity/scoutfs-go.git
synced 2025-12-23 05:05:17 +00:00
add inode_attr_x interface for retention and projectid
This commit is contained in:
@@ -71,6 +71,7 @@ package scoutfs
|
|||||||
// typedef struct scoutfs_ioctl_get_quota_rules scoutfs_ioctl_get_quota_rules_t;
|
// typedef struct scoutfs_ioctl_get_quota_rules scoutfs_ioctl_get_quota_rules_t;
|
||||||
// typedef struct scoutfs_ioctl_xattr_index_entry scoutfs_ioctl_xattr_index_entry_t;
|
// typedef struct scoutfs_ioctl_xattr_index_entry scoutfs_ioctl_xattr_index_entry_t;
|
||||||
// typedef struct scoutfs_ioctl_read_xattr_index scoutfs_ioctl_read_xattr_index_t;
|
// typedef struct scoutfs_ioctl_read_xattr_index scoutfs_ioctl_read_xattr_index_t;
|
||||||
|
// typedef struct scoutfs_ioctl_inode_attr_x scoutfs_ioctl_inode_attr_x_t;
|
||||||
import "C"
|
import "C"
|
||||||
|
|
||||||
const IOCQUERYINODES = C.SCOUTFS_IOC_WALK_INODES
|
const IOCQUERYINODES = C.SCOUTFS_IOC_WALK_INODES
|
||||||
@@ -91,8 +92,6 @@ const IOCGETREFERRINGENTRIES = C.SCOUTFS_IOC_GET_REFERRING_ENTRIES
|
|||||||
const IOCGETQUOTARULES = C.SCOUTFS_IOC_GET_QUOTA_RULES
|
const IOCGETQUOTARULES = C.SCOUTFS_IOC_GET_QUOTA_RULES
|
||||||
const IOCDELQUOTARULE = C.SCOUTFS_IOC_DEL_QUOTA_RULE
|
const IOCDELQUOTARULE = C.SCOUTFS_IOC_DEL_QUOTA_RULE
|
||||||
const IOCADDQUOTARULE = C.SCOUTFS_IOC_ADD_QUOTA_RULE
|
const IOCADDQUOTARULE = C.SCOUTFS_IOC_ADD_QUOTA_RULE
|
||||||
const IOCGETPROJECTID = C.SCOUTFS_IOC_GET_PROJECT_ID
|
|
||||||
const IOCSETPROJECTID = C.SCOUTFS_IOC_SET_PROJECT_ID
|
|
||||||
const IOCREADXATTRINDEX = C.SCOUTFS_IOC_READ_XATTR_INDEX
|
const IOCREADXATTRINDEX = C.SCOUTFS_IOC_READ_XATTR_INDEX
|
||||||
|
|
||||||
const QUERYINODESMETASEQ = C.SCOUTFS_IOC_WALK_INODES_META_SEQ
|
const QUERYINODESMETASEQ = C.SCOUTFS_IOC_WALK_INODES_META_SEQ
|
||||||
@@ -108,6 +107,22 @@ const MBSTAGEFLG = C.SCOUTFS_IOC_MB_STAGE
|
|||||||
|
|
||||||
const DIRENTFLAGLAST = C.SCOUTFS_IOCTL_DIRENT_FLAG_LAST
|
const DIRENTFLAGLAST = C.SCOUTFS_IOCTL_DIRENT_FLAG_LAST
|
||||||
|
|
||||||
|
const IOCIAXFSIZEOFFLINE = C.SCOUTFS_IOC_IAX_F_SIZE_OFFLINE
|
||||||
|
const IOCIAXBRETENTION = C.SCOUTFS_IOC_IAX_B_RETENTION
|
||||||
|
const IOCIAXMETASEQ = C.SCOUTFS_IOC_IAX_META_SEQ
|
||||||
|
const IOCIAXDATASEQ = C.SCOUTFS_IOC_IAX_DATA_SEQ
|
||||||
|
const IOCIAXDATAVERSION = C.SCOUTFS_IOC_IAX_DATA_VERSION
|
||||||
|
const IOCIAXONLINEBLOCKS = C.SCOUTFS_IOC_IAX_ONLINE_BLOCKS
|
||||||
|
const IOCIAXOFFLINEBLOCKS = C.SCOUTFS_IOC_IAX_OFFLINE_BLOCKS
|
||||||
|
const IOCIAXCTIME = C.SCOUTFS_IOC_IAX_CTIME
|
||||||
|
const IOCIAXCRTIME = C.SCOUTFS_IOC_IAX_CRTIME
|
||||||
|
const IOCIAXSIZE = C.SCOUTFS_IOC_IAX_SIZE
|
||||||
|
const IOCIAXRETENTION = C.SCOUTFS_IOC_IAX_RETENTION
|
||||||
|
const IOCIAXPROJECTID = C.SCOUTFS_IOC_IAX_PROJECT_ID
|
||||||
|
const IOCIAXBITS = C.SCOUTFS_IOC_IAX__BITS
|
||||||
|
const IOCGETATTRX = C.SCOUTFS_IOC_GET_ATTR_X
|
||||||
|
const IOCSETATTRX = C.SCOUTFS_IOC_SET_ATTR_X
|
||||||
|
|
||||||
type InodesEntry C.scoutfs_ioctl_walk_inodes_entry_t
|
type InodesEntry C.scoutfs_ioctl_walk_inodes_entry_t
|
||||||
type queryInodes C.scoutfs_ioctl_walk_inodes_t
|
type queryInodes C.scoutfs_ioctl_walk_inodes_t
|
||||||
type inoPath C.scoutfs_ioctl_ino_path_t
|
type inoPath C.scoutfs_ioctl_ino_path_t
|
||||||
@@ -132,6 +147,7 @@ type quotaRule C.scoutfs_ioctl_quota_rule_t
|
|||||||
type getQuotaRules C.scoutfs_ioctl_get_quota_rules_t
|
type getQuotaRules C.scoutfs_ioctl_get_quota_rules_t
|
||||||
type indexEntry C.scoutfs_ioctl_xattr_index_entry_t
|
type indexEntry C.scoutfs_ioctl_xattr_index_entry_t
|
||||||
type readXattrIndex C.scoutfs_ioctl_read_xattr_index_t
|
type readXattrIndex C.scoutfs_ioctl_read_xattr_index_t
|
||||||
|
type inodeAttrX C.scoutfs_ioctl_inode_attr_x_t
|
||||||
|
|
||||||
const sizeofstatfsMore = C.sizeof_scoutfs_ioctl_statfs_more_t
|
const sizeofstatfsMore = C.sizeof_scoutfs_ioctl_statfs_more_t
|
||||||
const sizeofxattrTotal = C.sizeof_scoutfs_ioctl_xattr_total_t
|
const sizeofxattrTotal = C.sizeof_scoutfs_ioctl_xattr_total_t
|
||||||
|
|||||||
35
scoutfs.go
35
scoutfs.go
@@ -1653,16 +1653,43 @@ func quotaAdd(f *os.File, q QuotaRule) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func GetProjectID(f *os.File) (uint64, error) {
|
func GetProjectID(f *os.File) (uint64, error) {
|
||||||
var projectid uint64
|
var iax inodeAttrX
|
||||||
_, err := scoutfsctl(f, IOCGETPROJECTID, unsafe.Pointer(&projectid))
|
iax.X_mask = IOCIAXPROJECTID
|
||||||
return projectid, err
|
_, err := scoutfsctl(f, IOCGETATTRX, unsafe.Pointer(&iax))
|
||||||
|
return iax.Project_id, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func SetProjectID(f *os.File, projectid uint64) error {
|
func SetProjectID(f *os.File, projectid uint64) error {
|
||||||
_, err := scoutfsctl(f, IOCSETPROJECTID, unsafe.Pointer(&projectid))
|
var iax inodeAttrX
|
||||||
|
iax.X_mask = IOCIAXPROJECTID
|
||||||
|
iax.Project_id = projectid
|
||||||
|
_, err := scoutfsctl(f, IOCSETATTRX, unsafe.Pointer(&iax))
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func SetRetention(f *os.File) error {
|
||||||
|
var iax inodeAttrX
|
||||||
|
iax.X_mask = IOCIAXRETENTION
|
||||||
|
iax.Bits = IOCIAXBRETENTION
|
||||||
|
_, err := scoutfsctl(f, IOCSETATTRX, unsafe.Pointer(&iax))
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func ClearRetention(f *os.File) error {
|
||||||
|
var iax inodeAttrX
|
||||||
|
iax.X_mask = IOCIAXRETENTION
|
||||||
|
_, err := scoutfsctl(f, IOCSETATTRX, unsafe.Pointer(&iax))
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetRetention(f *os.File) (bool, error) {
|
||||||
|
var iax inodeAttrX
|
||||||
|
iax.X_mask = IOCIAXRETENTION
|
||||||
|
_, err := scoutfsctl(f, IOCGETATTRX, unsafe.Pointer(&iax))
|
||||||
|
return ((iax.X_mask&IOCIAXRETENTION == IOCIAXRETENTION) &&
|
||||||
|
(iax.Bits&IOCIAXBRETENTION == IOCIAXBRETENTION)), err
|
||||||
|
}
|
||||||
|
|
||||||
type IndexSearch struct {
|
type IndexSearch struct {
|
||||||
// file handle for ioctls
|
// file handle for ioctls
|
||||||
f *os.File
|
f *os.File
|
||||||
|
|||||||
@@ -21,8 +21,6 @@ const IOCGETREFERRINGENTRIES = 0x4028e811
|
|||||||
const IOCGETQUOTARULES = 0x8020e814
|
const IOCGETQUOTARULES = 0x8020e814
|
||||||
const IOCDELQUOTARULE = 0x4030e816
|
const IOCDELQUOTARULE = 0x4030e816
|
||||||
const IOCADDQUOTARULE = 0x4030e815
|
const IOCADDQUOTARULE = 0x4030e815
|
||||||
const IOCGETPROJECTID = 0x8008e812
|
|
||||||
const IOCSETPROJECTID = 0x4008e813
|
|
||||||
const IOCREADXATTRINDEX = 0x8048e817
|
const IOCREADXATTRINDEX = 0x8048e817
|
||||||
|
|
||||||
const QUERYINODESMETASEQ = 0x0
|
const QUERYINODESMETASEQ = 0x0
|
||||||
@@ -38,6 +36,22 @@ const MBSTAGEFLG = 0x1
|
|||||||
|
|
||||||
const DIRENTFLAGLAST = 0x1
|
const DIRENTFLAGLAST = 0x1
|
||||||
|
|
||||||
|
const IOCIAXFSIZEOFFLINE = 0x1
|
||||||
|
const IOCIAXBRETENTION = 0x1
|
||||||
|
const IOCIAXMETASEQ = 0x1
|
||||||
|
const IOCIAXDATASEQ = 0x2
|
||||||
|
const IOCIAXDATAVERSION = 0x4
|
||||||
|
const IOCIAXONLINEBLOCKS = 0x8
|
||||||
|
const IOCIAXOFFLINEBLOCKS = 0x10
|
||||||
|
const IOCIAXCTIME = 0x20
|
||||||
|
const IOCIAXCRTIME = 0x40
|
||||||
|
const IOCIAXSIZE = 0x80
|
||||||
|
const IOCIAXRETENTION = 0x100
|
||||||
|
const IOCIAXPROJECTID = 0x200
|
||||||
|
const IOCIAXBITS = 0x100
|
||||||
|
const IOCGETATTRX = 0x4068e812
|
||||||
|
const IOCSETATTRX = 0x4068e813
|
||||||
|
|
||||||
type InodesEntry struct {
|
type InodesEntry struct {
|
||||||
Major uint64
|
Major uint64
|
||||||
Ino uint64
|
Ino uint64
|
||||||
@@ -210,6 +224,22 @@ type readXattrIndex struct {
|
|||||||
Ptr uint64
|
Ptr uint64
|
||||||
Nr uint64
|
Nr uint64
|
||||||
}
|
}
|
||||||
|
type inodeAttrX struct {
|
||||||
|
X_mask uint64
|
||||||
|
X_flags uint64
|
||||||
|
Meta_seq uint64
|
||||||
|
Data_seq uint64
|
||||||
|
Data_version uint64
|
||||||
|
Online_blocks uint64
|
||||||
|
Offline_blocks uint64
|
||||||
|
Ctime_sec uint64
|
||||||
|
Ctime_nsec uint32
|
||||||
|
Crtime_nsec uint32
|
||||||
|
Crtime_sec uint64
|
||||||
|
Size uint64
|
||||||
|
Bits uint64
|
||||||
|
Project_id uint64
|
||||||
|
}
|
||||||
|
|
||||||
const sizeofstatfsMore = 0x30
|
const sizeofstatfsMore = 0x30
|
||||||
const sizeofxattrTotal = 0x28
|
const sizeofxattrTotal = 0x28
|
||||||
|
|||||||
Reference in New Issue
Block a user