Subject: Re: p_flag in struct proc: int -> uint64_t
To: Jason Thorpe <thorpej@shagadelic.org>
From: Juergen Hannken-Illjes <hannken@eis.cs.tu-bs.de>
List: tech-kern
Date: 10/11/2006 12:30:30
On Tue, Oct 10, 2006 at 03:51:13PM -0700, Jason Thorpe wrote:
>
> On Oct 10, 2006, at 8:53 AM, Juergen Hannken-Illjes wrote:
>
> >At the moment it is used only for genfs_putpages() when it has either
> >PGO_SYNCIO|PGO_CLEANIT set or is from pagedaemon. The error gets up
> >to the caller of genfs_putpages().
>
> ...and what is the caller of genfs_putpages() supposed to do to recover?
Good question. I used it here because of this comment above genfs_putpages():
* => if neither PGO_CLEANIT nor PGO_SYNCIO is set, then we will neither
* unlock the object nor block.
Fstrans_start() is only needed if PGO_CLEANIT is set. So it looks like I
implemented a NOP in this case.
What is left is the case where genfs_putpages() is called from the pagedaemon.
Here it is ok to block (PGO_CLEANIT is set).
If I got it right it is sufficient to implement FSTRANS_NOWAIT as
"fail if suspension in progress" and don't propagate the nowait condition
to pool_get() or lwp_setspecific().
Will try once I have a working machine to test ...
--
Juergen Hannken-Illjes - hannken@eis.cs.tu-bs.de - TU Braunschweig (Germany)