[Bug 474597] Re: ext4_fiemap gives 0 extents for files smaller than a block (patch included)

2010-02-08 Thread Surbhi Palande
Leonard Michlmayr wrote:
> Thank you for your reply.
> 
>>> @@ -3700,7 +3701,8 @@
>>> start_blk = start >> inode->i_sb->s_blocksize_bits;
>>> -   len_blks = len >> inode->i_sb->s_blocksize_bits;
>>> +   end_blk = (start + len - 1) >> inode->i_sb->s_blocksize_bits;
>>> +   len_blks = end_blk - start_blk + 1;
>> I don't think this is quite correct either.  For example, if blocksize  
>> is 1024
>> and start is 1023 (start_blk = 0) and len is 2 (end = 1024, end_blk =  
>> 1) then
>> len_blks = 2 which is too much.
> 
> I think that len_blks = 2 is the correct value, because the requested
> region extends into 2 blocks (namely 0 and 1). If both blocks are in two
> separate extents, then ext4_ext_walk_space should report 2 extents. (If
> it's the same extent, only 1 will be reported anyways)
> 
>> I think the right calculation here is:
>>
>>end_blk = (start + len + inode->i_sb->s_blocksize - 1) >>
>>  inode->i_sb->s_blocksize_bits;
>>len_blks = end_blk - start_blk;
>>
> 
> This is exactly the same (provided that len > 0). You can convince
> yourself easily that ((blocksize + x) >> blocksize_bits == x >>
> blocksize_bits + 1) for any positive x, because the lower bits of
> blocksize are all 0. (Your calculation would handle the case len == 0
> right, if that was allowed.)
> 
> Regards
> Leonard

I was wondering if there is any update on the status of this patch.
Thanks !

Warm Regards,
Surbhi.

-- 
the FS_IOC_FIEMAP ioctl does not report extents of small files
https://bugs.launchpad.net/bugs/474597
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs


[Bug 474597] Re: ext4_fiemap gives 0 extents for files smaller than a block (patch included)

2010-01-25 Thread Leonard Michlmayr
Do you have any news on this bug?

Will you apply the patch? Do you not plan to apply the patch?
Do you need an update of the patch?

Regards
Leonard

Am Mittwoch, den 04.11.2009, 12:44 -0700 schrieb Andreas Dilger:
> On 2009-11-04, at 11:42, Leonard Michlmayr wrote:
> > Fiemap (ioctl) does not return any extents for small files on ext4.
> > (fm_start=0, fm_length=filesize)
> >
> > File affected: fs/ext4/extents.c
> >
> > I found the reason of the bug: wrong rounding. It will not only affect
> > small files, but any request that overlaps an extent boundary by less
> > that blocksize.
> 
> >
> > @@ -3700,7 +3701,8 @@
> > start_blk = start >> inode->i_sb->s_blocksize_bits;
> > -   len_blks = len >> inode->i_sb->s_blocksize_bits;
> > +   end_blk = (start + len - 1) >> inode->i_sb->s_blocksize_bits;
> > +   len_blks = end_blk - start_blk + 1;
> 
> I don't think this is quite correct either.  For example, if blocksize  
> is 1024
> and start is 1023 (start_blk = 0) and len is 2 (end = 1024, end_blk =  
> 1) then
> len_blks = 2 which is too much.
> 
> I think the right calculation here is:
> 
>end_blk = (start + len + inode->i_sb->s_blocksize -  
> 1) >>
>  inode->i_sb->s_blocksize_bits;
>len_blks = end_blk - start_blk;
> 
> I'm also wondering (unrelated to this bug) why inode->i_sb- 
>  >s_blocksize_bits
> is used instead of inode->i_blkbits?  That is probably worth a  
> separate cleanup
> patch.
...

-- 
the FS_IOC_FIEMAP ioctl does not report extents of small files
https://bugs.launchpad.net/bugs/474597
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs