From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from bombadil.infradead.org ([65.50.211.133]:51834 "EHLO bombadil.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751094AbdHVQSU (ORCPT ); Tue, 22 Aug 2017 12:18:20 -0400 From: Christoph Hellwig To: viro@zeniv.linux.org.uk, axboe@kernel.dk Cc: Milosz Tanski , Goldwyn Rodrigues , mgorman@suse.de, Volker.Lendecke@sernet.de, linux-fsdevel@vger.kernel.org, linux-block@vger.kernel.org Subject: [PATCH 4/4] block_dev: support RFW_NOWAIT on block device nodes Date: Tue, 22 Aug 2017 18:17:12 +0200 Message-Id: <20170822161712.11716-5-hch@lst.de> In-Reply-To: <20170822161712.11716-1-hch@lst.de> References: <20170822161712.11716-1-hch@lst.de> Sender: linux-fsdevel-owner@vger.kernel.org List-ID: All support is already there in the generic code, we just need to wire it up. Signed-off-by: Christoph Hellwig --- fs/block_dev.c | 5 +++++ 1 file changed, 5 insertions(+) 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); -- 2.11.0