1
2
3
/* automatically generated by rust-bindgen */

pub const BTRFS_UTIL_CREATE_SNAPSHOT_RECURSIVE : u32 = 1 ; pub const BTRFS_UTIL_CREATE_SNAPSHOT_READ_ONLY : u32 = 2 ; pub const BTRFS_UTIL_CREATE_SNAPSHOT_MASK : u32 = 3 ; pub const BTRFS_UTIL_DELETE_SUBVOLUME_RECURSIVE : u32 = 1 ; pub const BTRFS_UTIL_DELETE_SUBVOLUME_MASK : u32 = 1 ; pub const BTRFS_UTIL_SUBVOLUME_ITERATOR_POST_ORDER : u32 = 1 ; pub const BTRFS_UTIL_SUBVOLUME_ITERATOR_MASK : u32 = 1 ; pub type size_t = :: std :: os :: raw :: c_ulong ; pub type __uint8_t = :: std :: os :: raw :: c_uchar ; pub type __uint64_t = :: std :: os :: raw :: c_ulong ; pub type __time_t = :: std :: os :: raw :: c_long ; pub type __syscall_slong_t = :: std :: os :: raw :: c_long ; # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct timespec { pub tv_sec : __time_t , pub tv_nsec : __syscall_slong_t , } # [ test ] fn bindgen_test_layout_timespec ( ) { assert_eq ! ( :: std :: mem :: size_of :: < timespec > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( timespec ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < timespec > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( timespec ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < timespec > ( ) ) ) . tv_sec as * const _ as usize } , 0usize , concat ! ( "Offset of field: " , stringify ! ( timespec ) , "::" , stringify ! ( tv_sec ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < timespec > ( ) ) ) . tv_nsec as * const _ as usize } , 8usize , concat ! ( "Offset of field: " , stringify ! ( timespec ) , "::" , stringify ! ( tv_nsec ) ) ) ; } pub const btrfs_util_error_BTRFS_UTIL_OK : btrfs_util_error = 0 ; pub const btrfs_util_error_BTRFS_UTIL_ERROR_STOP_ITERATION : btrfs_util_error = 1 ; pub const btrfs_util_error_BTRFS_UTIL_ERROR_NO_MEMORY : btrfs_util_error = 2 ; pub const btrfs_util_error_BTRFS_UTIL_ERROR_INVALID_ARGUMENT : btrfs_util_error = 3 ; pub const btrfs_util_error_BTRFS_UTIL_ERROR_NOT_BTRFS : btrfs_util_error = 4 ; pub const btrfs_util_error_BTRFS_UTIL_ERROR_NOT_SUBVOLUME : btrfs_util_error = 5 ; pub const btrfs_util_error_BTRFS_UTIL_ERROR_SUBVOLUME_NOT_FOUND : btrfs_util_error = 6 ; pub const btrfs_util_error_BTRFS_UTIL_ERROR_OPEN_FAILED : btrfs_util_error = 7 ; pub const btrfs_util_error_BTRFS_UTIL_ERROR_RMDIR_FAILED : btrfs_util_error = 8 ; pub const btrfs_util_error_BTRFS_UTIL_ERROR_UNLINK_FAILED : btrfs_util_error = 9 ; pub const btrfs_util_error_BTRFS_UTIL_ERROR_STAT_FAILED : btrfs_util_error = 10 ; pub const btrfs_util_error_BTRFS_UTIL_ERROR_STATFS_FAILED : btrfs_util_error = 11 ; pub const btrfs_util_error_BTRFS_UTIL_ERROR_SEARCH_FAILED : btrfs_util_error = 12 ; pub const btrfs_util_error_BTRFS_UTIL_ERROR_INO_LOOKUP_FAILED : btrfs_util_error = 13 ; pub const btrfs_util_error_BTRFS_UTIL_ERROR_SUBVOL_GETFLAGS_FAILED : btrfs_util_error = 14 ; pub const btrfs_util_error_BTRFS_UTIL_ERROR_SUBVOL_SETFLAGS_FAILED : btrfs_util_error = 15 ; pub const btrfs_util_error_BTRFS_UTIL_ERROR_SUBVOL_CREATE_FAILED : btrfs_util_error = 16 ; pub const btrfs_util_error_BTRFS_UTIL_ERROR_SNAP_CREATE_FAILED : btrfs_util_error = 17 ; pub const btrfs_util_error_BTRFS_UTIL_ERROR_SNAP_DESTROY_FAILED : btrfs_util_error = 18 ; pub const btrfs_util_error_BTRFS_UTIL_ERROR_DEFAULT_SUBVOL_FAILED : btrfs_util_error = 19 ; pub const btrfs_util_error_BTRFS_UTIL_ERROR_SYNC_FAILED : btrfs_util_error = 20 ; pub const btrfs_util_error_BTRFS_UTIL_ERROR_START_SYNC_FAILED : btrfs_util_error = 21 ; pub const btrfs_util_error_BTRFS_UTIL_ERROR_WAIT_SYNC_FAILED : btrfs_util_error = 22 ; pub const btrfs_util_error_BTRFS_UTIL_ERROR_GET_SUBVOL_INFO_FAILED : btrfs_util_error = 23 ; pub const btrfs_util_error_BTRFS_UTIL_ERROR_GET_SUBVOL_ROOTREF_FAILED : btrfs_util_error = 24 ; pub const btrfs_util_error_BTRFS_UTIL_ERROR_INO_LOOKUP_USER_FAILED : btrfs_util_error = 25 ; pub const btrfs_util_error_BTRFS_UTIL_ERROR_FS_INFO_FAILED : btrfs_util_error = 26 ; # [ doc = " enum btrfs_util_error - libbtrfsutil error codes." ] # [ doc = "" ] # [ doc = " All functions in libbtrfsutil that can return an error return this type and" ] # [ doc = " set errno." ] pub type btrfs_util_error = u32 ; extern "C" { # [ doc = " btrfs_util_strerror() - Convert a libtrfsutil error code to a string" ] # [ doc = " description." ] # [ doc = " @err: The error to convert." ] # [ doc = "" ] # [ doc = " Return: Error description." ] pub fn btrfs_util_strerror ( err : btrfs_util_error ) -> * const :: std :: os :: raw :: c_char ; } extern "C" { # [ doc = " btrfs_util_sync() - Force a sync on a specific Btrfs filesystem." ] # [ doc = " @path: Path on a Btrfs filesystem." ] # [ doc = "" ] # [ doc = " Return: %BTRFS_UTIL_OK on success, non-zero error code on failure." ] pub fn btrfs_util_sync ( path : * const :: std :: os :: raw :: c_char ) -> btrfs_util_error ; } extern "C" { # [ doc = " btrfs_util_sync_fd() - See btrfs_util_sync()." ] pub fn btrfs_util_sync_fd ( fd : :: std :: os :: raw :: c_int ) -> btrfs_util_error ; } extern "C" { # [ doc = " btrfs_util_start_sync() - Start a sync on a specific Btrfs filesystem but" ] # [ doc = " don't wait for it." ] # [ doc = " @path: Path on a Btrfs filesystem." ] # [ doc = " @transid: Returned transaction ID which can be waited on with" ] # [ doc = " btrfs_util_wait_sync(). This can be %NULL." ] # [ doc = "" ] # [ doc = " Return: %BTRFS_UTIL_OK on success, non-zero error code on failure." ] pub fn btrfs_util_start_sync ( path : * const :: std :: os :: raw :: c_char , transid : * mut u64 ) -> btrfs_util_error ; } extern "C" { # [ doc = " btrfs_util_start_sync_fd() - See btrfs_util_start_sync()." ] pub fn btrfs_util_start_sync_fd ( fd : :: std :: os :: raw :: c_int , transid : * mut u64 ) -> btrfs_util_error ; } extern "C" { # [ doc = " btrfs_util_wait_sync() - Wait for a transaction with a given ID to sync." ] # [ doc = " @path: Path on a Btrfs filesystem." ] # [ doc = " @transid: Transaction ID to wait for, or zero for the current transaction." ] # [ doc = "" ] # [ doc = " Return: %BTRFS_UTIL_OK on success, non-zero error code on failure." ] pub fn btrfs_util_wait_sync ( path : * const :: std :: os :: raw :: c_char , transid : u64 ) -> btrfs_util_error ; } extern "C" { # [ doc = " btrfs_util_wait_sync_fd() - See btrfs_util_wait_sync()." ] pub fn btrfs_util_wait_sync_fd ( fd : :: std :: os :: raw :: c_int , transid : u64 ) -> btrfs_util_error ; } extern "C" { # [ doc = " btrfs_util_is_subvolume() - Return whether a given path is a Btrfs subvolume." ] # [ doc = " @path: Path to check." ] # [ doc = "" ] # [ doc = " Return: %BTRFS_UTIL_OK if @path is a Btrfs subvolume," ] # [ doc = " %BTRFS_UTIL_ERROR_NOT_BTRFS if @path is not on a Btrfs filesystem," ] # [ doc = " %BTRFS_UTIL_ERROR_NOT_SUBVOLUME if @path is not a subvolume, non-zero error" ] # [ doc = " code on any other failure." ] pub fn btrfs_util_is_subvolume ( path : * const :: std :: os :: raw :: c_char ) -> btrfs_util_error ; } extern "C" { # [ doc = " btrfs_util_is_subvolume_fd() - See btrfs_util_is_subvolume()." ] pub fn btrfs_util_is_subvolume_fd ( fd : :: std :: os :: raw :: c_int ) -> btrfs_util_error ; } extern "C" { # [ doc = " btrfs_util_subvolume_id() - Get the ID of the subvolume containing a path." ] # [ doc = " @path: Path on a Btrfs filesystem." ] # [ doc = " @id_ret: Returned subvolume ID." ] # [ doc = "" ] # [ doc = " Return: %BTRFS_UTIL_OK on success, non-zero error code on failure." ] pub fn btrfs_util_subvolume_id ( path : * const :: std :: os :: raw :: c_char , id_ret : * mut u64 ) -> btrfs_util_error ; } extern "C" { # [ doc = " btrfs_util_subvolume_id_fd() - See btrfs_util_subvolume_id()." ] pub fn btrfs_util_subvolume_id_fd ( fd : :: std :: os :: raw :: c_int , id_ret : * mut u64 ) -> btrfs_util_error ; } extern "C" { # [ doc = " btrfs_util_subvolume_path() - Get the path of the subvolume with a given ID" ] # [ doc = " relative to the filesystem root." ] # [ doc = " @path: Path on a Btrfs filesystem." ] # [ doc = " @id: ID of subvolume to set as the default. If zero is given, the subvolume" ] # [ doc = " ID of @path is used." ] # [ doc = " @path_ret: Returned path." ] # [ doc = "" ] # [ doc = " This requires appropriate privilege (CAP_SYS_ADMIN)." ] # [ doc = "" ] # [ doc = " Return: %BTRFS_UTIL_OK on success, non-zero error code on failure." ] pub fn btrfs_util_subvolume_path ( path : * const :: std :: os :: raw :: c_char , id : u64 , path_ret : * mut * mut :: std :: os :: raw :: c_char ) -> btrfs_util_error ; } extern "C" { # [ doc = " btrfs_util_subvolume_path_fd() - See btrfs_util_subvolume_path()." ] pub fn btrfs_util_subvolume_path_fd ( fd : :: std :: os :: raw :: c_int , id : u64 , path_ret : * mut * mut :: std :: os :: raw :: c_char ) -> btrfs_util_error ; } # [ doc = " struct btrfs_util_subvolume_info - Information about a Btrfs subvolume." ] # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct btrfs_util_subvolume_info { # [ doc = " @id: ID of this subvolume, unique across the filesystem." ] pub id : u64 , # [ doc = " @parent_id: ID of the subvolume which contains this subvolume, or" ] # [ doc = " zero for the root subvolume (BTRFS_FS_TREE_OBJECTID) or orphaned" ] # [ doc = " subvolumes (i.e., subvolumes which have been deleted but not yet" ] # [ doc = " cleaned up)." ] pub parent_id : u64 , # [ doc = " @dir_id: Inode number of the directory containing this subvolume in" ] # [ doc = " the parent subvolume, or zero for the root subvolume" ] # [ doc = " (BTRFS_FS_TREE_OBJECTID) or orphaned subvolumes." ] pub dir_id : u64 , # [ doc = " @flags: On-disk root item flags." ] pub flags : u64 , # [ doc = " @uuid: UUID of this subvolume." ] pub uuid : [ u8 ; 16usize ] , # [ doc = " @parent_uuid: UUID of the subvolume this subvolume is a snapshot of," ] # [ doc = " or all zeroes if this subvolume is not a snapshot." ] pub parent_uuid : [ u8 ; 16usize ] , # [ doc = " @received_uuid: UUID of the subvolume this subvolume was received" ] # [ doc = " from, or all zeroes if this subvolume was not received. Note that" ] # [ doc = " this field, @stransid, @rtransid, @stime, and @rtime are set manually" ] # [ doc = " by userspace after a subvolume is received." ] pub received_uuid : [ u8 ; 16usize ] , # [ doc = " @generation: Transaction ID of the subvolume root." ] pub generation : u64 , # [ doc = " @ctransid: Transaction ID when an inode in this subvolume was last" ] # [ doc = " changed." ] pub ctransid : u64 , # [ doc = " @otransid: Transaction ID when this subvolume was created." ] pub otransid : u64 , # [ doc = " @stransid: Transaction ID of the sent subvolume this subvolume was" ] # [ doc = " received from, or zero if this subvolume was not received. See the" ] # [ doc = " note on @received_uuid." ] pub stransid : u64 , # [ doc = " @rtransid: Transaction ID when this subvolume was received, or zero" ] # [ doc = " if this subvolume was not received. See the note on @received_uuid." ] pub rtransid : u64 , # [ doc = " @ctime: Time when an inode in this subvolume was last changed." ] pub ctime : timespec , # [ doc = " @otime: Time when this subvolume was created." ] pub otime : timespec , # [ doc = " @stime: Not well-defined, usually zero unless it was set otherwise." ] # [ doc = " See the note on @received_uuid." ] pub stime : timespec , # [ doc = " @rtime: Time when this subvolume was received, or zero if this" ] # [ doc = " subvolume was not received. See the note on @received_uuid." ] pub rtime : timespec , } # [ test ] fn bindgen_test_layout_btrfs_util_subvolume_info ( ) { assert_eq ! ( :: std :: mem :: size_of :: < btrfs_util_subvolume_info > ( ) , 184usize , concat ! ( "Size of: " , stringify ! ( btrfs_util_subvolume_info ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < btrfs_util_subvolume_info > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( btrfs_util_subvolume_info ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < btrfs_util_subvolume_info > ( ) ) ) . id as * const _ as usize } , 0usize , concat ! ( "Offset of field: " , stringify ! ( btrfs_util_subvolume_info ) , "::" , stringify ! ( id ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < btrfs_util_subvolume_info > ( ) ) ) . parent_id as * const _ as usize } , 8usize , concat ! ( "Offset of field: " , stringify ! ( btrfs_util_subvolume_info ) , "::" , stringify ! ( parent_id ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < btrfs_util_subvolume_info > ( ) ) ) . dir_id as * const _ as usize } , 16usize , concat ! ( "Offset of field: " , stringify ! ( btrfs_util_subvolume_info ) , "::" , stringify ! ( dir_id ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < btrfs_util_subvolume_info > ( ) ) ) . flags as * const _ as usize } , 24usize , concat ! ( "Offset of field: " , stringify ! ( btrfs_util_subvolume_info ) , "::" , stringify ! ( flags ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < btrfs_util_subvolume_info > ( ) ) ) . uuid as * const _ as usize } , 32usize , concat ! ( "Offset of field: " , stringify ! ( btrfs_util_subvolume_info ) , "::" , stringify ! ( uuid ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < btrfs_util_subvolume_info > ( ) ) ) . parent_uuid as * const _ as usize } , 48usize , concat ! ( "Offset of field: " , stringify ! ( btrfs_util_subvolume_info ) , "::" , stringify ! ( parent_uuid ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < btrfs_util_subvolume_info > ( ) ) ) . received_uuid as * const _ as usize } , 64usize , concat ! ( "Offset of field: " , stringify ! ( btrfs_util_subvolume_info ) , "::" , stringify ! ( received_uuid ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < btrfs_util_subvolume_info > ( ) ) ) . generation as * const _ as usize } , 80usize , concat ! ( "Offset of field: " , stringify ! ( btrfs_util_subvolume_info ) , "::" , stringify ! ( generation ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < btrfs_util_subvolume_info > ( ) ) ) . ctransid as * const _ as usize } , 88usize , concat ! ( "Offset of field: " , stringify ! ( btrfs_util_subvolume_info ) , "::" , stringify ! ( ctransid ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < btrfs_util_subvolume_info > ( ) ) ) . otransid as * const _ as usize } , 96usize , concat ! ( "Offset of field: " , stringify ! ( btrfs_util_subvolume_info ) , "::" , stringify ! ( otransid ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < btrfs_util_subvolume_info > ( ) ) ) . stransid as * const _ as usize } , 104usize , concat ! ( "Offset of field: " , stringify ! ( btrfs_util_subvolume_info ) , "::" , stringify ! ( stransid ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < btrfs_util_subvolume_info > ( ) ) ) . rtransid as * const _ as usize } , 112usize , concat ! ( "Offset of field: " , stringify ! ( btrfs_util_subvolume_info ) , "::" , stringify ! ( rtransid ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < btrfs_util_subvolume_info > ( ) ) ) . ctime as * const _ as usize } , 120usize , concat ! ( "Offset of field: " , stringify ! ( btrfs_util_subvolume_info ) , "::" , stringify ! ( ctime ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < btrfs_util_subvolume_info > ( ) ) ) . otime as * const _ as usize } , 136usize , concat ! ( "Offset of field: " , stringify ! ( btrfs_util_subvolume_info ) , "::" , stringify ! ( otime ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < btrfs_util_subvolume_info > ( ) ) ) . stime as * const _ as usize } , 152usize , concat ! ( "Offset of field: " , stringify ! ( btrfs_util_subvolume_info ) , "::" , stringify ! ( stime ) ) ) ; assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < btrfs_util_subvolume_info > ( ) ) ) . rtime as * const _ as usize } , 168usize , concat ! ( "Offset of field: " , stringify ! ( btrfs_util_subvolume_info ) , "::" , stringify ! ( rtime ) ) ) ; } extern "C" { # [ doc = " btrfs_util_subvolume_info() - Get information about a subvolume." ] # [ doc = " @path: Path in a Btrfs filesystem. This may be any path in the filesystem; it" ] # [ doc = " does not have to refer to a subvolume unless @id is zero." ] # [ doc = " @id: ID of subvolume to get information about. If zero is given, the" ] # [ doc = " subvolume ID of @path is used." ] # [ doc = " @subvol: Returned subvolume information. This can be %NULL if you just want" ] # [ doc = " to check whether the subvolume exists; %BTRFS_UTIL_ERROR_SUBVOLUME_NOT_FOUND" ] # [ doc = " will be returned if it does not." ] # [ doc = "" ] # [ doc = " This requires appropriate privilege (CAP_SYS_ADMIN) unless @id is zero and" ] # [ doc = " the kernel supports BTRFS_IOC_GET_SUBVOL_INFO (kernel >= 4.18)." ] # [ doc = "" ] # [ doc = " Return: %BTRFS_UTIL_OK on success, non-zero error code on failure." ] pub fn btrfs_util_subvolume_info ( path : * const :: std :: os :: raw :: c_char , id : u64 , subvol : * mut btrfs_util_subvolume_info ) -> btrfs_util_error ; } extern "C" { # [ doc = " btrfs_util_subvolume_info_fd() - See btrfs_util_subvolume_info()." ] pub fn btrfs_util_subvolume_info_fd ( fd : :: std :: os :: raw :: c_int , id : u64 , subvol : * mut btrfs_util_subvolume_info ) -> btrfs_util_error ; } extern "C" { # [ doc = " btrfs_util_get_subvolume_read_only() - Get whether a subvolume is read-only." ] # [ doc = " @path: Subvolume path." ] # [ doc = " @ret: Returned read-only flag." ] # [ doc = "" ] # [ doc = " Return: %BTRFS_UTIL_OK on success, non-zero error code on failure." ] pub fn btrfs_util_get_subvolume_read_only ( path : * const :: std :: os :: raw :: c_char , ret : * mut bool ) -> btrfs_util_error ; } extern "C" { # [ doc = " btrfs_util_get_subvolume_read_only_fd() - See" ] # [ doc = " btrfs_util_get_subvolume_read_only()." ] pub fn btrfs_util_get_subvolume_read_only_fd ( fd : :: std :: os :: raw :: c_int , ret : * mut bool ) -> btrfs_util_error ; } extern "C" { # [ doc = " btrfs_util_set_subvolume_read_only() - Set whether a subvolume is read-only." ] # [ doc = " @path: Subvolume path." ] # [ doc = " @read_only: New value of read-only flag." ] # [ doc = "" ] # [ doc = " This requires appropriate privilege (CAP_SYS_ADMIN)." ] # [ doc = "" ] # [ doc = " Return: %BTRFS_UTIL_OK on success, non-zero error code on failure." ] pub fn btrfs_util_set_subvolume_read_only ( path : * const :: std :: os :: raw :: c_char , read_only : bool ) -> btrfs_util_error ; } extern "C" { # [ doc = " btrfs_util_set_subvolume_read_only_fd() - See" ] # [ doc = " btrfs_util_set_subvolume_read_only()." ] pub fn btrfs_util_set_subvolume_read_only_fd ( fd : :: std :: os :: raw :: c_int , read_only : bool ) -> btrfs_util_error ; } extern "C" { # [ doc = " btrfs_util_get_default_subvolume() - Get the default subvolume for a" ] # [ doc = " filesystem." ] # [ doc = " @path: Path on a Btrfs filesystem." ] # [ doc = " @id_ret: Returned subvolume ID." ] # [ doc = "" ] # [ doc = " This requires appropriate privilege (CAP_SYS_ADMIN)." ] # [ doc = "" ] # [ doc = " Return: %BTRFS_UTIL_OK on success, non-zero error code on failure." ] pub fn btrfs_util_get_default_subvolume ( path : * const :: std :: os :: raw :: c_char , id_ret : * mut u64 ) -> btrfs_util_error ; } extern "C" { # [ doc = " btrfs_util_get_default_subvolume_fd() - See" ] # [ doc = " btrfs_util_get_default_subvolume()." ] pub fn btrfs_util_get_default_subvolume_fd ( fd : :: std :: os :: raw :: c_int , id_ret : * mut u64 ) -> btrfs_util_error ; } extern "C" { # [ doc = " btrfs_util_set_default_subvolume() - Set the default subvolume for a" ] # [ doc = " filesystem." ] # [ doc = " @path: Path in a Btrfs filesystem. This may be any path in the filesystem; it" ] # [ doc = " does not have to refer to a subvolume unless @id is zero." ] # [ doc = " @id: ID of subvolume to set as the default. If zero is given, the subvolume" ] # [ doc = " ID of @path is used." ] # [ doc = "" ] # [ doc = " This requires appropriate privilege (CAP_SYS_ADMIN)." ] # [ doc = "" ] # [ doc = " Return: %BTRFS_UTIL_OK on success, non-zero error code on failure." ] pub fn btrfs_util_set_default_subvolume ( path : * const :: std :: os :: raw :: c_char , id : u64 ) -> btrfs_util_error ; } extern "C" { # [ doc = " btrfs_util_set_default_subvolume_fd() - See" ] # [ doc = " btrfs_util_set_default_subvolume()." ] pub fn btrfs_util_set_default_subvolume_fd ( fd : :: std :: os :: raw :: c_int , id : u64 ) -> btrfs_util_error ; } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct btrfs_util_qgroup_inherit { _unused : [ u8 ; 0 ] , } extern "C" { # [ doc = " btrfs_util_create_subvolume() - Create a new subvolume." ] # [ doc = " @path: Where to create the subvolume." ] # [ doc = " @flags: Must be zero." ] # [ doc = " @async_transid: If not NULL, create the subvolume asynchronously (i.e.," ] # [ doc = " without waiting for it to commit it to disk) and return the transaction ID" ] # [ doc = " that it was created in. This transaction ID can be waited on with" ] # [ doc = " btrfs_util_wait_sync()." ] # [ doc = " @qgroup_inherit: Qgroups to inherit from, or NULL." ] # [ doc = "" ] # [ doc = " Return: %BTRFS_UTIL_OK on success, non-zero error code on failure." ] pub fn btrfs_util_create_subvolume ( path : * const :: std :: os :: raw :: c_char , flags : :: std :: os :: raw :: c_int , async_transid : * mut u64 , qgroup_inherit : * mut btrfs_util_qgroup_inherit ) -> btrfs_util_error ; } extern "C" { # [ doc = " btrfs_util_create_subvolume_fd() - Create a new subvolume given its parent" ] # [ doc = " and name." ] # [ doc = " @parent_fd: File descriptor of the parent directory where the subvolume" ] # [ doc = " should be created." ] # [ doc = " @name: Name of the subvolume to create." ] # [ doc = " @flags: See btrfs_util_create_subvolume()." ] # [ doc = " @async_transid: See btrfs_util_create_subvolume()." ] # [ doc = " @qgroup_inherit: See btrfs_util_create_subvolume()." ] # [ doc = "" ] # [ doc = " Return: %BTRFS_UTIL_OK on success, non-zero error code on failure." ] pub fn btrfs_util_create_subvolume_fd ( parent_fd : :: std :: os :: raw :: c_int , name : * const :: std :: os :: raw :: c_char , flags : :: std :: os :: raw :: c_int , async_transid : * mut u64 , qgroup_inherit : * mut btrfs_util_qgroup_inherit ) -> btrfs_util_error ; } extern "C" { # [ doc = " btrfs_util_create_snapshot() - Create a new snapshot from a source subvolume" ] # [ doc = " path." ] # [ doc = " @source: Path of the existing subvolume to snapshot." ] # [ doc = " @path: Where to create the snapshot." ] # [ doc = " @flags: Bitmask of BTRFS_UTIL_CREATE_SNAPSHOT_* flags." ] # [ doc = " @async_transid: See btrfs_util_create_subvolume(). If" ] # [ doc = " %BTRFS_UTIL_CREATE_SNAPSHOT_RECURSIVE was in @flags, then this will contain" ] # [ doc = " the largest transaction ID of all created subvolumes." ] # [ doc = " @qgroup_inherit: See btrfs_util_create_subvolume()." ] # [ doc = "" ] # [ doc = " Return: %BTRFS_UTIL_OK on success, non-zero error code on failure." ] pub fn btrfs_util_create_snapshot ( source : * const :: std :: os :: raw :: c_char , path : * const :: std :: os :: raw :: c_char , flags : :: std :: os :: raw :: c_int , async_transid : * mut u64 , qgroup_inherit : * mut btrfs_util_qgroup_inherit ) -> btrfs_util_error ; } extern "C" { # [ doc = " btrfs_util_create_snapshot_fd() - See btrfs_util_create_snapshot()." ] pub fn btrfs_util_create_snapshot_fd ( fd : :: std :: os :: raw :: c_int , path : * const :: std :: os :: raw :: c_char , flags : :: std :: os :: raw :: c_int , async_transid : * mut u64 , qgroup_inherit : * mut btrfs_util_qgroup_inherit ) -> btrfs_util_error ; } extern "C" { # [ doc = " btrfs_util_create_snapshot_fd2() - Create a new snapshot from a source" ] # [ doc = " subvolume file descriptor and a target parent file descriptor and name." ] # [ doc = " @fd: File descriptor of the existing subvolume to snapshot." ] # [ doc = " @parent_fd: File descriptor of the parent directory where the snapshot should" ] # [ doc = " be created." ] # [ doc = " @name: Name of the snapshot to create." ] # [ doc = " @flags: See btrfs_util_create_snapshot()." ] # [ doc = " @async_transid: See btrfs_util_create_snapshot()." ] # [ doc = " @qgroup_inherit: See btrfs_util_create_snapshot()." ] pub fn btrfs_util_create_snapshot_fd2 ( fd : :: std :: os :: raw :: c_int , parent_fd : :: std :: os :: raw :: c_int , name : * const :: std :: os :: raw :: c_char , flags : :: std :: os :: raw :: c_int , async_transid : * mut u64 , qgroup_inherit : * mut btrfs_util_qgroup_inherit ) -> btrfs_util_error ; } extern "C" { # [ doc = " btrfs_util_delete_subvolume() - Delete a subvolume or snapshot." ] # [ doc = " @path: Path of the subvolume to delete." ] # [ doc = " @flags: Bitmask of BTRFS_UTIL_DELETE_SUBVOLUME_* flags." ] # [ doc = "" ] # [ doc = " Return: %BTRFS_UTIL_OK on success, non-zero error code on failure." ] pub fn btrfs_util_delete_subvolume ( path : * const :: std :: os :: raw :: c_char , flags : :: std :: os :: raw :: c_int ) -> btrfs_util_error ; } extern "C" { # [ doc = " btrfs_util_delete_subvolume_fd() - Delete a subvolume or snapshot given its" ] # [ doc = " parent and name." ] # [ doc = " @parent_fd: File descriptor of the subvolume's parent directory." ] # [ doc = " @name: Name of the subvolume." ] # [ doc = " @flags: See btrfs_util_delete_subvolume()." ] # [ doc = "" ] # [ doc = " Return: %BTRFS_UTIL_OK on success, non-zero error code on failure." ] pub fn btrfs_util_delete_subvolume_fd ( parent_fd : :: std :: os :: raw :: c_int , name : * const :: std :: os :: raw :: c_char , flags : :: std :: os :: raw :: c_int ) -> btrfs_util_error ; } extern "C" { # [ doc = " btrfs_util_delete_subvolume_by_id_fd() - Delete a subvolume or snapshot using" ] # [ doc = " subvolume id." ] # [ doc = " @fd: File descriptor of the subvolume's parent directory." ] # [ doc = " @subvolid: Subvolume id of the subvolume or snapshot to be deleted." ] # [ doc = "" ] # [ doc = " Return: %BTRFS_UTIL_OK on success, non-zero error code on failure." ] pub fn btrfs_util_delete_subvolume_by_id_fd ( fd : :: std :: os :: raw :: c_int , subvolid : u64 ) -> btrfs_util_error ; } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct btrfs_util_subvolume_iterator { _unused : [ u8 ; 0 ] , } extern "C" { # [ doc = " btrfs_util_create_subvolume_iterator() - Create an iterator over subvolumes" ] # [ doc = " in a Btrfs filesystem." ] # [ doc = " @path: Path in a Btrfs filesystem. This may be any path in the filesystem; it" ] # [ doc = " does not have to refer to a subvolume unless @top is zero." ] # [ doc = " @top: List subvolumes beneath (but not including) the subvolume with this ID." ] # [ doc = " If zero is given, the subvolume ID of @path is used. To list all subvolumes," ] # [ doc = " pass %BTRFS_FS_TREE_OBJECTID (i.e., 5). The returned paths are relative to" ] # [ doc = " the subvolume with this ID." ] # [ doc = " @flags: Bitmask of BTRFS_UTIL_SUBVOLUME_ITERATOR_* flags." ] # [ doc = " @ret: Returned iterator." ] # [ doc = "" ] # [ doc = " Subvolume iterators require appropriate privilege (CAP_SYS_ADMIN) unless @top" ] # [ doc = " is zero and the kernel supports BTRFS_IOC_GET_SUBVOL_ROOTREF and" ] # [ doc = " BTRFS_IOC_INO_LOOKUP_USER (kernel >= 4.18). In this case, subvolumes which" ] # [ doc = " cannot be accessed (e.g., due to permissions or other mounts) will be" ] # [ doc = " skipped." ] # [ doc = "" ] # [ doc = " The returned iterator must be freed with" ] # [ doc = " btrfs_util_destroy_subvolume_iterator()." ] # [ doc = "" ] # [ doc = " Return: %BTRFS_UTIL_OK on success, non-zero error code on failure." ] pub fn btrfs_util_create_subvolume_iterator ( path : * const :: std :: os :: raw :: c_char , top : u64 , flags : :: std :: os :: raw :: c_int , ret : * mut * mut btrfs_util_subvolume_iterator ) -> btrfs_util_error ; } extern "C" { # [ doc = " btrfs_util_create_subvolume_iterator_fd() - See" ] # [ doc = " btrfs_util_create_subvolume_iterator()." ] pub fn btrfs_util_create_subvolume_iterator_fd ( fd : :: std :: os :: raw :: c_int , top : u64 , flags : :: std :: os :: raw :: c_int , ret : * mut * mut btrfs_util_subvolume_iterator ) -> btrfs_util_error ; } extern "C" { # [ doc = " btrfs_util_destroy_subvolume_iterator() - Destroy a subvolume iterator" ] # [ doc = " previously created by btrfs_util_create_subvolume_iterator()." ] # [ doc = " @iter: Iterator to destroy." ] pub fn btrfs_util_destroy_subvolume_iterator ( iter : * mut btrfs_util_subvolume_iterator ) ; } extern "C" { # [ doc = " btrfs_util_subvolume_iterator_fd() - Get the file descriptor associated with" ] # [ doc = " a subvolume iterator." ] # [ doc = " @iter: Iterator to get." ] # [ doc = "" ] # [ doc = " This can be used to get the file descriptor opened by" ] # [ doc = " btrfs_util_create_subvolume_iterator() in order to use it for other" ] # [ doc = " functions." ] # [ doc = "" ] # [ doc = " Return: File descriptor." ] pub fn btrfs_util_subvolume_iterator_fd ( iter : * const btrfs_util_subvolume_iterator ) -> :: std :: os :: raw :: c_int ; } extern "C" { # [ doc = " btrfs_util_subvolume_iterator_next() - Get the next subvolume from a" ] # [ doc = " subvolume iterator." ] # [ doc = " @iter: Subvolume iterator." ] # [ doc = " @path_ret: Returned subvolume path, relative to the subvolume ID used to" ] # [ doc = " create the iterator. May be %NULL." ] # [ doc = " Must be freed with free()." ] # [ doc = " @id_ret: Returned subvolume ID. May be %NULL." ] # [ doc = "" ] # [ doc = " This requires appropriate privilege (CAP_SYS_ADMIN) for kernels < 4.18. See" ] # [ doc = " btrfs_util_create_subvolume_iterator()." ] # [ doc = "" ] # [ doc = " Return: %BTRFS_UTIL_OK on success, %BTRFS_UTIL_ERROR_STOP_ITERATION if there" ] # [ doc = " are no more subvolumes, non-zero error code on failure." ] pub fn btrfs_util_subvolume_iterator_next ( iter : * mut btrfs_util_subvolume_iterator , path_ret : * mut * mut :: std :: os :: raw :: c_char , id_ret : * mut u64 ) -> btrfs_util_error ; } extern "C" { # [ doc = " btrfs_util_subvolume_iterator_next_info() - Get information about the next" ] # [ doc = " subvolume for a subvolume iterator." ] # [ doc = " @iter: Subvolume iterator." ] # [ doc = " @path_ret: See btrfs_util_subvolume_iterator_next()." ] # [ doc = " @subvol: Returned subvolume information." ] # [ doc = "" ] # [ doc = " This convenience function basically combines" ] # [ doc = " btrfs_util_subvolume_iterator_next() and btrfs_util_subvolume_info()." ] # [ doc = "" ] # [ doc = " This requires appropriate privilege (CAP_SYS_ADMIN) for kernels < 4.18. See" ] # [ doc = " btrfs_util_create_subvolume_iterator()." ] # [ doc = "" ] # [ doc = " Return: See btrfs_util_subvolume_iterator_next()." ] pub fn btrfs_util_subvolume_iterator_next_info ( iter : * mut btrfs_util_subvolume_iterator , path_ret : * mut * mut :: std :: os :: raw :: c_char , subvol : * mut btrfs_util_subvolume_info ) -> btrfs_util_error ; } extern "C" { # [ doc = " btrfs_util_deleted_subvolumes() - Get a list of subvolume which have been" ] # [ doc = " deleted but not yet cleaned up." ] # [ doc = " @path: Path on a Btrfs filesystem." ] # [ doc = " @ids: Returned array of subvolume IDs." ] # [ doc = " @n: Returned number of IDs in the @ids array." ] # [ doc = "" ] # [ doc = " This requires appropriate privilege (CAP_SYS_ADMIN)." ] # [ doc = "" ] # [ doc = " Return: %BTRFS_UTIL_OK on success, non-zero error code on failure." ] pub fn btrfs_util_deleted_subvolumes ( path : * const :: std :: os :: raw :: c_char , ids : * mut * mut u64 , n : * mut size_t ) -> btrfs_util_error ; } extern "C" { # [ doc = " btrfs_util_deleted_subvolumes_fd() - See btrfs_util_deleted_subvolumes()." ] pub fn btrfs_util_deleted_subvolumes_fd ( fd : :: std :: os :: raw :: c_int , ids : * mut * mut u64 , n : * mut size_t ) -> btrfs_util_error ; } extern "C" { # [ doc = " btrfs_util_create_qgroup_inherit() - Create a qgroup inheritance specifier" ] # [ doc = " for btrfs_util_create_subvolume() or btrfs_util_create_snapshot()." ] # [ doc = " @flags: Must be zero." ] # [ doc = " @ret: Returned qgroup inheritance specifier." ] # [ doc = "" ] # [ doc = " The returned structure must be freed with" ] # [ doc = " btrfs_util_destroy_qgroup_inherit()." ] # [ doc = "" ] # [ doc = " Return: %BTRFS_UTIL_OK on success, non-zero error code on failure." ] pub fn btrfs_util_create_qgroup_inherit ( flags : :: std :: os :: raw :: c_int , ret : * mut * mut btrfs_util_qgroup_inherit ) -> btrfs_util_error ; } extern "C" { # [ doc = " btrfs_util_destroy_qgroup_inherit() - Destroy a qgroup inheritance specifier" ] # [ doc = " previously created with btrfs_util_create_qgroup_inherit()." ] # [ doc = " @inherit: Specifier to destroy." ] pub fn btrfs_util_destroy_qgroup_inherit ( inherit : * mut btrfs_util_qgroup_inherit ) ; } extern "C" { # [ doc = " btrfs_util_qgroup_inherit_add_group() - Add inheritance from a qgroup to a" ] # [ doc = " qgroup inheritance specifier." ] # [ doc = " @inherit: Specifier to modify. May be reallocated." ] # [ doc = " @qgroupid: ID of qgroup to inherit from." ] # [ doc = "" ] # [ doc = " Return: %BTRFS_UTIL_OK on success, non-zero error code on failure." ] pub fn btrfs_util_qgroup_inherit_add_group ( inherit : * mut * mut btrfs_util_qgroup_inherit , qgroupid : u64 ) -> btrfs_util_error ; } extern "C" { # [ doc = " btrfs_util_qgroup_inherit_get_groups() - Get the qgroups a qgroup inheritance" ] # [ doc = " specifier contains." ] # [ doc = " @inherit: Qgroup inheritance specifier." ] # [ doc = " @groups: Returned array of qgroup IDs." ] # [ doc = " @n: Returned number of entries in the @groups array." ] pub fn btrfs_util_qgroup_inherit_get_groups ( inherit : * const btrfs_util_qgroup_inherit , groups : * mut * const u64 , n : * mut size_t ) ; }