Lines Matching defs:dio
133 struct blkdev_dio *dio = bio->bi_private;
134 bool should_dirty = dio->flags & DIO_SHOULD_DIRTY;
135 bool is_sync = dio->flags & DIO_IS_SYNC;
137 if (bio->bi_status && !dio->bio.bi_status)
138 dio->bio.bi_status = bio->bi_status;
143 if (atomic_dec_and_test(&dio->ref)) {
145 struct kiocb *iocb = dio->iocb;
150 if (likely(!dio->bio.bi_status)) {
151 ret = dio->size;
154 ret = blk_status_to_errno(dio->bio.bi_status);
157 dio->iocb->ki_complete(iocb, ret);
158 bio_put(&dio->bio);
160 struct task_struct *waiter = dio->waiter;
162 WRITE_ONCE(dio->waiter, NULL);
179 struct blkdev_dio *dio;
188 dio = container_of(bio, struct blkdev_dio, bio);
189 atomic_set(&dio->ref, 1);
191 * Grab an extra reference to ensure the dio structure which is embedded
198 dio->flags = DIO_IS_SYNC;
199 dio->waiter = current;
201 dio->flags = 0;
202 dio->iocb = iocb;
205 dio->size = 0;
207 dio->flags |= DIO_SHOULD_DIRTY;
215 bio->bi_private = dio;
246 if (dio->flags & DIO_SHOULD_DIRTY)
251 dio->size += bio->bi_iter.bi_size;
259 atomic_inc(&dio->ref);
271 if (!READ_ONCE(dio->waiter))
278 ret = blk_status_to_errno(dio->bio.bi_status);
280 ret = dio->size;
282 bio_put(&dio->bio);
294 struct blkdev_dio *dio = container_of(bio, struct blkdev_dio, bio);
295 struct kiocb *iocb = dio->iocb;
301 ret = dio->size;
312 if (dio->flags & DIO_SHOULD_DIRTY) {
327 struct blkdev_dio *dio;
334 dio = container_of(bio, struct blkdev_dio, bio);
335 dio->flags = 0;
336 dio->iocb = iocb;
356 dio->size = bio->bi_iter.bi_size;
360 dio->flags |= DIO_SHOULD_DIRTY;