forked from Proxmox/proxmox
proxmox-sys: split xattr code into extra file
Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
This commit is contained in:
parent
d0b7e1e299
commit
92caf51634
39
proxmox-sys/src/fs/fsx_attr.rs
Normal file
39
proxmox-sys/src/fs/fsx_attr.rs
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
// /usr/include/linux/fs.h: #define FS_IOC_GETFLAGS _IOR('f', 1, long)
|
||||||
|
// read Linux file system attributes (see man chattr)
|
||||||
|
nix::ioctl_read!(read_attr_fd, b'f', 1, libc::c_long);
|
||||||
|
nix::ioctl_write_ptr!(write_attr_fd, b'f', 2, libc::c_long);
|
||||||
|
|
||||||
|
// /usr/include/linux/msdos_fs.h: #define FAT_IOCTL_GET_ATTRIBUTES _IOR('r', 0x10, __u32)
|
||||||
|
// read FAT file system attributes
|
||||||
|
nix::ioctl_read!(read_fat_attr_fd, b'r', 0x10, u32);
|
||||||
|
nix::ioctl_write_ptr!(write_fat_attr_fd, b'r', 0x11, u32);
|
||||||
|
|
||||||
|
// From /usr/include/linux/fs.h
|
||||||
|
// #define FS_IOC_FSGETXATTR _IOR('X', 31, struct fsxattr)
|
||||||
|
// #define FS_IOC_FSSETXATTR _IOW('X', 32, struct fsxattr)
|
||||||
|
nix::ioctl_read!(fs_ioc_fsgetxattr, b'X', 31, FSXAttr);
|
||||||
|
nix::ioctl_write_ptr!(fs_ioc_fssetxattr, b'X', 32, FSXAttr);
|
||||||
|
|
||||||
|
#[repr(C)]
|
||||||
|
#[derive(Debug)]
|
||||||
|
pub struct FSXAttr {
|
||||||
|
pub fsx_xflags: u32,
|
||||||
|
pub fsx_extsize: u32,
|
||||||
|
pub fsx_nextents: u32,
|
||||||
|
pub fsx_projid: u32,
|
||||||
|
pub fsx_cowextsize: u32,
|
||||||
|
pub fsx_pad: [u8; 8],
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Default for FSXAttr {
|
||||||
|
fn default() -> Self {
|
||||||
|
FSXAttr {
|
||||||
|
fsx_xflags: 0u32,
|
||||||
|
fsx_extsize: 0u32,
|
||||||
|
fsx_nextents: 0u32,
|
||||||
|
fsx_projid: 0u32,
|
||||||
|
fsx_cowextsize: 0u32,
|
||||||
|
fsx_pad: [0u8; 8],
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -18,6 +18,9 @@ pub use dir::*;
|
|||||||
mod read_dir;
|
mod read_dir;
|
||||||
pub use read_dir::*;
|
pub use read_dir::*;
|
||||||
|
|
||||||
|
mod fsx_attr;
|
||||||
|
pub use fsx_attr::*;
|
||||||
|
|
||||||
/// Change ownership of an open file handle
|
/// Change ownership of an open file handle
|
||||||
pub fn fchown(fd: RawFd, owner: Option<Uid>, group: Option<Gid>) -> Result<(), Error> {
|
pub fn fchown(fd: RawFd, owner: Option<Uid>, group: Option<Gid>) -> Result<(), Error> {
|
||||||
// According to the POSIX specification, -1 is used to indicate that owner and group
|
// According to the POSIX specification, -1 is used to indicate that owner and group
|
||||||
|
@ -258,46 +258,6 @@ where
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// /usr/include/linux/fs.h: #define FS_IOC_GETFLAGS _IOR('f', 1, long)
|
|
||||||
// read Linux file system attributes (see man chattr)
|
|
||||||
nix::ioctl_read!(read_attr_fd, b'f', 1, libc::c_long);
|
|
||||||
nix::ioctl_write_ptr!(write_attr_fd, b'f', 2, libc::c_long);
|
|
||||||
|
|
||||||
// /usr/include/linux/msdos_fs.h: #define FAT_IOCTL_GET_ATTRIBUTES _IOR('r', 0x10, __u32)
|
|
||||||
// read FAT file system attributes
|
|
||||||
nix::ioctl_read!(read_fat_attr_fd, b'r', 0x10, u32);
|
|
||||||
nix::ioctl_write_ptr!(write_fat_attr_fd, b'r', 0x11, u32);
|
|
||||||
|
|
||||||
// From /usr/include/linux/fs.h
|
|
||||||
// #define FS_IOC_FSGETXATTR _IOR('X', 31, struct fsxattr)
|
|
||||||
// #define FS_IOC_FSSETXATTR _IOW('X', 32, struct fsxattr)
|
|
||||||
nix::ioctl_read!(fs_ioc_fsgetxattr, b'X', 31, FSXAttr);
|
|
||||||
nix::ioctl_write_ptr!(fs_ioc_fssetxattr, b'X', 32, FSXAttr);
|
|
||||||
|
|
||||||
#[repr(C)]
|
|
||||||
#[derive(Debug)]
|
|
||||||
pub struct FSXAttr {
|
|
||||||
pub fsx_xflags: u32,
|
|
||||||
pub fsx_extsize: u32,
|
|
||||||
pub fsx_nextents: u32,
|
|
||||||
pub fsx_projid: u32,
|
|
||||||
pub fsx_cowextsize: u32,
|
|
||||||
pub fsx_pad: [u8; 8],
|
|
||||||
}
|
|
||||||
|
|
||||||
impl Default for FSXAttr {
|
|
||||||
fn default() -> Self {
|
|
||||||
FSXAttr {
|
|
||||||
fsx_xflags: 0u32,
|
|
||||||
fsx_extsize: 0u32,
|
|
||||||
fsx_nextents: 0u32,
|
|
||||||
fsx_projid: 0u32,
|
|
||||||
fsx_cowextsize: 0u32,
|
|
||||||
fsx_pad: [0u8; 8],
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Attempt to acquire a shared flock on the given path, 'what' and
|
/// Attempt to acquire a shared flock on the given path, 'what' and
|
||||||
/// 'would_block_message' are used for error formatting.
|
/// 'would_block_message' are used for error formatting.
|
||||||
pub fn lock_dir_noblock_shared(
|
pub fn lock_dir_noblock_shared(
|
||||||
|
Loading…
Reference in New Issue
Block a user