[Ocfs2-devel] [PATCH] ocfs2: Fix 2 warning during ocfs2 make.

Wengang Wang wen.gang.wang at oracle.com
Wed Mar 18 23:47:44 PDT 2009


yes, that's the problem.
we'd better unify the different types(but could be another patch).
since the on disk is u16, modifying other types to u16 is fine :)

thanks,
wengang.

Tao Ma wrote:
> Hi wengang,
> 
> Wengang Wang wrote:
>> Hi Tao,
>>
>> I think for the OCFS2_INVALID_SLOT problem,
>> define OCFS2_INVALID_SLOT as (u16)-1 is better. so that we needn't
>> force convert type wherever it's used.
> I just copy/paste and do like others. See
> fs/ocfs2/slot_map.c:        if (le16_to_cpu(sm->sm_slots[i]) == 
> (u16)OCFS2_INVALID_SLOT)
> 
> And after I searched again, I guess we can't do that. look at 
> fs/ocfs2/super.c.
> osb->slot_num = OCFS2_INVALID_SLOT;
> slot_num is defined as int. So your definition will break the rule. and 
> make slot_num=65535.
> 
> Regards,
> Tao
>>
>>
>> --- fs/ocfs2/ocfs2_fs.h 2009-02-18 19:58:02.000000000 +0800
>> +++ fs/ocfs2/ocfs2_fs.h.1       2009-03-19 14:24:18.000000000 +0800
>> @@ -303,7 +303,7 @@ struct ocfs2_new_group_input {
>>  #define OCFS2_MAX_SLOTS                        255
>>
>>  /* Slot map indicator for an empty slot */
>> -#define OCFS2_INVALID_SLOT             -1
>> +#define OCFS2_INVALID_SLOT             (u16)-1
>>
>>  #define OCFS2_VOL_UUID_LEN             16
>>  #define OCFS2_MAX_VOL_LABEL_LEN                64
>>
>> I didn't paste the part for removing force type converting.
>>
>> thanks,
>> wengang.
>>
>> Tao Ma wrote:
>>> fs/ocfs2/dir.c: In function ‘ocfs2_extend_dir’:
>>> fs/ocfs2/dir.c:2700: warning: ‘ret’ may be used uninitialized in this 
>>> function
>>>
>>> fs/ocfs2/suballoc.c: In function ‘ocfs2_get_suballoc_slot_bit’:
>>> fs/ocfs2/suballoc.c:2216: warning: comparison is always true due to 
>>> limited range of data type
>>>
>>> Signed-off-by: Tao Ma <tao.ma at oracle.com>
>>> ---
>>>  fs/ocfs2/dir.c      |    2 +-
>>>  fs/ocfs2/suballoc.c |    2 +-
>>>  2 files changed, 2 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/fs/ocfs2/dir.c b/fs/ocfs2/dir.c
>>> index e71160c..eeac241 100644
>>> --- a/fs/ocfs2/dir.c
>>> +++ b/fs/ocfs2/dir.c
>>> @@ -2697,7 +2697,7 @@ static int ocfs2_dx_dir_index_block(struct 
>>> inode *dir,
>>>                      u32 *num_dx_entries,
>>>                      struct buffer_head *dirent_bh)
>>>  {
>>> -    int ret, namelen, i;
>>> +    int ret = 0, namelen, i;
>>>      char *de_buf, *limit;
>>>      struct ocfs2_dir_entry *de;
>>>      struct buffer_head *dx_leaf_bh;
>>> diff --git a/fs/ocfs2/suballoc.c b/fs/ocfs2/suballoc.c
>>> index b4ca591..eb21dbb 100644
>>> --- a/fs/ocfs2/suballoc.c
>>> +++ b/fs/ocfs2/suballoc.c
>>> @@ -2213,7 +2213,7 @@ static int ocfs2_get_suballoc_slot_bit(struct 
>>> ocfs2_super *osb, u64 blkno,
>>>          goto bail;
>>>      }
>>>  
>>> -    if (le16_to_cpu(inode_fe->i_suballoc_slot) != OCFS2_INVALID_SLOT &&
>>> +    if (le16_to_cpu(inode_fe->i_suballoc_slot) != 
>>> (u16)OCFS2_INVALID_SLOT &&
>>>          (u32)le16_to_cpu(inode_fe->i_suballoc_slot) > osb->max_slots 
>>> - 1) {
>>>          mlog(ML_ERROR, "inode %llu has invalid suballoc slot %u\n",
>>>               blkno, (u32)le16_to_cpu(inode_fe->i_suballoc_slot));



More information about the Ocfs2-devel mailing list