Add new unprivileged ioctl BTRFS_IOC_GET_SUBVOL_INFO which returns the information of subvolume containing this inode. (i.e. returns the information in ROOT_ITEM and ROOT_BACKREF.)
Showing the changes to include/uapi/linux (1 of 2 files). Show all
Unified · Split
| @@ -725,6 +725,66 @@ struct btrfs_ioctl_send_args { · 724 unmodified lines | |||
| 725 | __u64 reserved[4]; /* in */ | 725 | __u64 reserved[4]; /* in */ |
| 726 | }; | 726 | }; |
| 727 | 727 | ||
| 728 | /* | ||
| 729 | * Information about a fs tree root. | ||
| 730 | * | ||
| 731 | * All items are filled by the ioctl | ||
| 732 | */ | ||
| 733 | struct btrfs_ioctl_get_subvol_info_args { | ||
| 734 | /* Id of this subvolume */ | ||
| 735 | __u64 treeid; | ||
| 736 | |||
| 737 | /* Name of this subvolume, used to get the real name at mount point */ | ||
| 738 | char name[BTRFS_VOL_NAME_MAX + 1]; | ||
| 739 | |||
| 740 | /* | ||
| 741 | * Id of the subvolume which contains this subvolume. | ||
| 742 | * Zero for top-level subvolume or a deleted subvolume. | ||
| 743 | */ | ||
| 744 | __u64 parent_id; | ||
| 745 | |||
| 746 | /* | ||
| 747 | * Inode number of the directory which contains this subvolume. | ||
| 748 | * Zero for top-level subvolume or a deleted subvolume | ||
| 749 | */ | ||
| 750 | __u64 dirid; | ||
| 751 | |||
| 752 | /* Latest transaction id of this subvolume */ | ||
| 753 | __u64 generation; | ||
| 754 | |||
| 755 | /* Flags of this subvolume */ | ||
| 756 | __u64 flags; | ||
| 757 | |||
| 758 | /* UUID of this subvolume */ | ||
| 759 | __u8 uuid[BTRFS_UUID_SIZE]; | ||
| 760 | |||
| 761 | /* | ||
| 762 | * UUID of the subvolume of which this subvolume is a snapshot. | ||
| 763 | * All zero for a non-snapshot subvolume. | ||
| 764 | */ | ||
| 765 | __u8 parent_uuid[BTRFS_UUID_SIZE]; | ||
| 766 | |||
| 767 | /* | ||
| 768 | * UUID of the subvolume from which this subvolume was received. | ||
| 769 | * All zero for non-received subvolume. | ||
| 770 | */ | ||
| 771 | __u8 received_uuid[BTRFS_UUID_SIZE]; | ||
| 772 | |||
| 773 | /* Transaction id indicating when change/create/send/receive happened */ | ||
| 774 | __u64 ctransid; | ||
| 775 | __u64 otransid; | ||
| 776 | __u64 stransid; | ||
| 777 | __u64 rtransid; | ||
| 778 | /* Time corresponding to c/o/s/rtransid */ | ||
| 779 | struct btrfs_ioctl_timespec ctime; | ||
| 780 | struct btrfs_ioctl_timespec otime; | ||
| 781 | struct btrfs_ioctl_timespec stime; | ||
| 782 | struct btrfs_ioctl_timespec rtime; | ||
| 783 | |||
| 784 | /* Must be zero */ | ||
| 785 | __u64 reserved[8]; | ||
| 786 | }; | ||
| 787 | |||
| 728 | /* Error codes as returned by the kernel */ | 788 | /* Error codes as returned by the kernel */ |
| 729 | enum btrfs_err_code { | 789 | enum btrfs_err_code { |
| 730 | BTRFS_ERROR_DEV_RAID1_MIN_NOT_MET = 1, | 790 | BTRFS_ERROR_DEV_RAID1_MIN_NOT_MET = 1, |
| @@ -843,5 +903,7 @@ enum btrfs_err_code { · 112 unmodified lines | |||
| 843 | struct btrfs_ioctl_vol_args_v2) | 903 | struct btrfs_ioctl_vol_args_v2) |
| 844 | #define BTRFS_IOC_LOGICAL_INO_V2 _IOWR(BTRFS_IOCTL_MAGIC, 59, \ | 904 | #define BTRFS_IOC_LOGICAL_INO_V2 _IOWR(BTRFS_IOCTL_MAGIC, 59, \ |
| 845 | struct btrfs_ioctl_logical_ino_args) | 905 | struct btrfs_ioctl_logical_ino_args) |
| 906 | #define BTRFS_IOC_GET_SUBVOL_INFO _IOR(BTRFS_IOCTL_MAGIC, 60, \ | ||
| 907 | struct btrfs_ioctl_get_subvol_info_args) | ||
| 846 | 908 | ||
| 847 | #endif /* _UAPI_LINUX_BTRFS_H */ | 909 | #endif /* _UAPI_LINUX_BTRFS_H */ |