public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
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

  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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox