• David Howells's avatar
    netfs: Fix setting of BDP_ASYNC from iocb flags · c596bea1
    David Howells authored
    Fix netfs_perform_write() to set BDP_ASYNC if IOCB_NOWAIT is set rather
    than if IOCB_SYNC is not set.  It reflects asynchronicity in the sense of
    not waiting rather than synchronicity in the sense of not returning until
    the op is complete.
    
    Without this, generic/590 fails on cifs in strict caching mode with a
    complaint that one of the writes fails with EAGAIN.  The test can be
    distilled down to:
    
            mount -t cifs /my/share /mnt -ostuff
            xfs_io -i -c 'falloc 0 8191M -c fsync -f /mnt/file
            xfs_io -i -c 'pwrite -b 1M -W 0 8191M' /mnt/file
    
    Fixes: c38f4e96 ("netfs: Provide func to copy data to pagecache for buffered write")
    Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
    Link: https://lore.kernel.org/r/316306.1716306586@warthog.procyon.org.ukReviewed-by: default avatarJens Axboe <axboe@kernel.dk>
    cc: Jeff Layton <jlayton@kernel.org>
    cc: Enzo Matsumiya <ematsumiya@suse.de>
    cc: Jens Axboe <axboe@kernel.dk>
    cc: Matthew Wilcox <willy@infradead.org>
    cc: netfs@lists.linux.dev
    cc: v9fs@lists.linux.dev
    cc: linux-afs@lists.infradead.org
    cc: linux-cifs@vger.kernel.org
    cc: linux-fsdevel@vger.kernel.org
    Signed-off-by: default avatarChristian Brauner <brauner@kernel.org>
    c596bea1
buffered_write.c 16.3 KB