diff mbox series

t_snapshot_deleted_subvolume: change the position of macro definition

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

Commit Message

Yang Xu (Fujitsu) Jan. 26, 2024, 8:04 a.m. UTC
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(-)

Comments

Su Yue Jan. 31, 2024, 4:39 a.m. UTC | #1
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) {
David Sterba Jan. 31, 2024, 7:05 a.m. UTC | #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.
Yang Xu (Fujitsu) Jan. 31, 2024, 9:54 a.m. UTC | #3
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) {
Yang Xu (Fujitsu) Jan. 31, 2024, 9:58 a.m. UTC | #4
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 mbox series

Patch

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) {