Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 30 May 2003 14:09:26 +0400 (MSD)
From:      Igor Sysoev <is@rambler-co.ru>
To:        Terry Lambert <tlambert2@mindspring.com>
Cc:        arch@freebsd.org
Subject:   Re: sendfile(2) SF_NOPUSH flag proposal
Message-ID:  <Pine.BSF.4.21.0305301404590.58337-100000@is>
In-Reply-To: <3ED72A16.9CACD4C5@mindspring.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, 30 May 2003, Terry Lambert wrote:

> Igor Sysoev wrote:
> > On Fri, 30 May 2003, Terry Lambert wrote:
> > > It doesn't "read" it, per se: it creates a mapping, and it
> > > faults the pages; when they are in core, then they can be
> > > sent.
> > 
> > So what do these lines in /sys/kern/uipc_syscalls.c:sendfile():
> > 
> > if (!pg->valid || !vm_page_is_valid(pg, pgoff, xfsize)) {
> >          ....
> >          error = VOP_READ(vp, &auio, IO_VMIO | ((MAXBSIZE / bsize) << 16),
> >                           p->p_ucred);
> >          ....
> > }
> 
> That's easy: they mean you aren't looking at version 1.147 of
> the file, and that you're looking at RELENG_4, and not -CURRENT
> (version 1.65.2.17, or earlier).  You are 82 HEAD revisions
> behind the state of the art.

Yes, I looked in FreeBSD 4.x. In the HEAD VOP_READ() was changed to:

    error = vn_rdwr(UIO_READ, vp, NULL, MAXBSIZE,
        trunc_page(off), UIO_NOCOPY, IO_NODELOCKED |
        IO_VMIO | ((MAXBSIZE / bsize) << 16),
        td->td_ucred, NOCRED, &resid, td);

What does vn_rdwr() ? Does it fault the page as you said or it reads pages ?


Igor Sysoev
http://sysoev.ru/en/



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.21.0305301404590.58337-100000>