diff options
Diffstat (limited to 'fs/zonefs')
| -rw-r--r-- | fs/zonefs/Kconfig | 1 | ||||
| -rw-r--r-- | fs/zonefs/super.c | 8 | 
2 files changed, 5 insertions, 4 deletions
| diff --git a/fs/zonefs/Kconfig b/fs/zonefs/Kconfig index fb87ad372e29..ef2697b78820 100644 --- a/fs/zonefs/Kconfig +++ b/fs/zonefs/Kconfig @@ -2,6 +2,7 @@ config ZONEFS_FS  	tristate "zonefs filesystem support"  	depends on BLOCK  	depends on BLK_DEV_ZONED +	select FS_IOMAP  	help  	  zonefs is a simple file system which exposes zones of a zoned block  	  device (e.g. host-managed or host-aware SMR disk drives) as files. diff --git a/fs/zonefs/super.c b/fs/zonefs/super.c index 8bc6ef82d693..69aee3dfb660 100644 --- a/fs/zonefs/super.c +++ b/fs/zonefs/super.c @@ -601,13 +601,13 @@ static ssize_t zonefs_file_dio_write(struct kiocb *iocb, struct iov_iter *from)  	ssize_t ret;  	/* -	 * For async direct IOs to sequential zone files, ignore IOCB_NOWAIT +	 * For async direct IOs to sequential zone files, refuse IOCB_NOWAIT  	 * as this can cause write reordering (e.g. the first aio gets EAGAIN  	 * on the inode lock but the second goes through but is now unaligned).  	 */ -	if (zi->i_ztype == ZONEFS_ZTYPE_SEQ && !is_sync_kiocb(iocb) -	    && (iocb->ki_flags & IOCB_NOWAIT)) -		iocb->ki_flags &= ~IOCB_NOWAIT; +	if (zi->i_ztype == ZONEFS_ZTYPE_SEQ && !is_sync_kiocb(iocb) && +	    (iocb->ki_flags & IOCB_NOWAIT)) +		return -EOPNOTSUPP;  	if (iocb->ki_flags & IOCB_NOWAIT) {  		if (!inode_trylock(inode)) |