linux-next: manual merge of the vfs tree with the xfs tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Al,

[These became irrelevant when I reverted the xfs tree for a build error,
but will be done when the xfs tree is fixed.]

Today's linux-next merge of the vfs tree got a conflict in
fs/xfs/linux-2.6/xfs_aops.c between commit
7346e1197eb76e22199b6b4625f129331e0fd7ac ("xfs simplify and speed up
direct I/O completions") from the xfs tree and commit
b682ce06449c35a85dc5e63fcaab7dba2ba6df9b ("sort out blockdev_direct_IO
variants") from the vfs tree.

Also between commit 6f6b39eb706f5617750cf02952e4e6d7470c40bf ("xfs: use
GFP_NOFS for page cache allocation") from the xfs tree and commit
4478b21470275454f9eb6f590dfe7cc54d643978 ("get rid of
block_write_begin_newtrunc") from the vfs tree.

I fixed them up (I think - see below) and can carry the fix as necessary.
-- 
Cheers,
Stephen Rothwell                    sfr@xxxxxxxxxxxxxxxx

diff --cc fs/xfs/linux-2.6/xfs_aops.c
index d24e78f,77a9ecc..0000000
--- a/fs/xfs/linux-2.6/xfs_aops.c
+++ b/fs/xfs/linux-2.6/xfs_aops.c
@@@ -1471,26 -1655,22 +1471,26 @@@ xfs_vm_direct_IO
  	loff_t			offset,
  	unsigned long		nr_segs)
  {
 -	struct file	*file = iocb->ki_filp;
 -	struct inode	*inode = file->f_mapping->host;
 -	struct block_device *bdev;
 -	ssize_t		ret;
 -
 -	bdev = xfs_find_bdev_for_inode(inode);
 -
 -	iocb->private = xfs_alloc_ioend(inode, rw == WRITE ?
 -					IO_UNWRITTEN : IO_READ);
 -
 -	ret = __blockdev_direct_IO(rw, iocb, inode, bdev, iov, offset,
 -				   nr_segs, xfs_get_blocks_direct,
 -				   xfs_end_io_direct, NULL, 0);
 +	struct inode		*inode = iocb->ki_filp->f_mapping->host;
 +	struct block_device	*bdev = xfs_find_bdev_for_inode(inode);
 +	ssize_t			ret;
 +
 +	if (rw & WRITE) {
 +		iocb->private = xfs_alloc_ioend(inode, IO_NEW);
 +
- 		ret = blockdev_direct_IO_no_locking(rw, iocb, inode, bdev, iov,
- 						    offset, nr_segs,
- 						    xfs_get_blocks_direct,
- 						    xfs_end_io_direct_write);
++		ret = __blockdev_direct_IO(rw, iocb, inode, bdev, iov,
++					   offset, nr_segs,
++					   xfs_get_blocks_direct,
++					   xfs_end_io_direct_write, NULL, 0);
 +		if (ret != -EIOCBQUEUED && iocb->private)
 +			xfs_destroy_ioend(iocb->private);
 +	} else {
- 		ret = blockdev_direct_IO_no_locking(rw, iocb, inode, bdev, iov,
- 						    offset, nr_segs,
- 						    xfs_get_blocks_direct,
- 						    NULL);
++		ret = __blockdev_direct_IO(rw, iocb, inode, bdev, iov,
++					   offset, nr_segs,
++					   xfs_get_blocks_direct,
++					   NULL, NULL, 0);
 +	}
  
 -	if (unlikely(ret != -EIOCBQUEUED && iocb->private))
 -		xfs_destroy_ioend(iocb->private);
  	return ret;
  }
  
@@@ -1504,9 -1700,31 +1520,31 @@@ xfs_vm_write_begin
  	struct page		**pagep,
  	void			**fsdata)
  {
- 	*pagep = NULL;
- 	return block_write_begin(file, mapping, pos, len, flags | AOP_FLAG_NOFS,
- 				 pagep, fsdata, xfs_get_blocks);
+ 	int			ret;
+ 
 -	ret = block_write_begin(mapping, pos, len, flags, pagep,
++	ret = block_write_begin(mapping, pos, len, flags | AOP_FLAG_NOFS, pagep,
+ 				xfs_get_blocks);
+ 	if (unlikely(ret))
+ 		xfs_vm_write_failed(mapping, pos + len);
+ 	return ret;
+ }
+ 
+ STATIC int
+ xfs_vm_write_end(
+ 	struct file		*file,
+ 	struct address_space	*mapping,
+ 	loff_t			pos,
+ 	unsigned		len,
+ 	unsigned		copied,
+ 	struct page		*page,
+ 	void			*fsdata)
+ {
+ 	int			ret;
+ 
+ 	ret = generic_write_end(file, mapping, pos, len, copied, page, fsdata);
+ 	if (unlikely(ret < len))
+ 		xfs_vm_write_failed(mapping, pos + len);
+ 	return ret;
  }
  
  STATIC sector_t
--
To unsubscribe from this list: send the line "unsubscribe linux-next" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Kernel]     [Linux USB Development]     [Yosemite News]     [Linux SCSI]

  Powered by Linux