Message ID | 20240126080423.138713-1-xuyang2018.jy@fujitsu.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | t_snapshot_deleted_subvolume: change the position of macro definition | expand |
On Fri 26 Jan 2024 at 03:04, Yang Xu <xuyang2018.jy@fujitsu.com> wrote: Cc linux-btrfs > On some platform, struct btrfs_ioctl_vol_args_v2 is defined, but > the > Would you mention what are these platforms? -- Su > macros BTRFS_IOC_SNAP_DESTROY_V2, BTRFS_IOC_SNAP_CREATE_V2 and > BTRFS_IOC_SUBVOL_CREATE_V2 are not defined. This will cause > compile > error. We should always check these macros and manually define > them > if necessary. > > Signed-off-by: Yang Xu <xuyang2018.jy@fujitsu.com> > --- > src/t_snapshot_deleted_subvolume.c | 30 > +++++++++++++++--------------- > 1 file changed, 15 insertions(+), 15 deletions(-) > > diff --git a/src/t_snapshot_deleted_subvolume.c > b/src/t_snapshot_deleted_subvolume.c > index c3adb1c4..d84ba35a 100644 > --- a/src/t_snapshot_deleted_subvolume.c > +++ b/src/t_snapshot_deleted_subvolume.c > @@ -20,21 +20,6 @@ > #define BTRFS_IOCTL_MAGIC 0x94 > #endif > > -#ifndef BTRFS_IOC_SNAP_DESTROY_V2 > -#define BTRFS_IOC_SNAP_DESTROY_V2 \ > - _IOW(BTRFS_IOCTL_MAGIC, 63, struct btrfs_ioctl_vol_args_v2) > -#endif > - > -#ifndef BTRFS_IOC_SNAP_CREATE_V2 > -#define BTRFS_IOC_SNAP_CREATE_V2 \ > - _IOW(BTRFS_IOCTL_MAGIC, 23, struct btrfs_ioctl_vol_args_v2) > -#endif > - > -#ifndef BTRFS_IOC_SUBVOL_CREATE_V2 > -#define BTRFS_IOC_SUBVOL_CREATE_V2 \ > - _IOW(BTRFS_IOCTL_MAGIC, 24, struct btrfs_ioctl_vol_args_v2) > -#endif > - > #ifndef BTRFS_SUBVOL_NAME_MAX > #define BTRFS_SUBVOL_NAME_MAX 4039 > #endif > @@ -58,6 +43,21 @@ struct btrfs_ioctl_vol_args_v2 { > }; > #endif > > +#ifndef BTRFS_IOC_SNAP_DESTROY_V2 > +#define BTRFS_IOC_SNAP_DESTROY_V2 \ > + _IOW(BTRFS_IOCTL_MAGIC, 63, struct btrfs_ioctl_vol_args_v2) > +#endif > + > +#ifndef BTRFS_IOC_SNAP_CREATE_V2 > +#define BTRFS_IOC_SNAP_CREATE_V2 \ > + _IOW(BTRFS_IOCTL_MAGIC, 23, struct btrfs_ioctl_vol_args_v2) > +#endif > + > +#ifndef BTRFS_IOC_SUBVOL_CREATE_V2 > +#define BTRFS_IOC_SUBVOL_CREATE_V2 \ > + _IOW(BTRFS_IOCTL_MAGIC, 24, struct btrfs_ioctl_vol_args_v2) > +#endif > + > int main(int argc, char **argv) > { > if (argc != 2) {
On Fri, Jan 26, 2024 at 03:04:23AM -0500, Yang Xu wrote: > On some platform, struct btrfs_ioctl_vol_args_v2 is defined, but the > macros BTRFS_IOC_SNAP_DESTROY_V2, BTRFS_IOC_SNAP_CREATE_V2 and > BTRFS_IOC_SUBVOL_CREATE_V2 are not defined. This will cause compile > error. We should always check these macros and manually define them > if necessary. The BTRFS_IOC_SNAP_DESTROY_V2 was been added in 5.7 but the other two have been around since ages. This looks like there are missing configure-time checks for the macros. > > Signed-off-by: Yang Xu <xuyang2018.jy@fujitsu.com> > --- > src/t_snapshot_deleted_subvolume.c | 30 +++++++++++++++--------------- > 1 file changed, 15 insertions(+), 15 deletions(-) > > diff --git a/src/t_snapshot_deleted_subvolume.c b/src/t_snapshot_deleted_subvolume.c > index c3adb1c4..d84ba35a 100644 > --- a/src/t_snapshot_deleted_subvolume.c > +++ b/src/t_snapshot_deleted_subvolume.c > @@ -20,21 +20,6 @@ > #define BTRFS_IOCTL_MAGIC 0x94 > #endif > > -#ifndef BTRFS_IOC_SNAP_DESTROY_V2 > -#define BTRFS_IOC_SNAP_DESTROY_V2 \ > - _IOW(BTRFS_IOCTL_MAGIC, 63, struct btrfs_ioctl_vol_args_v2) > -#endif > - > -#ifndef BTRFS_IOC_SNAP_CREATE_V2 > -#define BTRFS_IOC_SNAP_CREATE_V2 \ > - _IOW(BTRFS_IOCTL_MAGIC, 23, struct btrfs_ioctl_vol_args_v2) > -#endif > - > -#ifndef BTRFS_IOC_SUBVOL_CREATE_V2 > -#define BTRFS_IOC_SUBVOL_CREATE_V2 \ > - _IOW(BTRFS_IOCTL_MAGIC, 24, struct btrfs_ioctl_vol_args_v2) > -#endif > - > #ifndef BTRFS_SUBVOL_NAME_MAX > #define BTRFS_SUBVOL_NAME_MAX 4039 > #endif > @@ -58,6 +43,21 @@ struct btrfs_ioctl_vol_args_v2 { > }; > #endif > > +#ifndef BTRFS_IOC_SNAP_DESTROY_V2 > +#define BTRFS_IOC_SNAP_DESTROY_V2 \ > + _IOW(BTRFS_IOCTL_MAGIC, 63, struct btrfs_ioctl_vol_args_v2) > +#endif > + > +#ifndef BTRFS_IOC_SNAP_CREATE_V2 > +#define BTRFS_IOC_SNAP_CREATE_V2 \ > + _IOW(BTRFS_IOCTL_MAGIC, 23, struct btrfs_ioctl_vol_args_v2) > +#endif > + > +#ifndef BTRFS_IOC_SUBVOL_CREATE_V2 > +#define BTRFS_IOC_SUBVOL_CREATE_V2 \ > + _IOW(BTRFS_IOCTL_MAGIC, 24, struct btrfs_ioctl_vol_args_v2) > +#endif So you're moving the conditional definitions out of the ifdef that includes the header where they're supposedly defined, this should be really done in configure and ifdef only BTRFS_IOC_SNAP_DESTROY_V2 as it's the newest one.
Hi,Su > > On Fri 26 Jan 2024 at 03:04, Yang Xu <xuyang2018.jy@fujitsu.com> wrote: > > Cc linux-btrfs > >> On some platform, struct btrfs_ioctl_vol_args_v2 is defined, but the >> > Would you mention what are these platforms? I found this phenomenon on RHEL8.9GA. Best Regards Yang Xu > > -- > Su >> macros BTRFS_IOC_SNAP_DESTROY_V2, BTRFS_IOC_SNAP_CREATE_V2 and >> BTRFS_IOC_SUBVOL_CREATE_V2 are not defined. This will cause compile >> error. We should always check these macros and manually define them >> if necessary. >> >> Signed-off-by: Yang Xu <xuyang2018.jy@fujitsu.com> >> --- >> src/t_snapshot_deleted_subvolume.c | 30 +++++++++++++++--------------- >> 1 file changed, 15 insertions(+), 15 deletions(-) >> >> diff --git a/src/t_snapshot_deleted_subvolume.c >> b/src/t_snapshot_deleted_subvolume.c >> index c3adb1c4..d84ba35a 100644 >> --- a/src/t_snapshot_deleted_subvolume.c >> +++ b/src/t_snapshot_deleted_subvolume.c >> @@ -20,21 +20,6 @@ >> #define BTRFS_IOCTL_MAGIC 0x94 >> #endif >> >> -#ifndef BTRFS_IOC_SNAP_DESTROY_V2 >> -#define BTRFS_IOC_SNAP_DESTROY_V2 \ >> - _IOW(BTRFS_IOCTL_MAGIC, 63, struct btrfs_ioctl_vol_args_v2) >> -#endif >> - >> -#ifndef BTRFS_IOC_SNAP_CREATE_V2 >> -#define BTRFS_IOC_SNAP_CREATE_V2 \ >> - _IOW(BTRFS_IOCTL_MAGIC, 23, struct btrfs_ioctl_vol_args_v2) >> -#endif >> - >> -#ifndef BTRFS_IOC_SUBVOL_CREATE_V2 >> -#define BTRFS_IOC_SUBVOL_CREATE_V2 \ >> - _IOW(BTRFS_IOCTL_MAGIC, 24, struct btrfs_ioctl_vol_args_v2) >> -#endif >> - >> #ifndef BTRFS_SUBVOL_NAME_MAX >> #define BTRFS_SUBVOL_NAME_MAX 4039 >> #endif >> @@ -58,6 +43,21 @@ struct btrfs_ioctl_vol_args_v2 { >> }; >> #endif >> >> +#ifndef BTRFS_IOC_SNAP_DESTROY_V2 >> +#define BTRFS_IOC_SNAP_DESTROY_V2 \ >> + _IOW(BTRFS_IOCTL_MAGIC, 63, struct btrfs_ioctl_vol_args_v2) >> +#endif >> + >> +#ifndef BTRFS_IOC_SNAP_CREATE_V2 >> +#define BTRFS_IOC_SNAP_CREATE_V2 \ >> + _IOW(BTRFS_IOCTL_MAGIC, 23, struct btrfs_ioctl_vol_args_v2) >> +#endif >> + >> +#ifndef BTRFS_IOC_SUBVOL_CREATE_V2 >> +#define BTRFS_IOC_SUBVOL_CREATE_V2 \ >> + _IOW(BTRFS_IOCTL_MAGIC, 24, struct btrfs_ioctl_vol_args_v2) >> +#endif >> + >> int main(int argc, char **argv) >> { >> if (argc != 2) {
Hi! > On Fri, Jan 26, 2024 at 03:04:23AM -0500, Yang Xu wrote: >> On some platform, struct btrfs_ioctl_vol_args_v2 is defined, but the >> macros BTRFS_IOC_SNAP_DESTROY_V2, BTRFS_IOC_SNAP_CREATE_V2 and >> BTRFS_IOC_SUBVOL_CREATE_V2 are not defined. This will cause compile >> error. We should always check these macros and manually define them >> if necessary. > > The BTRFS_IOC_SNAP_DESTROY_V2 was been added in 5.7 but the other two > have been around since ages. This looks like there are missing > configure-time checks for the macros. > Agree, will check BTRFS_IOC_SNAP_DESTROY_V2 in configure.ac. Best Regards Yang Xu >> >> Signed-off-by: Yang Xu <xuyang2018.jy@fujitsu.com> >> --- >> src/t_snapshot_deleted_subvolume.c | 30 +++++++++++++++--------------- >> 1 file changed, 15 insertions(+), 15 deletions(-) >> >> diff --git a/src/t_snapshot_deleted_subvolume.c b/src/t_snapshot_deleted_subvolume.c >> index c3adb1c4..d84ba35a 100644 >> --- a/src/t_snapshot_deleted_subvolume.c >> +++ b/src/t_snapshot_deleted_subvolume.c >> @@ -20,21 +20,6 @@ >> #define BTRFS_IOCTL_MAGIC 0x94 >> #endif >> >> -#ifndef BTRFS_IOC_SNAP_DESTROY_V2 >> -#define BTRFS_IOC_SNAP_DESTROY_V2 \ >> - _IOW(BTRFS_IOCTL_MAGIC, 63, struct btrfs_ioctl_vol_args_v2) >> -#endif >> - >> -#ifndef BTRFS_IOC_SNAP_CREATE_V2 >> -#define BTRFS_IOC_SNAP_CREATE_V2 \ >> - _IOW(BTRFS_IOCTL_MAGIC, 23, struct btrfs_ioctl_vol_args_v2) >> -#endif >> - >> -#ifndef BTRFS_IOC_SUBVOL_CREATE_V2 >> -#define BTRFS_IOC_SUBVOL_CREATE_V2 \ >> - _IOW(BTRFS_IOCTL_MAGIC, 24, struct btrfs_ioctl_vol_args_v2) >> -#endif >> - >> #ifndef BTRFS_SUBVOL_NAME_MAX >> #define BTRFS_SUBVOL_NAME_MAX 4039 >> #endif >> @@ -58,6 +43,21 @@ struct btrfs_ioctl_vol_args_v2 { >> }; >> #endif >> >> +#ifndef BTRFS_IOC_SNAP_DESTROY_V2 >> +#define BTRFS_IOC_SNAP_DESTROY_V2 \ >> + _IOW(BTRFS_IOCTL_MAGIC, 63, struct btrfs_ioctl_vol_args_v2) >> +#endif >> + >> +#ifndef BTRFS_IOC_SNAP_CREATE_V2 >> +#define BTRFS_IOC_SNAP_CREATE_V2 \ >> + _IOW(BTRFS_IOCTL_MAGIC, 23, struct btrfs_ioctl_vol_args_v2) >> +#endif >> + >> +#ifndef BTRFS_IOC_SUBVOL_CREATE_V2 >> +#define BTRFS_IOC_SUBVOL_CREATE_V2 \ >> + _IOW(BTRFS_IOCTL_MAGIC, 24, struct btrfs_ioctl_vol_args_v2) >> +#endif > > So you're moving the conditional definitions out of the ifdef that > includes the header where they're supposedly defined, this should be > really done in configure and ifdef only BTRFS_IOC_SNAP_DESTROY_V2 as > it's the newest one.
diff --git a/src/t_snapshot_deleted_subvolume.c b/src/t_snapshot_deleted_subvolume.c index c3adb1c4..d84ba35a 100644 --- a/src/t_snapshot_deleted_subvolume.c +++ b/src/t_snapshot_deleted_subvolume.c @@ -20,21 +20,6 @@ #define BTRFS_IOCTL_MAGIC 0x94 #endif -#ifndef BTRFS_IOC_SNAP_DESTROY_V2 -#define BTRFS_IOC_SNAP_DESTROY_V2 \ - _IOW(BTRFS_IOCTL_MAGIC, 63, struct btrfs_ioctl_vol_args_v2) -#endif - -#ifndef BTRFS_IOC_SNAP_CREATE_V2 -#define BTRFS_IOC_SNAP_CREATE_V2 \ - _IOW(BTRFS_IOCTL_MAGIC, 23, struct btrfs_ioctl_vol_args_v2) -#endif - -#ifndef BTRFS_IOC_SUBVOL_CREATE_V2 -#define BTRFS_IOC_SUBVOL_CREATE_V2 \ - _IOW(BTRFS_IOCTL_MAGIC, 24, struct btrfs_ioctl_vol_args_v2) -#endif - #ifndef BTRFS_SUBVOL_NAME_MAX #define BTRFS_SUBVOL_NAME_MAX 4039 #endif @@ -58,6 +43,21 @@ struct btrfs_ioctl_vol_args_v2 { }; #endif +#ifndef BTRFS_IOC_SNAP_DESTROY_V2 +#define BTRFS_IOC_SNAP_DESTROY_V2 \ + _IOW(BTRFS_IOCTL_MAGIC, 63, struct btrfs_ioctl_vol_args_v2) +#endif + +#ifndef BTRFS_IOC_SNAP_CREATE_V2 +#define BTRFS_IOC_SNAP_CREATE_V2 \ + _IOW(BTRFS_IOCTL_MAGIC, 23, struct btrfs_ioctl_vol_args_v2) +#endif + +#ifndef BTRFS_IOC_SUBVOL_CREATE_V2 +#define BTRFS_IOC_SUBVOL_CREATE_V2 \ + _IOW(BTRFS_IOCTL_MAGIC, 24, struct btrfs_ioctl_vol_args_v2) +#endif + int main(int argc, char **argv) { if (argc != 2) {
On some platform, struct btrfs_ioctl_vol_args_v2 is defined, but the macros BTRFS_IOC_SNAP_DESTROY_V2, BTRFS_IOC_SNAP_CREATE_V2 and BTRFS_IOC_SUBVOL_CREATE_V2 are not defined. This will cause compile error. We should always check these macros and manually define them if necessary. Signed-off-by: Yang Xu <xuyang2018.jy@fujitsu.com> --- src/t_snapshot_deleted_subvolume.c | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-)