mirror of
				https://git.proxmox.com/git/mirror_zfs.git
				synced 2025-10-26 18:05:04 +03:00 
			
		
		
		
	VZ 7 kernel compat: introduce ITER-enabled .direct_IO() via IOVECs
Virtuozzo 7 kernels starting 3.10.0-1127.18.2.vz7.163.46
have the following configuration:
  * no HAVE_VFS_RW_ITERATE
  * HAVE_VFS_DIRECT_IO_ITER_RW_OFFSET
=> let's add implementation of zpl_direct_IO() via
zpl_aio_{read,write}() in this case.
https://bugs.openvz.org/browse/OVZ-7243
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Konstantin Khorenko <khorenko@virtuozzo.com>
Closes #11410 
Closes #11411
			
			
This commit is contained in:
		
							parent
							
								
									88ae76a4e0
								
							
						
					
					
						commit
						59570a05d8
					
				@ -463,7 +463,7 @@ zpl_direct_IO(int rw, struct kiocb *kiocb, struct iov_iter *iter, loff_t pos)
 | 
			
		||||
#error "Unknown direct IO interface"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#else
 | 
			
		||||
#else /* HAVE_VFS_RW_ITERATE */
 | 
			
		||||
 | 
			
		||||
#if defined(HAVE_VFS_DIRECT_IO_IOVEC)
 | 
			
		||||
static ssize_t
 | 
			
		||||
@ -475,6 +475,19 @@ zpl_direct_IO(int rw, struct kiocb *kiocb, const struct iovec *iov,
 | 
			
		||||
	else
 | 
			
		||||
		return (zpl_aio_read(kiocb, iov, nr_segs, pos));
 | 
			
		||||
}
 | 
			
		||||
#elif defined(HAVE_VFS_DIRECT_IO_ITER_RW_OFFSET)
 | 
			
		||||
static ssize_t
 | 
			
		||||
zpl_direct_IO(int rw, struct kiocb *kiocb, struct iov_iter *iter, loff_t pos)
 | 
			
		||||
{
 | 
			
		||||
	const struct iovec *iovp = iov_iter_iovec(iter);
 | 
			
		||||
	unsigned long nr_segs = iter->nr_segs;
 | 
			
		||||
 | 
			
		||||
	ASSERT3S(pos, ==, kiocb->ki_pos);
 | 
			
		||||
	if (rw == WRITE)
 | 
			
		||||
		return (zpl_aio_write(kiocb, iovp, nr_segs, pos));
 | 
			
		||||
	else
 | 
			
		||||
		return (zpl_aio_read(kiocb, iovp, nr_segs, pos));
 | 
			
		||||
}
 | 
			
		||||
#else
 | 
			
		||||
#error "Unknown direct IO interface"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user