From: "Theodore Ts'o" <tytso@mit.edu>
To: Andrew Morton <akpm@osdl.org>,
linux-kernel@vger.kernel.org, ext2-devel@lists.sourceforge.net
Subject: Re: [Ext2-devel] Re: [RFC/RFT] [PATCH] EXT3: Retry allocation after journal commit
Date: Sat, 15 May 2004 09:18:38 -0400 [thread overview]
Message-ID: <20040515131838.GA32497@thunk.org> (raw)
In-Reply-To: <20040514210622.GH18086@schnapps.adilger.int>
On Fri, May 14, 2004 at 03:06:22PM -0600, Andreas Dilger wrote:
> > I tried that first, actually. In the test case I was trying, it only
> > worked 33% of the time. The other 66% of the time, the rm -rf all fit
> > into the current running transaction, and waiting on the previous
> > transaction wasn't sufficient to solve the problem.
>
> I guess the success ratio dependends on how many blocks are tied up in
> the transaction, the size of the journal, and how much free space is
> left in the filesystem. In my tests (dd to a file that does O_TRUNC and
> overwrites with the same file size) this change wasn't 100% successful
> but fixed it the majority of the time.
In my case, the filesystem was completely full, and we were doing an
"rm -rf /mntpt/*", followed by a series of mkdir to set up the test
directories. We were failing on the mkdir approximately 2/3'rds of
the time.
> > That was why I was retrying at the top-level functions: ext3_mkdir,
> > for example. There won't be a nested journal transaction there.
>
> Waiting for the currently committing transaction to complete would
> deadlock Lustre, because it starts journal transactions above ext3 so
> that it can write update records in the same transaction as the
> filesystem operation.
Right, I had forgotten about Lustre. :-) I was only worrying about
the nested transaction case of writing to the quota file. So what we
can do is only do the do the log_wait_commit (and retry the
transaction) if current->journal_info is NULL --- i.e., only when the
current process does not have a currently active handle. If not, we
return -ENOSPC, and let the top-level caller (Lustre in your case)
retry the entire operation.
I think that should be sufficient to keep Lustre happy.
- Ted
next prev parent reply other threads:[~2004-05-15 13:18 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-05-14 0:42 [RFC/RFT] [PATCH] EXT3: Retry allocation after journal commit Theodore Ts'o
2004-05-14 2:53 ` Andrew Morton
2004-05-14 4:37 ` [Ext2-devel] " Theodore Ts'o
2004-05-14 4:49 ` Andrew Morton
2004-05-14 17:48 ` Andreas Dilger
2004-05-14 19:59 ` Theodore Ts'o
2004-05-14 21:06 ` Andreas Dilger
2004-05-15 13:18 ` Theodore Ts'o [this message]
2004-05-19 22:04 ` question about ext3_find_goal with reservation Mingming Cao
2004-05-19 22:52 ` Andrew Morton
2004-05-20 1:04 ` [Ext2-devel] " Mingming Cao
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=20040515131838.GA32497@thunk.org \
--to=tytso@mit.edu \
--cc=akpm@osdl.org \
--cc=ext2-devel@lists.sourceforge.net \
--cc=linux-kernel@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.