On 2018/3/30 19:26, Chao Yu wrote:
> On 2018/3/30 18:51, Junling Zheng wrote:
>> Hi,
>>
>> On 2018/3/30 17:28, Chao Yu wrote:
>>> Hi All,
>>>
>>> On 2018/3/28 1:19, Jaegeuk Kim wrote:
>>>> From: katao <ka...@xiaomi.com>
>>>>
>>>> The args of wanted_total_sectors is calculated based
>>>> on the DEFAULT_SECTOR_SIZE(512Bytes).get_device_info(i)
>>>> may be reset dev_sector_size, we should reset the number
>>>> of wanted_total_sectors.
>>>>
>>>> This bug was reported to Google Issue Tracker.
>>>> Link: https://issuetracker.google.com/issues/76407663
>>>
>>> I don't think this is the right way, since now we have changed previous
>>> sector_counter's meaning, some applications, for example, like xfstests 
>>> will get
>>> device's real sector size via blockdev --getsize64, then calculate total 
>>> wanted
>>> sector count by total_wanted_size / real_sector_size, if we changed default
>>> sector size to 512bytes, xfstests will pass a wrong sector number, result in
>>> getting wrong partition size.
>>>
>>> For something worse, in order to get the correct sector number, we have to
>>> change the way of calculation method of xfstests for new mkfs, but how can
>>> xfstests know the current version of mkfs is new or old...
>>>
>>> I think the change didn't consider backward compatibility of mkfs, so, in 
>>> order
>>> to keep that, we'd better to let user pass the right sector number based on
>>> their device, or we can introduce a new parameter to indicate user wanted 
>>> total
>>> size.
>>>
>>> How do you think?
>>>
>>
>> Agree. It's not backward-compatible. Most users can pass the correct sector 
>> number
>> calculated by the real sector size. For those very few users using 512B 
>> despite of
>> the actual sector size, all we need to do is informing them the real sector 
>> size.
> 
> The problem is via passed sector number, we can't know user has already knew 
> the
> real sector size or not, so we don't have any chance to info them.
> 

Yeah, we can't guess users' behaviors. And only when wanted size is over device 
size,
we can inform users the real sector size.

> Thanks,
> 
>>
>> Thanks,
>> Junling
>>
>>> Thanks,
>>>
>>>>
>>>> Signed-off-by: katao <ka...@xiaomi.com>
>>>> Signed-off-by: Jaegeuk Kim <jaeg...@google.com>
>>>> ---
>>>>  lib/libf2fs.c | 9 ++++++++-
>>>>  1 file changed, 8 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/lib/libf2fs.c b/lib/libf2fs.c
>>>> index 0c684d5..5f11796 100644
>>>> --- a/lib/libf2fs.c
>>>> +++ b/lib/libf2fs.c
>>>> @@ -799,8 +799,15 @@ int get_device_info(int i)
>>>>  #ifdef BLKSSZGET
>>>>            if (ioctl(fd, BLKSSZGET, &sector_size) < 0)
>>>>                    MSG(0, "\tError: Using the default sector size\n");
>>>> -          else if (dev->sector_size < sector_size)
>>>> +          else if (dev->sector_size < sector_size){
>>>> +                  /*
>>>> +                   * wanted_total_sectors need to be reset by new
>>>> +                   * sector_size.
>>>> +                   */
>>>> +                  c.wanted_total_sectors = (c.wanted_total_sectors *
>>>> +                                          dev->sector_size) / sector_size;
>>>>                    dev->sector_size = sector_size;
>>>> +          }
>>>>  #endif
>>>>  #ifdef BLKGETSIZE64
>>>>            if (ioctl(fd, BLKGETSIZE64, &dev->total_sectors) < 0) {
>>>>
>>>
>>>
>>> .
>>>
>>
>>
>>
>> .
>>
> 
> 
> .
> 



------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to