Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 25 Apr 2024 20:51:55 -0700
From:      Rick Macklem <rick.macklem@gmail.com>
To:        Konstantin Belousov <kib@freebsd.org>
Cc:        FreeBSD CURRENT <freebsd-current@freebsd.org>
Subject:   Re: mysterious setting of B_DIRECT?
Message-ID:  <CAM5tNy6ZxUK99X74paBpXuZOr=X2QND7BAvmRCJi9gMZmRMWLQ@mail.gmail.com>
In-Reply-To: <Zisa7pOcI4lcXhq3@kib.kiev.ua>
References:  <CAM5tNy4bJC9p66_cBYBSdcxDTWwtFUcOvjfxf=a8B%2BA%2B9s_HSg@mail.gmail.com> <Zisa7pOcI4lcXhq3@kib.kiev.ua>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, Apr 25, 2024 at 8:09=E2=80=AFPM Konstantin Belousov <kib@freebsd.or=
g> wrote:
>
> On Thu, Apr 25, 2024 at 07:49:23PM -0700, Rick Macklem wrote:
> > Hi,
> >
> > This week I have been doing active testing as a part of an IETF
> > bakeathon for NFSv4. During the week I had a NFSv4 client
> > crash. On the surface, it is straightforward, in that it called
> > ncl_doio_directwrite() and the field called b_caller1 was NULL.
> >
> > Now, here's the weird part...
> > ncl_doio_directwrite() should never be called because B_DIRECT
> > should never be set. (The only place B_DIRECT gets set in the code
> > is never currently executed.)
> Do you mean the place in nfs_directio_write()?  And the fact that
> IO_SYNC is always set.
Yes.

>
> >
> > I have a patch that clears out the "never to be executed" code and
> > this seems to avoid the patch, since with the patch, ncl_doio_directwri=
te()
> > no longer exists.
> >
> > What I cannot figure out is how B_DIRECT got set?
> > I can note that UFS was under heavy load when the client crashed,
> > but I cannot see how a UFS "struct buf" would become a NFS "struct buf"
> > without b_flags being set to 0.
>
> There are also vfs_bio_brelse()/vfs_bio_setflags() functions which can
> set B_DIRECT.  On the other hand, they are not used by nfs client.
Yes, again.

>
> What was the overall state of the buffer with the B_DIRECT flag?  Which
> vnode it was assigned to?
Unfortunately I was in a hurry and didn't get more info.
And, since I have never seen this crash before, I doubt I'll be able
to reproduce it.

Thanks, rick



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAM5tNy6ZxUK99X74paBpXuZOr=X2QND7BAvmRCJi9gMZmRMWLQ>