Re: Patch, forward release() return values to the close() call

Axel Kittenberger (Axel.Kittenberger@maxxio.com)
Mon, 25 Mar 2002 10:50:17 +0100


> This is me talking prior to having coffee, but Chapter 3 of the
> Rubini/Corbet book says:
>
> The flush operation is invoked when a process closes its copy of a file
> descriptor for a device; it should execute (and wait for) any outstanding
> operations on the device. This must not be confused with the fsync
> operation requested by user programs. Currently, flush is used only in the
> network file system (NFS) code. If flush is NULL, it is simply not invoked.
>
> I guess it doesn't specifically say it's not called in midstream, but
> it reads as if flush() is called on /only/ close(). I may test this
> today, just for fun.

Oh thats interesting, indeed, so the function name "flush" is just
contra-intentional. Oxay I know now how I could have written this driver
without patching the kernel.....

Still the basic issue/idea is remaining. release() is defined as int return
type, but everywhere it's called it's value is discarded. (except internally
in "intermezzo" whatever that is)

btw: blkdev_put() has int return type and seems to return correctly the
return value from release()s for block devices, so I guess it would be the
right thing for char devs to do also.

The other way I would also see as okay is to state release() can't return
anything senseful to anybody, bet then declare it as void return instead. But
as the state is currently it's suboptimal from both views.

-
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/


  • Previous message: Vojtech Pavlik: "Re: BUG: 2.4.18 & ALI15X3 DMA hang on boot"
  • Next in thread: David Brown: "Re: Patch, forward release() return values to the close() call"
  • Reply: David Brown: "Re: Patch, forward release() return values to the close() call"