[pnfs] [PATCH 1/5] pnfs: Several non-critical fixups.
Dean Hildebrand
seattleplus at gmail.com
Wed May 7 21:46:40 EDT 2008
Benny Halevy wrote:
> On May. 07, 2008, 18:29 -0700, Dean Hildebrand <seattleplus at gmail.com> wrote:
>
>> Benny Halevy wrote:
>>
>>> On May. 07, 2008, 15:13 -0700, Dean Hildebrand <seattleplus at gmail.com> wrote:
>>>
>>>
>>>> Benny Halevy wrote:
>>>>
>>>>
>>>>> On May. 06, 2008, 16:45 -0700, Dean Hildebrand <seattleplus at gmail.com> wrote:
>>>>> <snip>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>> @@ -499,10 +499,11 @@ decode_and_add_ds(uint32_t **pp, struct filelayout_mount_type *mt)
>>>>>> */
>>>>>> if (!ds->ds_clp) {
>>>>>> err = nfs4_pnfs_ds_create(mds_srv, ds);
>>>>>> - printk(KERN_ERR
>>>>>> - "%s nfs4_pnfs_ds_create returned %d\n", __func__, err);
>>>>>> - if (err)
>>>>>> + if (err) {
>>>>>> + printk(KERN_ERR "%s nfs4_pnfs_ds_create error %d\n",
>>>>>> + __func__, err);
>>>>>> goto out_err;
>>>>>> + }
>>>>>> }
>>>>>>
>>>>>>
>>>>>>
>>>>> Why is this non-critical?
>>>>> This looks like a real bug fix to me....
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>> @@ -1184,7 +1184,7 @@ pnfs_update_layout_commit(struct inode *inode,
>>>>>> struct nfs_page *nfs_page = nfs_list_entry(head->next);
>>>>>> int status;
>>>>>>
>>>>>> - dprintk("--> %s inode %p layout range: %Zd@%Lu\n", __func__, inode,
>>>>>> + dprintk("--> %s inode %p layout range: %Zd@%Zu\n", __func__, inode,
>>>>>> (size_t)(npages * PAGE_SIZE),
>>>>>> (loff_t)idx_start * PAGE_SIZE);
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>> Why is that?
>>>>> Do you get a warning in your environment?
>>>>> How about this instead?
>>>>>
>>>>> dprintk("--> %s inode %p layout range: %Zd@%Lu\n", __func__, inode,
>>>>> (size_t)(npages * PAGE_SIZE),
>>>>> - (loff_t)idx_start * PAGE_SIZE);
>>>>> + (u64)idx_start * PAGE_SIZE);
>>>>>
>>>>>
>>>>>
>>>> I don't get any warnings on 64 bit, but good catch. There is a problem,
>>>> but I think the main culprit is the parenthesis. pgoff_t is unsigned
>>>> long, so casting it to loff_t is actually wrong, and so is u64 it
>>>>
>>>>
>>> You want to do that to prevent overflow when multiplying with PAGE_SIZE
>>> on 32-bit machines...
>>>
>>>
>> I'm not sure what you mean by *that*. So you like my updated patch?
>>
>
> Not really :-(
>
> (unsigned long)(idx_start * PAGE_SIZE) can overflow when unsigned long
> is 32-bit wide so you want to cast idx_start to u64.
>
I see. I think it should be %llu then, and the indenting needs to be fixed.
Dean
> Benny
>
>
>
>> Dean
>>
>>> Benny
>>>
>>>
>>>
>>>> seems. So I think the real format is %lu. There is also a indentation
>>>> error.
>>>> Let me send a new patch.
>>>> Dean
>>>>
>>>>
>>>
>>>
>
>
More information about the pNFS
mailing list