summaryrefslogtreecommitdiffstats
path: root/fs/block_dev.c
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2017-08-29 10:13:21 -0400
committerAl Viro <viro@zeniv.linux.org.uk>2017-09-04 19:04:23 -0400
commitc35fc7a5abae9c154dd6f8c0b288462342facd45 (patch)
tree4531ee1324e372e1382f55f09f2c710564af8838 /fs/block_dev.c
parent91f9943e1c7b6638f27312d03fe71fcc67b23571 (diff)
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 <hch@lst.de> Reviewed-by: Jan Kara <jack@suse.cz> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/block_dev.c')
-rw-r--r--fs/block_dev.c5
1 files changed, 5 insertions, 0 deletions
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)
1739 */ 1739 */
1740 filp->f_flags |= O_LARGEFILE; 1740 filp->f_flags |= O_LARGEFILE;
1741 1741
1742 filp->f_mode |= FMODE_NOWAIT;
1743
1742 if (filp->f_flags & O_NDELAY) 1744 if (filp->f_flags & O_NDELAY)
1743 filp->f_mode |= FMODE_NDELAY; 1745 filp->f_mode |= FMODE_NDELAY;
1744 if (filp->f_flags & O_EXCL) 1746 if (filp->f_flags & O_EXCL)
@@ -1891,6 +1893,9 @@ ssize_t blkdev_write_iter(struct kiocb *iocb, struct iov_iter *from)
1891 if (iocb->ki_pos >= size) 1893 if (iocb->ki_pos >= size)
1892 return -ENOSPC; 1894 return -ENOSPC;
1893 1895
1896 if ((iocb->ki_flags & (IOCB_NOWAIT | IOCB_DIRECT)) == IOCB_NOWAIT)
1897 return -EOPNOTSUPP;
1898
1894 iov_iter_truncate(from, size - iocb->ki_pos); 1899 iov_iter_truncate(from, size - iocb->ki_pos);
1895 1900
1896 blk_start_plug(&plug); 1901 blk_start_plug(&plug);