All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andreas Dilger <adilger@sun.com>
To: Peng Tao <bergwolf@gmail.com>
Cc: linux-ext4@vger.kernel.org, tytso@mit.edu
Subject: Re: [PATCH-e2fsprogs] filefrag: fix fm_start in filefrag_fiemap	loop
Date: Wed, 03 Jun 2009 15:37:24 -0600	[thread overview]
Message-ID: <20090603213724.GU9002@webber.adilger.int> (raw)
In-Reply-To: <6149e97b0906021821s315005a7lb1c93b74b7f35489@mail.gmail.com>

On Jun 03, 2009  09:21 +0800, Peng Tao wrote:
> When used with -v and the targeted file has more than 144
> extents(double of the length of fm_extents array provided by buf),
> filefrag_fiemap loops and calls fiemap ioctl() multiple times to
> calculate the actual number of extents in a file. Each call to fiemap
> ioctl() uses  fm_start as the starting logical offset. The patch fixes
> fm_start in each loop( except for the first one) and makes the extent
> calculation correct for files with more that 144 extents.
> 
> To produce the problem, first run filefrag -v on a highly fragmented
> file. Then change the buf size in filefrag_fiemap to make it large
> enough to have all the extent mapped in a single loop and run filefrag
> -v after recompiling. The former will produce a much smaller extent
> count because of the false fm_start used in the loop. And the two will
> produce different extent output since the 145th extent.
> 
> BTW, should I resend the patch to include the above explanation?

Yes, please do.  I verified that the code as modified (just '=') is also
present in the Lustre fiemap patch, so I'm not sure how it got += there.
Possibly from an older version of the patch.

> > On Jun 03, 2009  02:03 +0800, Peng Tao wrote:
> >> Signed-off-by: Peng Tao <bergwolf@gmail.com>
> >> ---
> >>  misc/filefrag.c |    2 +-
> >>  1 files changed, 1 insertions(+), 1 deletions(-)
> >>
> >> diff --git a/misc/filefrag.c b/misc/filefrag.c
> >> index 6bea2cd..7786646 100644
> >> --- a/misc/filefrag.c
> >> +++ b/misc/filefrag.c
> >> @@ -239,7 +239,7 @@ int filefrag_fiemap(int fd, int blk_shift, int *num_extents)
> >>                       n++;
> >>               }
> >>
> >> -             fiemap->fm_start += fm_ext[i-1].fe_logical +
> >> +             fiemap->fm_start = fm_ext[i-1].fe_logical +
> >>                                                       fm_ext[i-1].fe_length;
> >>       } while (last == 0);
> >>
> >> --
> >> 1.6.2.GIT

Cheers, Andreas
--
Andreas Dilger
Sr. Staff Engineer, Lustre Group
Sun Microsystems of Canada, Inc.

--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

      reply	other threads:[~2009-06-03 21:37 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-06-02 18:03 [PATCH-e2fsprogs] filefrag: fix fm_start in filefrag_fiemap loop Peng Tao
2009-06-02 18:35 ` Andreas Dilger
2009-06-03  1:21   ` Peng Tao
2009-06-03 21:37     ` Andreas Dilger [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=20090603213724.GU9002@webber.adilger.int \
    --to=adilger@sun.com \
    --cc=bergwolf@gmail.com \
    --cc=linux-ext4@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.