From: Theodore Tso <tytso@mit.edu>
To: "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
Cc: linux-ext4@vger.kernel.org, Jan Kara <jack@suse.cz>
Subject: Re: [PATCH 1/2] [PATCH] ext4: Add inode to the orphan list during block allocation failure
Date: Sat, 4 Apr 2009 23:11:16 -0400 [thread overview]
Message-ID: <20090405031116.GG7553@mit.edu> (raw)
In-Reply-To: <1238491766-13182-1-git-send-email-aneesh.kumar@linux.vnet.ibm.com>
On Tue, Mar 31, 2009 at 02:59:25PM +0530, Aneesh Kumar K.V wrote:
> We should add inode to the orphan list in the same transaction
> as block allocation. This ensures that if we crash after a failed
> block allocation and before we do a vmtruncate we don't leak block
> (ie block marked as used in bitmap but not claimed by the inode).
How likely is this going to happen? If it's a failure in the block
allocation, we will have really end up with blocks outside i_size?
And in that case, I'm missing how this ends up being a leaked block,
since presumably the block is still being referenced by the inode. Am
I missing something here?
I guess it can happen if do_journal_get_write_access() returns an
error, which could potentially happen if there is a ENOMEM error
coming from the jbd2 layer. But that brings up another potential
problem. It's possible for vmtruncate() to fail; if ext4_truncate()
fails too early (particularly in ext4_ext_truncate, due to a memory
error in a jbd2 routines), it's possible for it to return without
calling ext4_orphan_del() --- and stray inodes on the orphan list will
cause the kernel to panic on umount.
I think this can be fixed by making sure that ext4_truncate() and
ext4_ext_truncate() calls ext4_orphan_del() in *all* of their error
paths. That *should* the problem, since at the moment, it doesn't
look vmtruncate() will return without calling inode->i_op->truncate().
But could you double check this carefully?
Thanks,
- Ted
next prev parent reply other threads:[~2009-04-05 4:09 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-03-26 18:21 [PATCH] ext3: Avoid false EIO errors Jan Kara
2009-03-27 18:08 ` Aneesh Kumar K.V
2009-03-27 20:24 ` Jan Kara
2009-03-30 8:25 ` Aneesh Kumar K.V
2009-03-30 10:32 ` Jan Kara
2009-03-30 10:58 ` Aneesh Kumar K.V
2009-03-30 16:05 ` Jan Kara
2009-03-31 4:45 ` Aneesh Kumar K.V
2009-03-31 9:29 ` [PATCH 1/2] [PATCH] ext4: Add inode to the orphan list during block allocation failure Aneesh Kumar K.V
2009-03-31 9:29 ` [PATCH 2/2] [PATCH] ext4: truncate the file properly if we fail to copy data from userspace Aneesh Kumar K.V
2009-03-31 9:38 ` Jan Kara
2009-04-05 3:22 ` Theodore Tso
2009-04-06 10:07 ` Jan Kara
2009-03-31 9:34 ` [PATCH 1/2] [PATCH] ext4: Add inode to the orphan list during block allocation failure Jan Kara
2009-04-05 3:11 ` Theodore Tso [this message]
2009-04-06 10:05 ` Jan Kara
2009-06-05 4:31 ` Theodore Tso
2009-06-05 6:22 ` Theodore Tso
2009-06-05 7:24 ` Theodore Tso
2009-06-05 23:42 ` Jan Kara
2009-06-05 23:44 ` Jan Kara
2009-06-08 4:35 ` [PATCH -V2 1/2] " Aneesh Kumar K.V
2009-06-08 4:35 ` [PATCH -V2 2/2] ext4: truncate the file properly if we fail to copy data from userspace Aneesh Kumar K.V
2009-06-08 16:29 ` Theodore Tso
2009-06-08 16:43 ` Aneesh Kumar K.V
2009-06-08 19:14 ` Theodore Tso
2009-06-08 19:23 ` Jan Kara
2009-06-08 20:20 ` Aneesh Kumar K.V
2009-06-09 10:12 ` Jan Kara
2009-06-08 16:29 ` [PATCH -V2 1/2] ext4: Add inode to the orphan list during block allocation failure Theodore Tso
2009-03-31 9:46 ` [PATCH] ext3: Avoid false EIO errors (version 4) Jan Kara
2009-04-01 0:06 ` Andrew Morton
2009-04-01 9:49 ` Jan Kara
2009-03-30 13:53 ` [PATCH] ext3: Avoid false EIO errors Eric Sandeen
2009-03-30 14:45 ` Aneesh Kumar K.V
2009-03-30 15:12 ` Eric Sandeen
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=20090405031116.GG7553@mit.edu \
--to=tytso@mit.edu \
--cc=aneesh.kumar@linux.vnet.ibm.com \
--cc=jack@suse.cz \
--cc=linux-ext4@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.