aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/direct-io.c18
1 files changed, 1 insertions, 17 deletions
diff --git a/fs/direct-io.c b/fs/direct-io.c
index 6874785bb65a..901dc55e9f54 100644
--- a/fs/direct-io.c
+++ b/fs/direct-io.c
@@ -958,36 +958,22 @@ direct_io_worker(int rw, struct kiocb *iocb, struct inode *inode,
958 ssize_t ret2; 958 ssize_t ret2;
959 size_t bytes; 959 size_t bytes;
960 960
961 dio->bio = NULL;
962 dio->inode = inode; 961 dio->inode = inode;
963 dio->rw = rw; 962 dio->rw = rw;
964 dio->blkbits = blkbits; 963 dio->blkbits = blkbits;
965 dio->blkfactor = inode->i_blkbits - blkbits; 964 dio->blkfactor = inode->i_blkbits - blkbits;
966 dio->start_zero_done = 0;
967 dio->size = 0;
968 dio->block_in_file = offset >> blkbits; 965 dio->block_in_file = offset >> blkbits;
969 dio->blocks_available = 0;
970 dio->cur_page = NULL;
971 966
972 dio->boundary = 0;
973 dio->reap_counter = 0;
974 dio->get_block = get_block; 967 dio->get_block = get_block;
975 dio->end_io = end_io; 968 dio->end_io = end_io;
976 dio->map_bh.b_private = NULL;
977 dio->map_bh.b_state = 0;
978 dio->final_block_in_bio = -1; 969 dio->final_block_in_bio = -1;
979 dio->next_block_for_io = -1; 970 dio->next_block_for_io = -1;
980 971
981 dio->page_errors = 0;
982 dio->io_error = 0;
983 dio->result = 0;
984 dio->iocb = iocb; 972 dio->iocb = iocb;
985 dio->i_size = i_size_read(inode); 973 dio->i_size = i_size_read(inode);
986 974
987 spin_lock_init(&dio->bio_lock); 975 spin_lock_init(&dio->bio_lock);
988 dio->refcount = 1; 976 dio->refcount = 1;
989 dio->bio_list = NULL;
990 dio->waiter = NULL;
991 977
992 /* 978 /*
993 * In case of non-aligned buffers, we may need 2 more 979 * In case of non-aligned buffers, we may need 2 more
@@ -995,8 +981,6 @@ direct_io_worker(int rw, struct kiocb *iocb, struct inode *inode,
995 */ 981 */
996 if (unlikely(dio->blkfactor)) 982 if (unlikely(dio->blkfactor))
997 dio->pages_in_io = 2; 983 dio->pages_in_io = 2;
998 else
999 dio->pages_in_io = 0;
1000 984
1001 for (seg = 0; seg < nr_segs; seg++) { 985 for (seg = 0; seg < nr_segs; seg++) {
1002 user_addr = (unsigned long)iov[seg].iov_base; 986 user_addr = (unsigned long)iov[seg].iov_base;
@@ -1184,7 +1168,7 @@ __blockdev_direct_IO(int rw, struct kiocb *iocb, struct inode *inode,
1184 } 1168 }
1185 } 1169 }
1186 1170
1187 dio = kmalloc(sizeof(*dio), GFP_KERNEL); 1171 dio = kzalloc(sizeof(*dio), GFP_KERNEL);
1188 retval = -ENOMEM; 1172 retval = -ENOMEM;
1189 if (!dio) 1173 if (!dio)
1190 goto out; 1174 goto out;