From: Christoph Hellwig Date: Tue, 29 Aug 2017 14:13:21 +0000 (+0200) Subject: block_dev: support RFW_NOWAIT on block device nodes X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=c35fc7a5abae9c154dd6f8c0b288462342facd45;p=GitHub%2Fmoto-9609%2Fandroid_kernel_motorola_exynos9610.git block_dev: support RFW_NOWAIT on block device nodes All support is already there in the generic code, we just need to wire it up. Signed-off-by: Christoph Hellwig Reviewed-by: Jan Kara Signed-off-by: Al Viro --- diff --git a/fs/block_dev.c b/fs/block_dev.c index 9941dc8342df..ea21d18d8e79 100644 --- a/fs/block_dev.c +++ b/fs/block_dev.c @@ -1739,6 +1739,8 @@ static int blkdev_open(struct inode * inode, struct file * filp) */ filp->f_flags |= O_LARGEFILE; + filp->f_mode |= FMODE_NOWAIT; + if (filp->f_flags & O_NDELAY) filp->f_mode |= FMODE_NDELAY; if (filp->f_flags & O_EXCL) @@ -1891,6 +1893,9 @@ ssize_t blkdev_write_iter(struct kiocb *iocb, struct iov_iter *from) if (iocb->ki_pos >= size) return -ENOSPC; + if ((iocb->ki_flags & (IOCB_NOWAIT | IOCB_DIRECT)) == IOCB_NOWAIT) + return -EOPNOTSUPP; + iov_iter_truncate(from, size - iocb->ki_pos); blk_start_plug(&plug);