On Mon, 2019-02-25 at 16:38 +0100, Johannes Thumshirn wrote: > On Mon, Feb 25, 2019 at 06:49:04AM -0800, Bart Van Assche wrote: > > On 2/25/19 1:37 AM, Johannes Thumshirn wrote: > > > On 24/02/2019 11:54, Max Gurtovoy wrote: > > > > What is the status of iSCSI/SRP targets in this case ? > > > > > > iSCSI/SRP passes in the following: > > > > > > /* > > > * Use O_DSYNC by default instead of O_SYNC to forgo syncing > > > * of pure timestamp updates. > > > */ > > > flags = O_RDWR | O_CREAT | O_LARGEFILE | O_DSYNC; > > > > That code fragment comes from the LIO file backend. There is no requirement > > for a SCSI target core file backend to use O_DSYNC. SCST allows users to > > choose whether or not O_DSYNC should be used: > > Yes, LIO file backend is the in-tree equivalent to NVMe's file backend. That's > why I copied it here. > > > > > > if (virt_dev->wt_flag && !virt_dev->nv_cache) > > open_flags |= O_DSYNC; > > > > OK. Do your open_flags include O_DIRECT per default as well?
I don't think it has ever been supported to pass O_DIRECT to filp_open(). As one can see in build_open_flags() O_DIRECT is ignored. The only way I know of to submit direct I/O from kernel context is by setting the IOCB_DIRECT flag. Bart.

