


---

 25-akpm/fs/block_dev.c          |    2 +-
 25-akpm/fs/direct-io.c          |    2 +-
 25-akpm/fs/ext2/inode.c         |    2 +-
 25-akpm/fs/ext3/inode.c         |    4 ++--
 25-akpm/fs/hfs/inode.c          |    4 ++--
 25-akpm/fs/hfsplus/inode.c      |    4 ++--
 25-akpm/fs/jfs/inode.c          |    4 ++--
 25-akpm/fs/nfs/direct.c         |   18 ++++++++++--------
 25-akpm/fs/reiserfs/inode.c     |    6 +++---
 25-akpm/fs/xfs/linux/xfs_aops.c |    2 +-
 25-akpm/include/linux/fs.h      |    8 ++++----
 25-akpm/include/linux/nfs_fs.h  |    2 +-
 12 files changed, 30 insertions(+), 28 deletions(-)

diff -puN fs/block_dev.c~direct-IO-retval-fix fs/block_dev.c
--- 25/fs/block_dev.c~direct-IO-retval-fix	2004-04-17 21:34:01.553492512 -0700
+++ 25-akpm/fs/block_dev.c	2004-04-17 21:34:01.572489624 -0700
@@ -148,7 +148,7 @@ blkdev_get_blocks(struct inode *inode, s
 	return 0;
 }
 
