All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ric Wheeler <ricwheeler@gmail.com>
To: Lukas Czerner <lczerner@redhat.com>
Cc: Andreas Dilger <adilger.kernel@dilger.ca>,
	linux-ext4@vger.kernel.org, tytso@mit.edu, sandeen@redhat.com
Subject: Re: [PATCH] e2fsck: Discard free data and inode blocks.
Date: Fri, 22 Oct 2010 10:46:02 -0400	[thread overview]
Message-ID: <4CC1A3AA.6040004@gmail.com> (raw)
In-Reply-To: <alpine.LFD.2.00.1010221620490.3390@dhcp-lab-213.englab.brq.redhat.com>

  On 10/22/2010 10:32 AM, Lukas Czerner wrote:
> On Fri, 22 Oct 2010, Ric Wheeler wrote:
>
>>   On 10/22/2010 07:43 AM, Lukas Czerner wrote:
>>> On Fri, 22 Oct 2010, Ric Wheeler wrote:
>>>
>>>>    On 10/22/2010 05:12 AM, Lukas Czerner wrote:
>>>>> On Thu, 21 Oct 2010, Andreas Dilger wrote:
>>>>>
>>>>>> On 2010-10-21, at 08:15, Lukas Czerner wrote:
>>>>>>> In Pass 5 when we are checking block and inode bitmaps we have great
>>>>>>> opportunity to discard free space and unused inodes on the device,
>>>>>>> because bitmaps has just been verified as valid. This commit takes
>>>>>>> advantage of this opportunity and discards both, all free space and
>>>>>>> unused inodes.
>>>>>>>
>>>>>>> I have added new option '-K' which when set, disables discard. Also
>>>>>>> when
>>>>>>> the underlying device does not support discard, or BLKDISCARD ioctl
>>>>>>> returns any kind of error, or when some errors occurred in bitmaps,
>>>>>>> the
>>>>>>> discard is disabled.
>>>>>> I'm always a bit nervous with patches like this, that will prevent
>>>>>> data
>>>>>> recovery after an e2fsck run (which seems like the opposite of what we
>>>>>> want from e2fsck).
>>>>>>
>>>>>> Two suggestions:
>>>>>> - it probably makes sense to disable this by default, and allow it to
>>>>>> be
>>>>>>      specified on the command-line and e2fsck.conf
>>>>>> - should we really have a short option, or a "-E discard" and "-E
>>>>>> nodiscard"
>>>>>>      options, which allow us to change the default easily at some later
>>>>>> time
>>>>>>      (which we can't do with a single -K flag)
>>>>> Right, I agree it would be probably better to disable this by default.
>>>>>
>>>>>
>>>> If we do disable it by default, I think that we might also want to be
>>>> consistent and disable the discard support in mkfs by default as well?
>>>>
>>>> thanks!
>>>>
>>>> Ric
>>>>
>>> I think that this will not be necessary. There is a concern that it might
>>> prevent data recovery after fsck because it might be already discarded
>>> (some weird fs corruption?) in pass 5. However in my opinion this is a
>>> very small window (if there even is any), because we have already passed
>>> check 1-4 and we have just confirmed that group descriptors should be ok.
>>> But when there is an even slight chance this might happen I would suggest
>>> that we really disable it by default (at least for a while - we will see
>>> then).
>>>
>>> On the other hand there is nothing to be afraid of in the case of mkfs,
>>> because we can not possibly lose any relevant data, because discard is
>>> done before the filesystem gets created.
>>>
>>> -Lukas
>> My concern with mkfs is that we have seen several devices which don't handle
>> this well.
>>
>> We will be using this TRIM (or UNMAP, etc) on lots of old, creaky hardware
>> with old firmware, so having it try on all devices is almost certainly going
>> to cause breakages, hangs, etc in the field....
>>
>> Ric
>>
> Well, so far the only breakages I have seen was with lots of small TRIMs
> (or UNMAPs, etc) issued in random pattern, never in case of mkfs which
> is quite a opposite - big sequential ranges.
>
> Hangs should be covered by those two patches:
>
> http://marc.info/?l=linux-ext4&m=128774558623608&w=2
> http://marc.info/?l=linux-ext4&m=128767099123375&w=2
>
> if, of course, they get upstream. Also there is a big win, when discard
> also zeroes data, because in that case we can just skip inode table
> initialization (zeroing) without any need of in-kernel lazyinit code
> enabled. And we get all this for free. It was introduced with Sandeens
> patch:
>
> http://marc.info/?l=linux-ext4&m=128234048208327&w=2
>
> So, I would rather leave it on by default.
>
> -Lukas

You cannot 100% depend on discard zeroing blocks - that is not a universal 
requirement of devices that support it. Specifically, for ATA devices, I think 
that there are optional bits that specify how a device will behave when you read 
from a trimmed region.

Ric


  reply	other threads:[~2010-10-22 14:46 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-10-21 14:15 [PATCH] e2fsck: Discard free data and inode blocks Lukas Czerner
2010-10-21 18:07 ` Andreas Dilger
2010-10-22  9:12   ` Lukas Czerner
2010-10-22 11:30     ` Ric Wheeler
2010-10-22 11:43       ` Lukas Czerner
2010-10-22 14:12         ` Ric Wheeler
2010-10-22 14:32           ` Lukas Czerner
2010-10-22 14:46             ` Ric Wheeler [this message]
2010-10-22 15:37               ` Eric Sandeen
2010-10-22 15:41                 ` Ric Wheeler
2010-10-22 17:03                   ` Martin K. Petersen
2010-10-22 17:14                     ` Ric Wheeler
2010-10-22 17:29                       ` Martin K. Petersen
2010-10-22 18:23                     ` Eric Sandeen
2010-10-22 17:50               ` Andreas Dilger
2010-10-22 18:01                 ` Lukas Czerner
2010-10-22 18:17                   ` Andreas Dilger
2010-10-22 18:23                     ` Ric Wheeler
2010-10-22 21:19                       ` Martin K. Petersen
2010-10-22 18:29                 ` Eric Sandeen
2010-10-22 21:01                 ` Martin K. Petersen
2010-10-22 18:00             ` Andreas Dilger
2010-10-22 18:27               ` Eric Sandeen
2010-10-22 18:31                 ` Lukas Czerner
  -- strict thread matches above, loose matches on Subject: below --
2010-10-11 10:37 Lukas Czerner

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=4CC1A3AA.6040004@gmail.com \
    --to=ricwheeler@gmail.com \
    --cc=adilger.kernel@dilger.ca \
    --cc=lczerner@redhat.com \
    --cc=linux-ext4@vger.kernel.org \
    --cc=sandeen@redhat.com \
    --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.