[Toybox] Stat, wrong blockcount for F2FS filesystems?

darken darken at darken.eu
Sat Apr 8 03:09:16 PDT 2017


So `f2fs_getattr` expected a higher value that needed to be decreased by a
factor of 8, but the value is not fixed and in this case the value was
already correct and the `<<= 3` decreased by a factor of 8 anyways, leading
to the wrong blockcount value?

I guess there is not much I can do about this from my end. The affected
user is rooted though and could probably fix this by updating his kernel.

Thanks for the insight Elliott!

2017-04-08 3:55 GMT+02:00 enh <enh at google.com>:

> thanks. replied on the list, s/i/drosen/ :-)
>
> On Fri, Apr 7, 2017 at 6:55 PM, enh <enh at google.com> wrote:
>
>> yeah, there was a stat bug that was fixed. some filesystems modify the
>> block value before passing it back. drosen fixed sdcardfs to look at this
>> in "ANDROID: sdcardfs: Get the blocksize from the lower fs":
>>
>> int f2fs_getattr(struct vfsmount *mnt,
>> struct dentry *dentry, struct kstat *stat)
>> {
>> struct inode *inode = dentry->d_inode;
>> generic_fillattr(inode, stat);
>> stat->blocks <<= 3;
>> return 0;
>> }
>>
>> so that's where the factor of 8 would come from.
>>
>>
>> On Fri, Apr 7, 2017 at 11:31 AM, darken <darken at darken.eu> wrote:
>>
>>> Wrong train of thought, toybox stat doesn't do any blockcount
>>> calculation, but just gets the value from `st_blocks`.
>>>
>>> We are getting bad values from `/storage/emulated/0` which is FUSE
>>> mounted from `/data/media/0` and the blockcount values from `/data/media/0`
>>> are sane.
>>>
>>> So this seems to be FUSE related...
>>>
>>> ~Matthias
>>>
>>> 2017-04-07 18:10 GMT+02:00 darken <darken at darken.eu>:
>>>
>>>> I'm using stat to display filesize and allocated size in my Android app.
>>>>
>>>> I calculate the allocated size by multiplying the block count (%b) with
>>>> 512 Byte.
>>>>
>>>> I found out in https://github.com/landley/toybox/issues/41 that the
>>>> blocksize for the blockcount calculation is hardcoded to 512. So this
>>>> should work well (and has so far).
>>>>
>>>> Now a user of my app noticed that on their F2FS filesystem the
>>>> allocated size is suspiciously small:
>>>> https://github.com/d4rken/sdmaid-public/issues/830
>>>>
>>>> Specifically too small by a factor of 8, as if the blocksize used for
>>>> blockcount calculation is 4096 (4096/512).
>>>>
>>>> Could stat have a problem with calculating the blockcount on F2FS
>>>> filesystems or am I overlooking something else?
>>>>
>>>> ~Matthias
>>>>
>>>
>>>
>>> _______________________________________________
>>> Toybox mailing list
>>> Toybox at lists.landley.net
>>> http://lists.landley.net/listinfo.cgi/toybox-landley.net
>>>
>>>
>>
>>
>> --
>> Elliott Hughes - http://who/enh - http://jessies.org/~enh/
>> Android native code/tools questions? Mail me/drop by/add me as a reviewer.
>>
>
>
>
> --
> Elliott Hughes - http://who/enh - http://jessies.org/~enh/
> Android native code/tools questions? Mail me/drop by/add me as a reviewer.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.landley.net/pipermail/toybox-landley.net/attachments/20170408/eb843e39/attachment-0003.htm>


More information about the Toybox mailing list