[Cluster-devel] [PATCH] Move struct gfs2_rgrp_lvb out of gfs2_ondisk.h

Andrew Price anprice at redhat.com
Wed Jan 15 15:43:22 UTC 2020


On 15/01/2020 08:58, Steven Whitehouse wrote:
> Hi,
> 
> On 15/01/2020 08:49, Andreas Gruenbacher wrote:
>> There's no point in sharing the internal structure of lock value blocks
>> with user space.
> 
> The reason that is in ondisk is that changing that structure is 
> something that needs to follow the same rules as changing the on disk 
> structures. So it is there as a reminder of that,

Perhaps some eye-catching code comments would suffice? Defining it in a 
uapi header does sort-of communicate that it's ok to use in userspace, 
whereas just having the structs in close proximity doesn't really 
communicate that they should be updated in sync.

Andy

> 
>>
>> Signed-off-by: Andreas Gruenbacher <agruenba at redhat.com>
>> ---
>>   fs/gfs2/glock.h                  |  1 +
>>   fs/gfs2/incore.h                 |  1 +
>>   fs/gfs2/rgrp.c                   | 10 ++++++++++
>>   include/uapi/linux/gfs2_ondisk.h | 10 ----------
>>   4 files changed, 12 insertions(+), 10 deletions(-)
>>

> 
> Steve.
> 
>> diff --git a/fs/gfs2/glock.h b/fs/gfs2/glock.h
>> index b8adaf80e4c5..d2f2dba05a94 100644
>> --- a/fs/gfs2/glock.h
>> +++ b/fs/gfs2/glock.h
>> @@ -306,4 +306,5 @@ static inline void glock_clear_object(struct 
>> gfs2_glock *gl, void *object)
>>       spin_unlock(&gl->gl_lockref.lock);
>>   }
>> +
>>   #endif /* __GLOCK_DOT_H__ */
>> diff --git a/fs/gfs2/incore.h b/fs/gfs2/incore.h
>> index b5d9c11f4901..5155389e9b5c 100644
>> --- a/fs/gfs2/incore.h
>> +++ b/fs/gfs2/incore.h
>> @@ -33,6 +33,7 @@ struct gfs2_trans;
>>   struct gfs2_jdesc;
>>   struct gfs2_sbd;
>>   struct lm_lockops;
>> +struct gfs2_rgrp_lvb;
>>   typedef void (*gfs2_glop_bh_t) (struct gfs2_glock *gl, unsigned int 
>> ret);
>> diff --git a/fs/gfs2/rgrp.c b/fs/gfs2/rgrp.c
>> index 2466bb44a23c..1165627274cf 100644
>> --- a/fs/gfs2/rgrp.c
>> +++ b/fs/gfs2/rgrp.c
>> @@ -46,6 +46,16 @@
>>   #define LBITSKIP00 (0x0000000000000000UL)
>>   #endif
>> +struct gfs2_rgrp_lvb {
>> +    __be32 rl_magic;
>> +    __be32 rl_flags;
>> +    __be32 rl_free;
>> +    __be32 rl_dinodes;
>> +    __be64 rl_igeneration;
>> +    __be32 rl_unlinked;
>> +    __be32 __pad;
>> +};
>> +
>>   /*
>>    * These routines are used by the resource group routines (rgrp.c)
>>    * to keep track of block allocation.  Each block is represented by two
>> diff --git a/include/uapi/linux/gfs2_ondisk.h 
>> b/include/uapi/linux/gfs2_ondisk.h
>> index 2dc10a034de1..4e9a80941bec 100644
>> --- a/include/uapi/linux/gfs2_ondisk.h
>> +++ b/include/uapi/linux/gfs2_ondisk.h
>> @@ -171,16 +171,6 @@ struct gfs2_rindex {
>>   #define GFS2_RGF_NOALLOC    0x00000008
>>   #define GFS2_RGF_TRIMMED    0x00000010
>> -struct gfs2_rgrp_lvb {
>> -    __be32 rl_magic;
>> -    __be32 rl_flags;
>> -    __be32 rl_free;
>> -    __be32 rl_dinodes;
>> -    __be64 rl_igeneration;
>> -    __be32 rl_unlinked;
>> -    __be32 __pad;
>> -};
>> -
>>   struct gfs2_rgrp {
>>       struct gfs2_meta_header rg_header;
> 




More information about the Cluster-devel mailing list