--- 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); _