From: Josef Bacik <josef@redhat.com>
To: Phillip Susi <psusi@cfl.rr.com>
Cc: Josef Bacik <josef@redhat.com>, Miao Xie <miaox@cn.fujitsu.com>,
WuBo <wu.bo@cn.fujitsu.com>,
linux-btrfs@vger.kernel.org
Subject: Re: [PATCH] Btrfs: don't panic if orphan item already exists
Date: Wed, 14 Dec 2011 10:46:25 -0500 [thread overview]
Message-ID: <20111214154624.GA10536@localhost.localdomain> (raw)
In-Reply-To: <4EE8C391.9090501@cfl.rr.com>
On Wed, Dec 14, 2011 at 10:41:05AM -0500, Phillip Susi wrote:
> On 12/14/2011 10:27 AM, Josef Bacik wrote:
> >Except consider the case that the program was written intelligently and checks
> >for errors on truncate. So he writes 100G, truncates to 50M, and the truncate
> >fails and he closes the file and exits. Then somewhere down the road the inode
> >is evicted from cache and we reboot the box. Next time the box comes up it only
> >looks like a 50M file, except we're still taking up 100G of disk space, and we
> >have no idea there's space there and it's still taken up in the allocator so it
> >will just look like we've lost ~100G of space. This is why it's left there, so
> >everything can be cleaned up.
>
> I'm a little confused here. Is there a commit somewhere in there?
> How can the 100g allocation be committed, but not the i_size of the
> inode? Shouldn't either both or neither be committed? If both are
> committed, and then the truncate fails, then I would expect the
> system to come back up after a crash with the file still at 100g.
> That is, as long as the orphan item is not left in place after the
> failed truncate.
>
100g allocation succeeds
unmount
mount
truncate to 50m
i_size is set to 50m
truncate fails
orphan item left
unmount
mount
file looks like its only 50m but still has 100g of extents taking up space
orphan cleanup happens and the inode is truncated and the extra space is cleaned
up
Josef
next prev parent reply other threads:[~2011-12-14 15:46 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-12-13 17:55 [PATCH] Btrfs: don't panic if orphan item already exists Josef Bacik
2011-12-13 19:03 ` Phillip Susi
2011-12-13 19:09 ` Josef Bacik
2011-12-14 2:07 ` WuBo
2011-12-14 9:46 ` Miao Xie
2011-12-14 14:58 ` Josef Bacik
2011-12-14 15:14 ` Phillip Susi
2011-12-14 15:27 ` Josef Bacik
2011-12-14 15:41 ` Phillip Susi
2011-12-14 15:46 ` Josef Bacik [this message]
2011-12-14 19:59 ` Phillip Susi
2011-12-14 15:34 ` Josef Bacik
2011-12-14 15:35 ` Josef Bacik
2011-12-14 16:45 ` Chris Mason
2011-12-14 16:47 ` Josef Bacik
2011-12-15 1:42 ` Miao Xie
2011-12-15 1:56 ` WuBo
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=20111214154624.GA10536@localhost.localdomain \
--to=josef@redhat.com \
--cc=linux-btrfs@vger.kernel.org \
--cc=miaox@cn.fujitsu.com \
--cc=psusi@cfl.rr.com \
--cc=wu.bo@cn.fujitsu.com \
/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).