From: Duncan <1i5t5.duncan@cox.net>
To: linux-btrfs@vger.kernel.org
Subject: Re: Lots of trouble hanging when rm files with many extents
Date: Mon, 21 Oct 2013 09:58:10 +0000 (UTC) [thread overview]
Message-ID: <pan$e420$3893a0c4$44863293$c1ca576c@cox.net> (raw)
In-Reply-To: 20131021133644.172387f5@virtall.com
Tomasz Chmielewski posted on Mon, 21 Oct 2013 13:36:44 +0900 as excerpted:
>> > I'll do some more tests with lots of extents to see if it's
>> > reproducible here as well.
>>
>> Interestingly, I've generally had qgroups enabled here as well,
>> possibly on all of these systems. Could that be the culprit?
>
> Possibly.
>
> Is there a reliable way to create files with many extents? I've tried
> playing with fallocate, but couldn't create files with too many extents
> with it.
While the absense of both qgroups and the problem here doesn't prove
anything, it's a datapoint. However, I /am/ a bit suspicious of them, as
it just seems people keep reporting weird problems and the common thread
often seems to be qgroups. I'm not a coder let alone a kernel/btrfs
coder so take this with a suitably sized grain of salt, but my intuition
says qgroups add more stress to the system and likely some as yet
unresolved race-points, and they raise the possibility of triggering
otherwise unrelated problems that already exist, along with any issues
they themselves might have.
That would fit with the many-thousands-of-extents issues here as well,
since especially on spinning rust that's going to create all sorts of
stress on the drive and filesystem and all sorts of potential to trigger
race conditions. If both of them increase stress and open up the
critical sections during which races are possible, putting the two
together is an effective torture-test likely indeed to bring out
otherwise extremely small window race conditions that might otherwise
very seldom trigger.
Meanwhile, on the extents issue I believe creating a large enough file
and then writing into random locations within it, saving, writing some
more, should do it, given btrfs' copy-on-write defaults.
Working with an almost full filesystem is likely to create worse
fragmentation too, since at some point btrfs just gives up trying to
create single-extent files and writes anywhere it can find space.
Finally, btrfs compression is said to look like fragmentation to
filefrag. I'm not sure whether it /acts/ like fragmentation or not, but
any suitably large file that gets btrfs compression will look fragmented
I believe because the compression blocks (128KB IIRC) are reported to
filefrag as individual extents due to the way btrfs handles and tracks
them.
--
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:[~2013-10-21 9:58 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-21 4:36 Lots of trouble hanging when rm files with many extents Tomasz Chmielewski
2013-10-21 9:58 ` Duncan [this message]
2013-10-21 13:47 ` John Goerzen
-- strict thread matches above, loose matches on Subject: below --
2013-10-22 9:40 Tomasz Chmielewski
2013-10-20 14:51 Tomasz Chmielewski
2013-10-21 3:40 ` John Goerzen
2013-10-19 23:12 John Goerzen
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$e420$3893a0c4$44863293$c1ca576c@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).