From: Leonard Michlmayr <leonard.michlmayr@gmail.com>
To: Andreas Dilger <adilger@sun.com>
Cc: 474597@bugs.launchpad.net, Theodore Ts'o <tytso@mit.edu>,
linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: ext4_fiemap gives 0 extents for files smaller than a block (patch included)
Date: Mon, 25 Jan 2010 20:04:24 +0100 [thread overview]
Message-ID: <1264446264.27189.3.camel@michlmayr> (raw)
In-Reply-To: <372739E0-41AD-4DEC-9187-1396BE5894BD@sun.com>
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.
...
prev parent reply other threads:[~2010-01-25 19:04 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-11-04 18:42 ext4_fiemap gives 0 extents for files smaller than a block (patch included) Leonard Michlmayr
2009-11-04 19:44 ` Andreas Dilger
2009-11-04 21:44 ` Leonard Michlmayr
2010-02-08 13:54 ` Surbhi Palande
2010-02-12 18:42 ` [PATCH 2.6.32.7] ext4: number of blocks for fiemap Leonard Michlmayr
2010-02-12 21:49 ` Andreas Dilger
2010-02-12 23:20 ` Leonard Michlmayr
2010-02-15 19:50 ` tytso
2010-02-15 20:33 ` Eric Sandeen
2010-02-15 22:01 ` tytso
2010-01-25 19:04 ` Leonard Michlmayr [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1264446264.27189.3.camel@michlmayr \
--to=leonard.michlmayr@gmail.com \
--cc=474597@bugs.launchpad.net \
--cc=adilger@sun.com \
--cc=linux-ext4@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=tytso@mit.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).