diff options
| -rw-r--r-- | fs/direct-io.c | 18 |
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; |
