From: Ted Ts'o <tytso@mit.edu>
To: Lukas Czerner <lczerner@redhat.com>
Cc: Jan Kara <jack@suse.cz>, linux-ext4@vger.kernel.org
Subject: Re: [PATCH] ext4: Fix trimming starting with block 0 with small blocksize
Date: Tue, 11 Jan 2011 12:59:08 -0500 [thread overview]
Message-ID: <20110111175908.GB2917@thunk.org> (raw)
In-Reply-To: <alpine.LFD.2.00.1101111138400.3095@dhcp-lab-213.englab.brq.redhat.com>
Argh. In the future, I'd really appreciate if you explicitly label
patches with a version number, so I can more easily keep track of
which one is the latest.
It's also best if you send patches as free-standing separate e-mail
messages (one message per patch, using git format-patch and git
send-email), so they can more easily tracked using patchwork. Sending
me patches which are included as a quoted reply (as you did here) means
I have to manually pick out the patch, or apply it the patch by hand.
Both of these would make my life much easier; and makes it more likely
I will apply your patches quickly.
Thanks,
- Ted
On Tue, Jan 11, 2011 at 11:40:49AM +0100, Lukas Czerner wrote:
> On Mon, 10 Jan 2011, Jan Kara wrote:
>
> > When s_first_data_block is not zero (which happens e.g. when block size is 1KB)
> > and trim ioctl is called to start trimming from block 0, the math in
> > ext4_get_group_no_and_offset() overflows. The overall result is that ioctl
> > returns EINVAL which is kind of unexpected and we probably don't want
> > userspace tools to bother with internal details of filesystem structure.
> > So just silently increase starting offset (and shorten length) when starting
> > block is below s_first_data_block.
> >
> > CC: Lukas Czerner <lczerner@redhat.com>
> > Signed-off-by: Jan Kara <jack@suse.cz>
> > ---
> > fs/ext4/mballoc.c | 6 ++++++
> > 1 files changed, 6 insertions(+), 0 deletions(-)
> >
> > diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c
> > index 4c4766c..b9c2aad 100644
> > --- a/fs/ext4/mballoc.c
> > +++ b/fs/ext4/mballoc.c
> > @@ -4819,6 +4819,8 @@ int ext4_trim_fs(struct super_block *sb, struct fstrim_range *range)
> > ext4_group_t group, ngroups = ext4_get_groups_count(sb);
> > ext4_grpblk_t cnt = 0, first_block, last_block;
> > uint64_t start, len, minlen, trimmed;
> > + ext4_fsblk_t first_data_blk =
> > + le32_to_cpu(EXT4_SB(sb)->s_es->s_first_data_block);
> > int ret = 0;
> >
> > start = range->start >> sb->s_blocksize_bits;
> > @@ -4828,6 +4830,10 @@ int ext4_trim_fs(struct super_block *sb, struct fstrim_range *range)
> >
> > if (unlikely(minlen > EXT4_BLOCKS_PER_GROUP(sb)))
> > return -EINVAL;
> > + if (start < first_data_blk) {
> > + len -= first_data_blk - start;
> > + start = first_data_blk;
> > + }
> >
> > /* Determine first and last group to examine based on start and len */
> > ext4_get_group_no_and_offset(sb, (ext4_fsblk_t) start,
> >
>
> Hi Ted,
>
> forget my previous patch, this is the right one. Thanks Jan!
>
> -Lukas
next prev parent reply other threads:[~2011-01-11 17:59 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-01-10 18:00 [PATCH] ext4: Fix trimming starting with block 0 with small blocksize Jan Kara
2011-01-11 10:40 ` Lukas Czerner
2011-01-11 17:59 ` Ted Ts'o [this message]
2011-01-11 18:11 ` Lukas Czerner
2011-01-11 18:34 ` Ted Ts'o
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=20110111175908.GB2917@thunk.org \
--to=tytso@mit.edu \
--cc=jack@suse.cz \
--cc=lczerner@redhat.com \
--cc=linux-ext4@vger.kernel.org \
/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.