Date: Thu, 25 Apr 2024 19:49:23 -0700 From: Rick Macklem <rick.macklem@gmail.com> To: FreeBSD CURRENT <freebsd-current@freebsd.org> Subject: mysterious setting of B_DIRECT? Message-ID: <CAM5tNy4bJC9p66_cBYBSdcxDTWwtFUcOvjfxf=a8B%2BA%2B9s_HSg@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
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.) 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_directwrite() 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. Anyone have any ideas? rick
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAM5tNy4bJC9p66_cBYBSdcxDTWwtFUcOvjfxf=a8B%2BA%2B9s_HSg>