Re: open(.. O_DIRECT ..) difference in between Linux and FreeBSD ..

Rob van Nieuwkerk (robn@verdi.et.tudelft.nl)
Fri, 13 Jun 2003 11:02:27 +0200


Arjan van de Ven wrote:
> On Fri, Jun 13, 2003 at 10:27:52AM +0200, Rob van Nieuwkerk wrote:
> >
> > Arjan van de Ven wrote:
> > > On Fri, Jun 13, 2003 at 01:12:57AM +0200, Rob van Nieuwkerk wrote:
> > > > FYI:
> > > > It appears that somewhere between RH kernels 2.4.18-27.7.x and 2.4.20-18.9
> > > > something has changed so that my application needs a O_SYNC too besides
> > > > the O_DIRECT to make sure that writes will be synchronous. If I leave
> > > > the O_SYNC out with 2.4.20-18.9 the write will happen physically 35
> > > > seconds after the write() was done.
> > >
> > > O_DIRECT is nothing but a hint and the 2.4.20-18.9 kernel decides to not
> > > honor it
> >
> > Hi Arjan,
> >
> > Do you mean that the 2.4.20-18.9 kernel always ignores the O_DIRECT flag ?
>
> yes.

Hi Arjan,

OK, that would explain why I see an old problem (*) re-appear in my
application that was solved/worked-around by using O_DIRECT when using
2.4.20-18.9.

Just to make sure I understand it correctly, is it like this: ?
"Kernel 2.4.20-18.9 completely ignores the O_DIRECT flag. Not only the
"synchronous writes part" but also you will get read-ahead despite
using O_DIRECT. The 2.4.20-18.9 with O_DIRECT behaviour is similar to
the 2.4.18-27.7.x without O_DIRECT (concerning synchronity of write()
and the number of physical media reads & writes)."

Just curious: what is the reason for ignoring O_DIRECT in 2.4.20-18.9 ?
Interactivity behaviour ?

Greetings,
Rob van Nieuwkerk

(*) I have an application that runs from CompactFlash that uses a Philips
webcam (pwc driver). It turned out that too much CompactFlash access
(in PIO mode) causes the camera(driver?) to stall and never wake up
again :-( I only log 2048 byte records to a raw partition. With
O_DIRECT and proper data aligning I could reduce the CF-access to
exactly 4 512 byte sector writes. This was enough to never trigger
the problem.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/