From: Daniel Walker <dwalker@mvista.com>
To: Dave Chinner <david@fromorbit.com>
Cc: xfs@oss.sgi.com, linux-kernel@vger.kernel.org, matthew@wil.cx
Subject: Re: [PATCH 4/6] Replace inode flush semaphore with a completion
Date: Wed, 13 Aug 2008 08:34:01 -0700 [thread overview]
Message-ID: <1218641641.6166.32.camel@dhcp32.mvista.com> (raw)
In-Reply-To: <20080813075057.GZ6119@disturbed>
On Wed, 2008-08-13 at 17:50 +1000, Dave Chinner wrote:
> Right now we have the case where no matter what type of flush
> is done, the caller does not have to worry about unlocking
> the flush lock - it will be done as part of the flush. You're
> suggestion makes that conditional based on whether we did a
> sync flush or not.
>
> So, what happenѕ when you call:
>
> xfs_iflush(ip, XFS_IFLUSH_DELWRI_ELSE_SYNC);
>
> i.e. xfs_iflush() may do an delayed flush or a sync flush depending
> on the current state of the inode. The caller has no idea what type
> of flush was done, so will have no idea whether to unlock or not.
You wouldn't base the unlock on what iflush does, you would
unconditionally unlock.
> > And remove the unlocking from inside xfs_iflush(). Then use a flag to
> > indicate that the flush is in progress, and a
> > completion/wait_for_completion when another thread needs to wait on the
> > flush to complete if it's an async flush.
>
> And if it's a delayed flush? If we just wait for completion, we'll
> have to wait for a long time before the xfsbufd times out the buffer
> and pushes it to disk. This is important - the log AIL push code
> does try-locks on the flush lock to determine if the inode is in a
> delayed write state or not, and does an async buffer push inѕtead
> of xfs_iflush() to get it to disk immediately.
You wouldn't wait for completion of the flush unless the code really
needed to wait. Seems like your indicating that waiting on the flush is
rare.
> That is, there are three types of inode flushes (sync, async and
> delwri) and the flush lock is used in different ways to determine
> what action to take when writing back inodes. There's much more to
> this 'flush lock' than just locking ;)
What I was saying is instead of using the flush lock as an indicator,
use some other non-lock based method.. A set of state flags protected by
the iflush lock for instance ..
Daniel
next prev parent reply other threads:[~2008-08-13 15:34 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-06-27 8:44 [PATCH 0/6] Remove most users of semaphores from XFS V2 Dave Chinner
2008-06-27 8:44 ` [PATCH 1/6] Clean up stale references to semaphores Dave Chinner
2008-06-27 8:44 ` [PATCH 2/6] Replace the XFS buf iodone semaphore with a completion Dave Chinner
2008-06-27 8:44 ` [PATCH 3/6] Extend completions to provide XFS object flush requirements Dave Chinner
2008-06-27 8:44 ` [PATCH 4/6] Replace inode flush semaphore with a completion Dave Chinner
2008-08-13 3:11 ` Daniel Walker
2008-08-13 7:50 ` Dave Chinner
2008-08-13 15:34 ` Daniel Walker [this message]
2008-08-14 0:19 ` Dave Chinner
2008-08-14 1:34 ` Daniel Walker
2008-08-14 2:30 ` Dave Chinner
2008-06-27 8:44 ` [PATCH 5/6] Replace dquot " Dave Chinner
2008-06-27 8:44 ` [PATCH 6/6] Remove the sema_t from XFS Dave Chinner
2008-07-11 1:13 [RESEND, PATCH 0/6] Remove most users of semaphores " Dave Chinner
2008-07-11 1:13 ` [PATCH 4/6] Replace inode flush semaphore with a completion Dave Chinner
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=1218641641.6166.32.camel@dhcp32.mvista.com \
--to=dwalker@mvista.com \
--cc=david@fromorbit.com \
--cc=linux-kernel@vger.kernel.org \
--cc=matthew@wil.cx \
--cc=xfs@oss.sgi.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
all inboxes | Powered by JetHome®