-static int
+static ssize_t
 blkdev_direct_IO(int rw, struct kiocb *iocb, const struct iovec *iov,
 			loff_t offset, unsigned long nr_segs)
 {
diff -puN fs/direct-io.c~direct-IO-retval-fix fs/direct-io.c
--- 25/fs/direct-io.c~direct-IO-retval-fix	2004-04-17 21:34:01.554492360 -0700
+++ 25-akpm/fs/direct-io.c	2004-04-17 21:34:01.573489472 -0700
@@ -1096,7 +1096,7 @@ direct_io_worker(int rw, struct kiocb *i
  *
  * For writes to S_ISBLK files, i_sem is not held on entry; it is never taken.
  */
-int
+ssize_t
 __blockdev_direct_IO(int rw, struct kiocb *iocb, struct inode *inode,
 	struct block_device *bdev, const struct iovec *iov, loff_t offset, 
 	unsigned long nr_segs, get_blocks_t get_blocks, dio_iodone_t end_io,
diff -puN fs/ext2/inode.c~direct-IO-retval-fix fs/ext2/inode.c
--- 25/fs/ext2/inode.c~direct-IO-retval-fix	2004-04-17 21:34:01.556492056 -0700
+++ 25-akpm/fs/ext2/inode.c	2004-04-17 21:34:01.574489320 -0700
@@ -655,7 +655,7 @@ ext2_get_blocks(struct inode *inode, sec
 	return ret;
 }
 
-static int
+static ssize_t
 ext2_direct_IO(int rw, struct kiocb *iocb, const struct iovec *iov,
 			loff_t offset, unsigned long nr_segs)
 {
diff -puN fs/ext3/inode.c~direct-IO-retval-fix fs/ext3/inode.c
--- 25/fs/ext3/inode.c~direct-IO-retval-fix	2004-04-17 21:34:01.557491904 -0700
+++ 25-akpm/fs/ext3/inode.c	2004-04-17 21:34:01.576489016 -0700
@@ -1443,7 +1443,7 @@ static int ext3_releasepage(struct page 
  * If the O_DIRECT write is intantiating holes inside i_size and the machine
  * crashes then stale disk data _may_ be exposed inside the file.
  */
-static int ext3_direct_IO(int rw, struct kiocb *iocb,
+static ssize_t ext3_direct_IO(int rw, struct kiocb *iocb,
 			const struct iovec *iov, loff_t offset,
 			unsigned long nr_segs)
 {
@@ -1451,7 +1451,7 @@ static int ext3_direct_IO(int rw, struct
 	struct inode *inode = file->f_mapping->host;
 	struct ext3_inode_info *ei = EXT3_I(inode);
 	handle_t *handle = NULL;
-	int ret;
+	ssize_t ret;
 	int orphan = 0;
 	size_t count = iov_length(iov, nr_segs);
 
diff -puN fs/hfs/inode.c~direct-IO-retval-fix fs/hfs/inode.c
--- 25/fs/hfs/inode.c~direct-IO-retval-fix	2004-04-17 21:34:01.559491600 -0700
+++ 25-akpm/fs/hfs/inode.c	2004-04-17 21:34:01.577488864 -0700
@@ -114,8 +114,8 @@ static int hfs_get_blocks(struct inode *
 	return ret;
 }
 
-static int hfs_direct_IO(int rw, struct kiocb *iocb, const struct iovec *iov,
-			 loff_t offset, unsigned long nr_segs)
+static ssize_t hfs_direct_IO(int rw, struct kiocb *iocb,
+		const struct iovec *iov, loff_t offset, unsigned long nr_segs)
 {
 	struct file *file = iocb->ki_filp;
 	struct inode *inode = file->f_dentry->d_inode->i_mapping->host;
diff -puN fs/hfsplus/inode.c~direct-IO-retval-fix fs/hfsplus/inode.c
--- 25/fs/hfsplus/inode.c~direct-IO-retval-fix	2004-04-17 21:34:01.560491448 -0700
+++ 25-akpm/fs/hfsplus/inode.c	2004-04-17 21:34:01.578488712 -0700
@@ -114,8 +114,8 @@ static int hfsplus_get_blocks(struct ino
 	return ret;
 }
 
-static int hfsplus_direct_IO(int rw, struct kiocb *iocb, const struct iovec *iov,
-			  loff_t offset, unsigned long nr_segs)
+static ssize_t hfsplus_direct_IO(int rw, struct kiocb *iocb,
+		const struct iovec *iov, loff_t offset, unsigned long nr_segs)
 {
 	struct file *file = iocb->ki_filp;
 	struct inode *inode = file->f_dentry->d_inode->i_mapping->host;
diff -puN fs/jfs/inode.c~direct-IO-retval-fix fs/jfs/inode.c
--- 25/fs/jfs/inode.c~direct-IO-retval-fix	2004-04-17 21:34:01.562491144 -0700
+++ 25-akpm/fs/jfs/inode.c	2004-04-17 21:34:01.578488712 -0700
@@ -302,8 +302,8 @@ static sector_t jfs_bmap(struct address_
 	return generic_block_bmap(mapping, block, jfs_get_block);
 }
 
-static int jfs_direct_IO(int rw, struct kiocb *iocb, const struct iovec *iov,
-			loff_t offset, unsigned long nr_segs)
+static ssize_t jfs_direct_IO(int rw, struct kiocb *iocb,
+	const struct iovec *iov, loff_t offset, unsigned long nr_segs)
 {
 	struct file *file = iocb->ki_filp;
 	struct inode *inode = file->f_mapping->host;
diff -puN fs/nfs/direct.c~direct-IO-retval-fix fs/nfs/direct.c
--- 25/fs/nfs/direct.c~direct-IO-retval-fix	2004-04-17 21:34:01.563490992 -0700
+++ 25-akpm/fs/nfs/direct.c	2004-04-17 21:34:01.579488560 -0700
@@ -192,16 +192,17 @@ nfs_direct_read_seg(struct inode *inode,
  * writes so that this read will see them when we read from the
  * server.
  */
-static int
+static ssize_t
 nfs_direct_read(struct inode *inode, struct file *file,
 		const struct iovec *iov, loff_t file_offset,
 		unsigned long nr_segs)
 {
-	int tot_bytes = 0;
+	ssize_t tot_bytes = 0;
 	unsigned long seg = 0;
 
 	while ((seg < nr_segs) && (tot_bytes >= 0)) {
-		int result, page_count;
+		ssize_t result;
+		int page_count;
 		struct page **pages;
 		const struct iovec *vec = &iov[seg++];
 		unsigned long user_addr = (unsigned long) vec->iov_base;
@@ -360,16 +361,17 @@ sync_retry:
  * that non-direct readers might access, so they will pick up these
  * writes immediately.
  */
-static int
+static ssize_t
 nfs_direct_write(struct inode *inode, struct file *file,
 		const struct iovec *iov, loff_t file_offset,
 		unsigned long nr_segs)
 {
-	int tot_bytes = 0;
+	ssize_t tot_bytes = 0;
 	unsigned long seg = 0;
 
 	while ((seg < nr_segs) && (tot_bytes >= 0)) {
-		int result, page_count;
+		ssize_t result;
+		int page_count;
 		struct page **pages;
 		const struct iovec *vec = &iov[seg++];
 		unsigned long user_addr = (unsigned long) vec->iov_base;
@@ -409,11 +411,11 @@ nfs_direct_write(struct inode *inode, st
  * nr_segs: size of iovec array
  *
  */
-int
+ssize_t
 nfs_direct_IO(int rw, struct kiocb *iocb, const struct iovec *iov,
 		loff_t file_offset, unsigned long nr_segs)
 {
-	int result = -EINVAL;
+	ssize_t result = -EINVAL;
 	struct file *file = iocb->ki_filp;
 	struct dentry *dentry = file->f_dentry;
 	struct inode *inode = dentry->d_inode;
diff -puN fs/reiserfs/inode.c~direct-IO-retval-fix fs/reiserfs/inode.c
--- 25/fs/reiserfs/inode.c~direct-IO-retval-fix	2004-04-17 21:34:01.565490688 -0700
+++ 25-akpm/fs/reiserfs/inode.c	2004-04-17 21:34:01.581488256 -0700
@@ -2498,14 +2498,14 @@ static int reiserfs_releasepage(struct p
 
 /* We thank Mingming Cao for helping us understand in great detail what
    to do in this section of the code. */
-static int reiserfs_direct_IO(int rw, struct kiocb *iocb, const struct iovec *iov,
-			      loff_t offset, unsigned long nr_segs)
+static ssize_t reiserfs_direct_IO(int rw, struct kiocb *iocb,
+		const struct iovec *iov, loff_t offset, unsigned long nr_segs)
 {
     struct file *file = iocb->ki_filp;
     struct inode *inode = file->f_mapping->host;
 
     return blockdev_direct_IO(rw, iocb, inode, inode->i_sb->s_bdev, iov,
-			      offset, nr_segs, reiserfs_get_blocks_direct_io, NULL);
+			offset, nr_segs, reiserfs_get_blocks_direct_io, NULL);
 }
 
 
diff -puN fs/xfs/linux/xfs_aops.c~direct-IO-retval-fix fs/xfs/linux/xfs_aops.c
--- 25/fs/xfs/linux/xfs_aops.c~direct-IO-retval-fix	2004-04-17 21:34:01.566490536 -0700
+++ 25-akpm/fs/xfs/linux/xfs_aops.c	2004-04-17 21:34:01.582488104 -0700
@@ -1013,7 +1013,7 @@ linvfs_get_blocks_direct(
 					create, 1, BMAPI_WRITE|BMAPI_DIRECT);
 }
 
-STATIC int
+STATIC ssize_t
 linvfs_direct_IO(
 	int			rw,
 	struct kiocb		*iocb,
diff -puN include/linux/fs.h~direct-IO-retval-fix include/linux/fs.h
--- 25/include/linux/fs.h~direct-IO-retval-fix	2004-04-17 21:34:01.567490384 -0700
+++ 25-akpm/include/linux/fs.h	2004-04-17 21:34:01.590486888 -0700
@@ -317,7 +317,7 @@ struct address_space_operations {
 	sector_t (*bmap)(struct address_space *, sector_t);
 	int (*invalidatepage) (struct page *, unsigned long);
 	int (*releasepage) (struct page *, int);
-	int (*direct_IO)(int, struct kiocb *, const struct iovec *iov,
+	ssize_t (*direct_IO)(int, struct kiocb *, const struct iovec *iov,
 			loff_t offset, unsigned long nr_segs);
 };
 
@@ -1411,7 +1411,7 @@ static inline void do_generic_file_read(
 				actor);
 }
 
-int __blockdev_direct_IO(int rw, struct kiocb *iocb, struct inode *inode,
+ssize_t __blockdev_direct_IO(int rw, struct kiocb *iocb, struct inode *inode,
 	struct block_device *bdev, const struct iovec *iov, loff_t offset,
 	unsigned long nr_segs, get_blocks_t get_blocks, dio_iodone_t end_io,
 	int needs_special_locking);
@@ -1419,7 +1419,7 @@ int __blockdev_direct_IO(int rw, struct 
 /*
  * For filesystems which need locking between buffered and direct access
  */
-static inline int blockdev_direct_IO(int rw, struct kiocb *iocb,
+static inline ssize_t blockdev_direct_IO(int rw, struct kiocb *iocb,
 	struct inode *inode, struct block_device *bdev, const struct iovec *iov,
 	loff_t offset, unsigned long nr_segs, get_blocks_t get_blocks,
 	dio_iodone_t end_io)
@@ -1428,7 +1428,7 @@ static inline int blockdev_direct_IO(int
 				nr_segs, get_blocks, end_io, 1);
 }
 
-static inline int blockdev_direct_IO_no_locking(int rw, struct kiocb *iocb,
+static inline ssize_t blockdev_direct_IO_no_locking(int rw, struct kiocb *iocb,
 	struct inode *inode, struct block_device *bdev, const struct iovec *iov,
 	loff_t offset, unsigned long nr_segs, get_blocks_t get_blocks,
 	dio_iodone_t end_io)
diff -puN include/linux/nfs_fs.h~direct-IO-retval-fix include/linux/nfs_fs.h
--- 25/include/linux/nfs_fs.h~direct-IO-retval-fix	2004-04-17 21:34:01.569490080 -0700
+++ 25-akpm/include/linux/nfs_fs.h	2004-04-17 21:34:01.591486736 -0700
@@ -304,7 +304,7 @@ nfs_file_cred(struct file *file)
 /*
  * linux/fs/nfs/direct.c
  */
-extern int nfs_direct_IO(int, struct kiocb *, const struct iovec *, loff_t,
+extern ssize_t nfs_direct_IO(int, struct kiocb *, const struct iovec *, loff_t,
 			unsigned long);
 extern ssize_t nfs_file_direct_read(struct kiocb *iocb, char *buf,
 			size_t count, loff_t pos);

_
