From: Martin Steigerwald <Martin@lichtvoll.de>
To: Duncan <1i5t5.duncan@cox.net>
Cc: linux-btrfs@vger.kernel.org
Subject: Re: why am I getting "No space left on device" here?
Date: Wed, 15 Jan 2014 20:40:29 +0100 [thread overview]
Message-ID: <2656163.prAmgAF69M@merkaba> (raw)
In-Reply-To: <pan$6d4dc$e3f7651a$b8f89b4a$ecb5f643@cox.net>
Am Mittwoch, 15. Januar 2014, 19:05:41 schrieb Duncan:
> But just as my already allocated mixed-mode chunks were just about full
> and I needed another one allocated to complete the job, so your data
> chunks are full or very close, according to btrfs fi df, and you need a
> new one allocated (and if the file is greater than a gig in size, likely
> more than one) to finish the job.
>
> And in both our cases, there's plenty of unallocated space in the pool,
> but for whatever reason, btrfs isn't allocating that new chunk when it
> should! Why, I can't say, but as I mentioned, I was able to work around
> the problem here by trying the remaining files in a different order, and
> at some point, btrfs figured out it needed that new chunk allocated, and
> everything went fine after that.
>
> So... why btrfs is failing to allocate a new chunk when it needs to I
> can't say, but I *CAN* say you're not the only one to have run into the
> problem recently; I did too.
>
> And just as I did, here, with a bit of monkeying around, you can
> /probably/ get btrfs to allocate that new data chunk and get on with
> things. But the trouble is, since I don't know what the exact problem is
> or what exactly I did to persuade btrfs to do that new chunk allocation,
> I can't tell you exactly what to do to get it to happen, all I can do is
> suggest you try copying smaller files or files of different sizes around
> a bit, hoping to trigger that allocation.
>
> Once that chunk allocation happens, you should be good for at least a
> gig, since that's the data-chunk size, but if your file is over a gig in
> size, you may run into the problem again. In that case... Well, you
> could try copying several gigs of smaller files, then once it allocates
> what you need, delete them, leaving the data chunks allocated but with
> enough unused space to copy the original multi-gig file over.
I think you can cause BTRFS to allocate a chunk or more by creating a file with
the fallocate command. Unless BTRFS doesn´t do it due to a bug and errors out
with no space left.
fallocate gives also an easy way to find out how much it might still allocate
and at what point it fails – and that without writing tons of data first.
fallocate just triggers allocation and does not write any actual data.
--
Martin 'Helios' Steigerwald - http://www.Lichtvoll.de
GPG: 03B0 0D6C 0040 0710 4AFA B82F 991B EAAC A599 84C7
next prev parent reply other threads:[~2014-01-15 19:40 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-15 10:55 why am I getting "No space left on device" here? Tomasz Chmielewski
2014-01-15 19:05 ` Duncan
2014-01-15 19:40 ` Martin Steigerwald [this message]
2014-01-15 21:50 ` Duncan
2014-01-15 19:38 ` Chris Murphy
2014-01-15 20:22 ` Tomasz Chmielewski
2014-01-18 0:15 ` Tomasz Chmielewski
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=2656163.prAmgAF69M@merkaba \
--to=martin@lichtvoll.de \
--cc=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 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.