From: Duncan <1i5t5.duncan@cox.net>
To: linux-btrfs@vger.kernel.org
Subject: Re: 6TB partition, Data only 2TB - aka When you haven't hit the "usual" problem
Date: Tue, 12 Jan 2016 02:05:58 +0000 (UTC) [thread overview]
Message-ID: <pan$e4bd0$7510e31$e1a9f49b$f50f8e00@cox.net> (raw)
In-Reply-To: 20160111223017.GE422@carfax.org.uk
Hugo Mills posted on Mon, 11 Jan 2016 22:30:17 +0000 as excerpted:
> On Mon, Jan 11, 2016 at 03:20:36PM -0700, Chris Murphy wrote:
>> On Mon, Jan 11, 2016 at 3:10 PM, Hugo Mills <hugo@carfax.org.uk> wrote:
>> >
>> > There is, as far as I can tell from some years of seeing reports of
>> > this bug, no correlation with RAID level, hardware, OS, kernel
>> > version, FS size, usage of the FS at failure, or allocation level of
>> > either data or metadata at failure.
>> >
>> > I haven't tried correlating with the phase of the moon or the
>> > losses on Lloyds Register yet.
>>
>> Huh. So it's goofy cakes.
>>
>> This is specifically where btrfs_free_extent produces errno -28 no
>> space left, and then the fs goes read-only?
>
> The symptoms I'm using for a diagnosis of this bug are that the FS
> runs out of (usually data) space when there's still unallocated space
> remaining that it could use for another block group.
>
> Forced RO isn't usually a symptom, although the FS can get into a
> state where you can't modify it (as distinct from being explicitly
> read-only).
>
> Block-group level operations, like balance, device delete, device
> add sometimes seem to have some kind of (usually small) effect on the
> point at which the error occurs. If you hit the problem and run a
> balance, you might end up making things worse by a couple of gigabytes,
> or making things better by the same amount, or having no effect at all.
I had the problem for some kernels on my 256 MiB mixed-mode dup (so 128
MiB capacity) /boot and its backup on my other ssd, when I'd recreate
them to eliminate any hidden historic issues and take advantage of newer
btrfs features, as I do all my btrfs from time to time, as an extension
of my regular backups procedures.
My newly mkfs.btrfsed /boot or backup would NOT go read-only, but would
ENOSPC as I attempted to copy files over from the older one -- same size
and both btrfs so obviously the files should all fit.
The problem was obviously due to btrfs refusing to create a new chunk
when the existing chunk (mixed-mode, so both data and metadata, at this
size filesystem we're talking 16 MiB chunks or so) ran out of space.
The first time it happened I think I fiddled with balance, etc, maybe
umount/remount, and eventually was able to copy the files. I don't
remember exactly.
The second time, I had been copying everything over in one go, and some
of it copied while some didn't. In particular, it was the grub2 modules
subdir, grub/modules, that failed with some copied and some not. So in mc
I did a directory diff between source and destination, which selected the
files that hadn't copied in the source. I then tried copying them again,
and I think a few copied before I got another ENOSPC. At some point I
think I fell back to trying one at a time.
Eventually they all copied. Apparently, under some conditions a file
copy that crosses the chunk threshold will trigger an ENOSPC instead of
creation of another chunk, despite free space being available for
creation of those chunks. But by trying smaller files first, that would
fit into the existing chunks, then trying a file that would force
creation of a new chunk again, I eventually no longer triggered the
failure to create chunk problem, and it created one as it should of,
thereby allowing me to continue copying files normally. But I'm not sure
if it was simply chance based (maybe a race between the chunk creation
and the attempt to copy data into it) and I tried enough times that
eventually one succeeded, or if it was some filesystem condition that
somehow eventually changed and let the new chunk be created, or if,
perhaps, it was time based and the chunk creation eventually
"registered", so files could then copy without issue.
But the last time I redid my /boot, perhaps 3.16 or 3.18 timeframe, the
problem didn't occur at all, so I thought it must have been fixed. Now
I'm reading that no, it's still triggering for many.
Anyway, you can add really small (256 MiB) mixed-mode dup btrfs to the
list of btrfs where it is known to sometimes trigger, if that combination
wasn't on the list already.
I've not had the problem occur on my other btrfs.
One thing that occurs to me is that given that it seems to be a
relatively straightforward failure under certain conditions to allocate a
new chunk, the fact that btrfs post 3.17 or whatever now cleans up empty
chunks, should in turn mean that btrfs has to create new chunks to
accommodate new or growing files much more often, which should mean that
people run into this issue much more frequently as well... unless there's
some other limiting characteristic that keeps it from happening in the
same proportion of chunk creations now, that it did back when empty
chunks were kept around and thus fewer chunk creations were needed.
Meanwhile, this case seems to have the additional complication of forcing
the btrfs to read-only, something that doesn't seem to occur in many case
and certainly didn't happen in mine. With the USB resets and etc, it
could be considered a different bug, but it could also be that they
simply create an environment much more likely to trigger the bug than
normally working hardware. If so, it could be some clue to grasp at to
try (again) to track this thing down.
Meanwhile(2), on a personal note, I'm not particularly happy to find that
this bug still exists, and that my last /boot remake simply didn't
trigger it for some reason, while the previous two did. That means I
have to look forward to the possibility of it happening again. And I can
tell you from experience, it's a pretty frustrating bug, particularly
when you're copying from a btrfs of the exact same size and
configuration, so you KNOW the files fit!
--
Duncan - List replies preferred. No HTML msgs.
"Every nonfree program has a lord, a master --
and if you use the program, he is your master." Richard Stallman
next prev parent reply other threads:[~2016-01-12 2:06 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-12-30 21:44 6TB partition, Data only 2TB - aka When you haven't hit the "usual" problem cheater00 .
2015-12-30 22:13 ` Chris Murphy
2016-01-02 2:09 ` cheater00 .
2016-01-02 2:10 ` cheater00 .
[not found] ` <CA+9GZUiWQ2tAotFuq2Svkjnk+2Quz5B8UwZSSpm4SJfhqfoStQ@mail.gmail.com>
2016-01-07 21:55 ` Chris Murphy
[not found] ` <CA+9GZUjLcRnRX_mwO-McXWFd+G4o3jtBENMLnszg-rJTn6vL1w@mail.gmail.com>
[not found] ` <CAJCQCtRhYZi9nqWP_LYmZeg1yRQVkpnmUDQ-P5o1-gc-3w+Pdg@mail.gmail.com>
2016-01-09 20:00 ` cheater00 .
2016-01-09 20:26 ` Hugo Mills
2016-01-09 20:59 ` cheater00 .
2016-01-09 21:04 ` Hugo Mills
2016-01-09 21:07 ` cheater00 .
2016-01-09 21:15 ` Hugo Mills
2016-01-10 3:59 ` cheater00 .
2016-01-10 6:16 ` Russell Coker
2016-01-10 22:24 ` cheater00 .
2016-01-10 22:32 ` Lionel Bouton
2016-01-11 13:05 ` Austin S. Hemmelgarn
2016-01-11 13:11 ` cheater00 .
2016-01-11 13:30 ` cheater00 .
2016-01-11 13:45 ` cheater00 .
2016-01-11 14:04 ` cheater00 .
2016-01-12 2:18 ` Duncan
2016-08-04 16:53 ` Lutz Vieweg
2016-08-04 20:30 ` Chris Murphy
2016-08-05 10:56 ` Lutz Vieweg
2016-08-05 12:12 ` Austin S. Hemmelgarn
2016-08-05 13:14 ` Lutz Vieweg
2016-08-05 20:03 ` Gabriel C
2016-08-25 15:48 ` Lutz Vieweg
2016-01-11 14:10 ` Austin S. Hemmelgarn
2016-01-11 16:02 ` cheater00 .
2016-01-11 16:33 ` cheater00 .
2016-01-11 20:29 ` Henk Slager
2016-01-12 1:16 ` Duncan
2016-01-11 0:13 ` Chris Murphy
2016-01-11 9:03 ` Hugo Mills
2016-01-11 13:04 ` cheater00 .
2016-01-11 21:31 ` Chris Murphy
2016-01-11 22:10 ` Hugo Mills
2016-01-11 22:20 ` Chris Murphy
2016-01-11 22:30 ` Hugo Mills
2016-01-11 22:39 ` Chris Murphy
2016-01-11 23:07 ` Hugo Mills
2016-01-11 23:12 ` cheater00 .
2016-01-11 23:05 ` cheater00 .
2016-01-12 2:05 ` Duncan [this message]
2016-01-11 22:57 ` cheater00 .
2016-01-10 14:14 ` Henk Slager
2016-01-10 23:47 ` cheater00 .
2016-01-11 0:24 ` Chris Murphy
2016-01-11 6:07 ` cheater00 .
2016-01-11 6:24 ` cheater00 .
2016-01-11 7:54 ` cheater00 .
2016-01-12 0:35 ` Duncan
2016-01-11 19:50 ` Henk Slager
2016-01-11 23:03 ` cheater00 .
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='pan$e4bd0$7510e31$e1a9f49b$f50f8e00@cox.net' \
--to=1i5t5.duncan@cox.net \
--cc=linux-btrfs@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 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).