Lines Matching refs:dio
124 struct blkdev_dio *dio = bio->bi_private;
125 bool should_dirty = dio->flags & DIO_SHOULD_DIRTY;
127 if (bio->bi_status && !dio->bio.bi_status)
128 dio->bio.bi_status = bio->bi_status;
130 if (atomic_dec_and_test(&dio->ref)) {
131 if (!(dio->flags & DIO_IS_SYNC)) {
132 struct kiocb *iocb = dio->iocb;
137 if (likely(!dio->bio.bi_status)) {
138 ret = dio->size;
141 ret = blk_status_to_errno(dio->bio.bi_status);
144 dio->iocb->ki_complete(iocb, ret);
145 bio_put(&dio->bio);
147 struct task_struct *waiter = dio->waiter;
149 WRITE_ONCE(dio->waiter, NULL);
167 struct blkdev_dio *dio;
181 dio = container_of(bio, struct blkdev_dio, bio);
182 atomic_set(&dio->ref, 1);
184 * Grab an extra reference to ensure the dio structure which is embedded
191 dio->flags = DIO_IS_SYNC;
192 dio->waiter = current;
194 dio->flags = 0;
195 dio->iocb = iocb;
198 dio->size = 0;
200 dio->flags |= DIO_SHOULD_DIRTY;
206 bio->bi_private = dio;
236 if (dio->flags & DIO_SHOULD_DIRTY)
241 dio->size += bio->bi_iter.bi_size;
249 atomic_inc(&dio->ref);
261 if (!READ_ONCE(dio->waiter))
268 ret = blk_status_to_errno(dio->bio.bi_status);
270 ret = dio->size;
272 bio_put(&dio->bio);
278 struct blkdev_dio *dio = container_of(bio, struct blkdev_dio, bio);
279 struct kiocb *iocb = dio->iocb;
285 ret = dio->size;
293 if (dio->flags & DIO_SHOULD_DIRTY) {
308 struct blkdev_dio *dio;
320 dio = container_of(bio, struct blkdev_dio, bio);
321 dio->flags = 0;
322 dio->iocb = iocb;
342 dio->size = bio->bi_iter.bi_size;
346 dio->flags |= DIO_SHOULD_DIRTY;