linux/fs/direct-io.c
<<
>>
Prefs
   1/*
   2 * fs/direct-io.c
   3 *
   4 * Copyright (C) 2002, Linus Torvalds.
   5 *
   6 * O_DIRECT
   7 *
   8 * 04Jul2002    Andrew Morton
   9 *              Initial version
  10 * 11Sep2002    janetinc@us.ibm.com
  11 *              added readv/writev support.
  12 * 29Oct2002    Andrew Morton
  13 *              rewrote bio_add_page() support.
  14 * 30Oct2002    pbadari@us.ibm.com
  15 *              added support for non-aligned IO.
  16 * 06Nov2002    pbadari@us.ibm.com
  17 *              added asynchronous IO support.
  18 * 21Jul2003    nathans@sgi.com
  19 *              added IO completion notifier.
  20 */
  21
  22#include <linux/kernel.h>
  23#include <linux/module.h>
  24#include <linux/types.h>
  25#include <linux/fs.h>
  26#include <linux/mm.h>
  27#include <linux/slab.h>
  28#include <linux/highmem.h>
  29#include <linux/pagemap.h>
  30#include <linux/task_io_accounting_ops.h>
  31#include <linux/bio.h>
  32#include <linux/wait.h>
  33#include <linux/err.h>
  34#include <linux/blkdev.h>
  35#include <linux/buffer_head.h>
  36#include <linux/rwsem.h>
  37#include <linux/uio.h>
  38#include <linux/atomic.h>
  39#include <linux/prefetch.h>
  40
  41/*
  42 * How many user pages to map in one call to get_user_pages().  This determines
  43 * the size of a structure in the slab cache
  44 */
  45#define DIO_PAGES       64
  46
  47/*
  48 * This code generally works in units of "dio_blocks".  A dio_block is
  49 * somewhere between the hard sector size and the filesystem block size.  it
  50 * is determined on a per-invocation basis.   When talking to the filesystem
  51 * we need to convert dio_blocks to fs_blocks by scaling the dio_block quantity
  52 * down by dio->blkfactor.  Similarly, fs-blocksize quantities are converted
  53 * to bio_block quantities by shifting left by blkfactor.
  54 *
  55 * If blkfactor is zero then the user's request was aligned to the filesystem's
  56 * blocksize.
  57 */
  58
  59/* dio_state only used in the submission path */
  60
  61struct dio_submit {
  62        struct bio *bio;                /* bio under assembly */
  63        unsigned blkbits;               /* doesn't change */
  64        unsigned blkfactor;             /* When we're using an alignment which
  65                                           is finer than the filesystem's soft
  66                                           blocksize, this specifies how much
  67                                           finer.  blkfactor=2 means 1/4-block
  68                                           alignment.  Does not change */
  69        unsigned start_zero_done;       /* flag: sub-blocksize zeroing has
  70                                           been performed at the start of a
  71                                           write */
  72        int pages_in_io;                /* approximate total IO pages */
  73        size_t  size;                   /* total request size (doesn't change)*/
  74        sector_t block_in_file;         /* Current offset into the underlying
  75                                           file in dio_block units. */
  76        unsigned blocks_available;      /* At block_in_file.  changes */
  77        int reap_counter;               /* rate limit reaping */
  78        sector_t final_block_in_request;/* doesn't change */
  79        unsigned first_block_in_page;   /* doesn't change, Used only once */
  80        int boundary;                   /* prev block is at a boundary */
  81        get_block_t *get_block;         /* block mapping function */
  82        dio_submit_t *submit_io;        /* IO submition function */
  83
  84        loff_t logical_offset_in_bio;   /* current first logical block in bio */
  85        sector_t final_block_in_bio;    /* current final block in bio + 1 */
  86        sector_t next_block_for_io;     /* next block to be put under IO,
  87                                           in dio_blocks units */
  88
  89        /*
  90         * Deferred addition of a page to the dio.  These variables are
  91         * private to dio_send_cur_page(), submit_page_section() and
  92         * dio_bio_add_page().
  93         */
  94        struct page *cur_page;          /* The page */
  95        unsigned cur_page_offset;       /* Offset into it, in bytes */
  96        unsigned cur_page_len;          /* Nr of bytes at cur_page_offset */
  97        sector_t cur_page_block;        /* Where it starts */
  98        loff_t cur_page_fs_offset;      /* Offset in file */
  99
 100        /*
 101         * Page fetching state. These variables belong to dio_refill_pages().
 102         */
 103        int curr_page;                  /* changes */
 104        int total_pages;                /* doesn't change */
 105        unsigned long curr_user_address;/* changes */
 106
 107        /*
 108         * Page queue.  These variables belong to dio_refill_pages() and
 109         * dio_get_page().
 110         */
 111        unsigned head;                  /* next page to process */
 112        unsigned tail;                  /* last valid page + 1 */
 113};
 114
 115/* dio_state communicated between submission path and end_io */
 116struct dio {
 117        int flags;                      /* doesn't change */
 118        int rw;
 119        struct inode *inode;
 120        loff_t i_size;                  /* i_size when submitted */
 121        dio_iodone_t *end_io;           /* IO completion function */
 122
 123        void *private;                  /* copy from map_bh.b_private */
 124
 125        /* BIO completion state */
 126        spinlock_t bio_lock;            /* protects BIO fields below */
 127        int page_errors;                /* errno from get_user_pages() */
 128        int is_async;                   /* is IO async ? */
 129        int io_error;                   /* IO error in completion path */
 130        unsigned long refcount;         /* direct_io_worker() and bios */
 131        struct bio *bio_list;           /* singly linked via bi_private */
 132        struct task_struct *waiter;     /* waiting task (NULL if none) */
 133
 134        /* AIO related stuff */
 135        struct kiocb *iocb;             /* kiocb */
 136        ssize_t result;                 /* IO result */
 137
 138        /*
 139         * pages[] (and any fields placed after it) are not zeroed out at
 140         * allocation time.  Don't add new fields after pages[] unless you
 141         * wish that they not be zeroed.
 142         */
 143        struct page *pages[DIO_PAGES];  /* page buffer */
 144} ____cacheline_aligned_in_smp;
 145
 146static struct kmem_cache *dio_cache __read_mostly;
 147
 148/*
 149 * How many pages are in the queue?
 150 */
 151static inline unsigned dio_pages_present(struct dio_submit *sdio)
 152{
 153        return sdio->tail - sdio->head;
 154}
 155
 156/*
 157 * Go grab and pin some userspace pages.   Typically we'll get 64 at a time.
 158 */
 159static inline int dio_refill_pages(struct dio *dio, struct dio_submit *sdio)
 160{
 161        int ret;
 162        int nr_pages;
 163
 164        nr_pages = min(sdio->total_pages - sdio->curr_page, DIO_PAGES);
 165        ret = get_user_pages_fast(
 166                sdio->curr_user_address,                /* Where from? */
 167                nr_pages,                       /* How many pages? */
 168                dio->rw == READ,                /* Write to memory? */
 169                &dio->pages[0]);                /* Put results here */
 170
 171        if (ret < 0 && sdio->blocks_available && (dio->rw & WRITE)) {
 172                struct page *page = ZERO_PAGE(0);
 173                /*
 174                 * A memory fault, but the filesystem has some outstanding
 175                 * mapped blocks.  We need to use those blocks up to avoid
 176                 * leaking stale data in the file.
 177                 */
 178                if (dio->page_errors == 0)
 179                        dio->page_errors = ret;
 180                page_cache_get(page);
 181                dio->pages[0] = page;
 182                sdio->head = 0;
 183                sdio->tail = 1;
 184                ret = 0;
 185                goto out;
 186        }
 187
 188        if (ret >= 0) {
 189                sdio->curr_user_address += ret * PAGE_SIZE;
 190                sdio->curr_page += ret;
 191                sdio->head = 0;
 192                sdio->tail = ret;
 193                ret = 0;
 194        }
 195out:
 196        return ret;     
 197}
 198
 199/*
 200 * Get another userspace page.  Returns an ERR_PTR on error.  Pages are
 201 * buffered inside the dio so that we can call get_user_pages() against a
 202 * decent number of pages, less frequently.  To provide nicer use of the
 203 * L1 cache.
 204 */
 205static inline struct page *dio_get_page(struct dio *dio,
 206                struct dio_submit *sdio)
 207{
 208        if (dio_pages_present(sdio) == 0) {
 209                int ret;
 210
 211                ret = dio_refill_pages(dio, sdio);
 212                if (ret)
 213                        return ERR_PTR(ret);
 214                BUG_ON(dio_pages_present(sdio) == 0);
 215        }
 216        return dio->pages[sdio->head++];
 217}
 218
 219/**
 220 * dio_complete() - called when all DIO BIO I/O has been completed
 221 * @offset: the byte offset in the file of the completed operation
 222 *
 223 * This releases locks as dictated by the locking type, lets interested parties
 224 * know that a DIO operation has completed, and calculates the resulting return
 225 * code for the operation.
 226 *
 227 * It lets the filesystem know if it registered an interest earlier via
 228 * get_block.  Pass the private field of the map buffer_head so that
 229 * filesystems can use it to hold additional state between get_block calls and
 230 * dio_complete.
 231 */
 232static ssize_t dio_complete(struct dio *dio, loff_t offset, ssize_t ret, bool is_async)
 233{
 234        ssize_t transferred = 0;
 235
 236        /*
 237         * AIO submission can race with bio completion to get here while
 238         * expecting to have the last io completed by bio completion.
 239         * In that case -EIOCBQUEUED is in fact not an error we want
 240         * to preserve through this call.
 241         */
 242        if (ret == -EIOCBQUEUED)
 243                ret = 0;
 244
 245        if (dio->result) {
 246                transferred = dio->result;
 247
 248                /* Check for short read case */
 249                if ((dio->rw == READ) && ((offset + transferred) > dio->i_size))
 250                        transferred = dio->i_size - offset;
 251        }
 252
 253        if (ret == 0)
 254                ret = dio->page_errors;
 255        if (ret == 0)
 256                ret = dio->io_error;
 257        if (ret == 0)
 258                ret = transferred;
 259
 260        if (dio->end_io && dio->result) {
 261                dio->end_io(dio->iocb, offset, transferred,
 262                            dio->private, ret, is_async);
 263        } else {
 264                if (is_async)
 265                        aio_complete(dio->iocb, ret, 0);
 266                inode_dio_done(dio->inode);
 267        }
 268
 269        return ret;
 270}
 271
 272static int dio_bio_complete(struct dio *dio, struct bio *bio);
 273/*
 274 * Asynchronous IO callback. 
 275 */
 276static void dio_bio_end_aio(struct bio *bio, int error)
 277{
 278        struct dio *dio = bio->bi_private;
 279        unsigned long remaining;
 280        unsigned long flags;
 281
 282        /* cleanup the bio */
 283        dio_bio_complete(dio, bio);
 284
 285        spin_lock_irqsave(&dio->bio_lock, flags);
 286        remaining = --dio->refcount;
 287        if (remaining == 1 && dio->waiter)
 288                wake_up_process(dio->waiter);
 289        spin_unlock_irqrestore(&dio->bio_lock, flags);
 290
 291        if (remaining == 0) {
 292                dio_complete(dio, dio->iocb->ki_pos, 0, true);
 293                kmem_cache_free(dio_cache, dio);
 294        }
 295}
 296
 297/*
 298 * The BIO completion handler simply queues the BIO up for the process-context
 299 * handler.
 200ss="comment"> * handler.
 201/* singlpoints ment">/* singlisment* mass="comment"> * handler.
 202 * handler.
 203nt">/* cleanup the bio */
<3 href="fs3direct-io.c#L204" id="L234" cl3ss="line" name="L276"> 276static void dio_bio_end_aio(struct bio *bio, int error)
<3 href="fs3direct-io.c#L205" id="L235" cl3ss="lief">remaining == 0) {
<3 href="fs3direct-io.c#L206" id="L236" cl3ss="line" name="L278"> 278        struct dio *dio = bio->bi_private;
<3 href="fs3direct-io.c#L207" id="L237" cl30s="line" name="L280"> 280        unsigned long flags;
<3 href="fs3direct-io.c#L208" id="L238" cl30s="line" name="L268"> 268
<3 href="fs3direct-io.c#L209" id="L239" cl30s="line" name="L289"> 289        spin_lock_irqsave(&dio->bio_lock, flags);
<3 href="fs3direct-io.c#L210" id="L230" cl310="line" name="L289"> 289 = bio->ret = diobio *flags);
<3 1ref="fs/direct-io.c#L211" id="L231" cl3ss="line" name class="sref">ret = diobio *dio = flags);
<3 2ref="fs/direct-io.c#L212" id="L232" cl31s="line" name="L2="sref">remaining = --dio->remaining == 1 && dio->waiter)
<3 href="fs3direct-io.c#L213" id="L233" cl3ss="line" name="L213"> 288                wake_up_process(dio->waiter);
<3 href="fs3direct-io.c#L214" id="L234" cl3ss="line" name="L289"> 289        spin_unlock_irqrestore(&dio->bio_lock, flags);
<3 href="fs3direct-io.c#L215" id="L235" cl31s="line" name="L295"> 295}
<3 href="fs3direct-io.c#L216" id="L236" cl31s="line" name="L296"> 296
<3 href="fs3direct-io.c#L217" id="L237" cl31s="line" name="L297"> 297>ss="comment"> * handler.
 298 * handler.
 219
<3 href="fs3direct-io.c#L220" id="L230" cl3ss="line" name="L220"> 220<@ode=e: EEUED iPass bio as classI/O has been completed
<3 1ref="fs/direct-io.c#L221" id="L231" cl3ss="line" name="L221"> 221ssI/O has been completed
<3 2ref="fs/direct-io.c#L222" id="L232" cl3ss="line" name="L222"> 222 * by       mment"> *"commustion hir own io_submit"_p for the process-context
<3 href="fs3direct-io.c#L223" id="L233" cl3ss="line" name="L223"> 223  for the process-context
<3 href="fs3direct-io.c#L224" id="L234" cl3ss="line" name="L224"> 224 * handler.
 225nt">/* cleanup the bio */
<3 href="fs3direct-io.c#L226" id="L236" cl3ss="lie="L276"> 276static  dio_bio_end_aio(struct bio *bio, int error)
<3 href="fs3direct-io.c#L227" id="L237" cl32s="line" name="L277"> 277{
<3 href="fs3direct-io.c#L228" id="L238" cl32s="line" name="L278"> 278        struct dio *dio = bio->bi_private;
<3 href="fs3direct-io.c#L229" id="L239" cl32s="line" name="L259"> 259
<3 href="fs3direct-io.c#L230" id="L230" cl33s="line" name="L260"> 260        if (dio     if (is_async)
<3 href="fs3direct-io.c#L231" id="L231" cl33s="line" name="L261"> 261           void bio *bio, int bi_private;
<3 href="fs3direct-io.c#L232" id="L232" cl33s="line" nameL263s="sref">bi_private;
<3 href="fs3direct-io.c#L233" id="L233" cl33s="line" name="L213"> 288       tic void bio *bio, int bi_private;
<3 href="fs3direct-io.c#L234" id="L234" cl33s="line" name="L154"> 154}
<3 href="fs3direct-io.c#L235" id="L235" cl33s="line" name="L195"EXPORT_SYMBOL_GPLint kmem_cache_free bi_private;
<3 href="fs3direct-io.c#L236" id="L236" cl33s="line" name="L296"> 296
<3 href="fs3direct-io.c#L237" id="L237" cl3ss="line" name="L205"> 205static  296
<3 href="fs3direct-io.c#L238" id="L238" cl3ss="lin288       tic voidt">o (o s="sref">dio_bio_end_aio(struct dio *dioio_submit"(dio_submit *transferred,
<3 href="fs3direct-io.c#L239" id="L239" cl33s="line" name="L249ef">dio_bio_end_aiore" cdevicbdeva href="+code=bidev=sdis="sref">transferred,
<3 href="fs3direct-io.c#L240" id="L230" cl34s="line" name="L250="sref">dio_submredor    bio_loirst_eredora>, biois_async)
<3 href="fs3direct-io.c#L241" id="L231" cl3ss="line" name="L277"> 277{
<3 href="fs3direct-io.c#L242" id="L232" cl3ss="line" nameef">dio_bio_end_aio(struct bio *bi_private;
<3 href="fs3direct-io.c#L243" id="L233" cl34s="line" name="L163"> 163
<3 href="fs3direct-io.c#L244" id="L234" cl34s="line" name=e" name="L297"> 297/*
<3 href="fs3direct-io.c#L245" id="L235" cl34s="line" name="L175"> 175o () an guaran   * map="L269"atcommdio_cnt"> * dIO /*
<3 href="fs3direct-io.c#L246" id="L236" cl34s="line" name="L176"> 176 * handler.
 237/* cleanup the bio */
<3 href="fs3direct-io.c#L248" id="L238" cl3ss="line" name_bio_end_aio(struct dioo (o s="sr class="sref">dGFP_KERNELint biobi_private;
<3 href="fs3direct-io.c#L249" id="L239" cl34s="line" name="L259"> 259
<3 href="fs3direct-io.c#L250" id="L230" cl350="line" name="L289"> 289 = biodideva href="+code=bidev=sdiss="sref">bi_private;
<3 href="fs3direct-io.c#L251" id="L231" cl35s="line" name class="sref">rio = bio, doirst_eredora>, bi_private;
<3 href="fs3direct-io.c#L252" id="L232" cl35s="line" name="L242"> 242        if (dio     if (is_async)
<3 href="fs3direct-io.c#L253" id="L233" cl35s="line" name="L213"> 288       io = bioret< void bi_private;
<3 href="fs3direct-io.c#L254" id="L234" cl3ss="line" nameL263s="sref">bi_private;
<3 href="fs3direct-io.c#L255" id="L235" cl35s="line" name="L265"> 288       io = bioret< void bi_private;
<3 href="fs3direct-io.c#L256" id="L236" cl35s="line" name="L296"> 296
<3 href="fs3direct-io.c#L257" id="L237" cl3ss="line" name="sref">dio_submit *diodio< *bi_private;
<3 href="fs3direct-io.c#L258" id="L238" cl35s="line" name_bio_end_aio *diologint"_de=off_in_io< *d         sdio, bi_private;
<3 href="fs3direct-io.c#L259" id="L239" cl3ss="line" name="L154"> 154}
<3 href="fs3direct-io.c#L260" id="L230" cl36s="line" name="L290"> 290
<3 href="fs3direct-io.c#L261" id="L231" cl36s="line" name="L221"> 221/*
<3 href="fs3direct-io.c#L262" id="L232" cl36s="line" name="L222"> 222/* Chwlespec hasivelynlertases lode=p beforese irommenIOass="comment"> * handler.
 223nnt">     hen awritteates the resulting return
<3 href="fs3direct-io.c#L264" id="L234" cl36s="line" name="L224"> 224<> *  dIllibeerelertihave the _cpan resent"lerta()ass="comment"> * handler.
 225ss="comment"> * handler.
 226the silesyst"> * > *erenc to hold aubmit"_commperao" clo" casass="comment"> * handler.
 227nt">/* cleanup the bio */
<3 href="fs3direct-io.c#L268" id="L238" cl3ss="line" name="L205"> 205static ret< voidubmit"(dio_bio_end_aio(struct dio *dioio_submit"(dio_submit *is_async)
<3 href="fs3direct-io.c#L269" id="L239" cl3ss="line" name="L277"> 277{
<3 href="fs3direct-io.c#L270" id="L230" cl370="line" nameef">dio_bio_end_aio(struct bio *d         sdioio< *bi_private;
<3 href="fs3direct-io.c#L271" id="L231" cl37s="line" name="L280"> 280        unsigned long flags;
<3 href="fs3direct-io.c#L272" id="L232" cl37s="line" name="L252"> 252
<3 href="fs3direct-io.c#L273" id="L233" cl37s="line" name="L283"> 283 = bio->ret = flags;
<3 href="fs3direct-io.c#L274" id="L234" cl37s="line" name="L284"> 284
<3 href="fs3direct-io.c#L275" id="L235" cl37s="line" name="L285"> 285        spin_lock_irqsave(&dio->bio_lock, flags);
<3 href="fs3direct-io.c#L276" id="L236" cl37s="line" name="L286"> 286 = --dio->flags);
<3 href="fs3direct-io.c#L277" id="L237" cl37s="line" name="sref">dio_subm        spin_unlock_irqrestore(&dio->bio_lock, flags);
<3 href="fs3direct-io.c#L278" id="L238" cl37s="line" name="L268"> 268
<3 href="fs3direct-io.c#L279" id="L239" cl3ss="line" name="L242"> 242        if (dio     if (end_io && dio->rw ==  268
<3 href="fs3direct-io.c#L280" id="L230" cl38s="line" name="L190"> 190       bic upage" ct"lerta;bio *flags);
<3 href="fs3direct-io.c#L281" id="L231" cl3ss="line" name="L281"> 281
<3 href="fs3direct-io.c#L282" id="L232" cl38s="line" name="L242"> 242            sdioubmit"_        268
<3 href="fs3direct-io.c#L283" id="L233" cl38s="line" name="L213"> 288                sdioubmit"_                       if ((dio->dio, dio, dio->transferred,
<3 href="fs3direct-io.c#L284" id="L234" cl38s="line" name="L264">e" name="L213"> 288                sdiologint"_de=off_in_io< *flags);
<3 href="fs3direct-io.c#L285" id="L235" cl3ss="line" nameL263s="sref">bi_private;
<3 href="fs3direct-io.c#L286" id="L236" cl38s="line" name="L266"> 266       ubmit"_com                     if ((dio->dio, flags);
<3 href="fs3direct-io.c#L287" id="L237" cl38s="line" name="L247"> 247
<3 href="fs3direct-io.c#L288" id="L238" cl38s="line" name_bio_end_aio *diobio *dNULLint flags;
<3 href="fs3direct-io.c#L289" id="L239" cl3ss="line" name="L289"> 289it *diobcoudara;ret = 0;
<3 href="fs3direct-io.c#L290" id="L230" cl390="line" name="L289"> 289 *diologint"_de=off_in_io< *ret = 0;
<3 href="fs3direct-io.c#L291" id="L231" cl3ss="line" name="L154"> 154}
<3 href="fs3direct-io.c#L292" id="L232" cl39s="line" name="L252"> 252
<3 href="fs3direct-io.c#L293" id="L233" cl39s="line" name="L273"> 273/*
<3 href="fs3direct-io.c#L294" id="L234" cl39s="line" name="L224"> 224 225nt">/* cleanup the bio */
<3 href="fs3direct-io.c#L296" id="L236" cl39s="line" name="L205"> 205static ret< span cl(dio_bio_end_aio(struct dio *dioio_submit"(dio_submit *is_async)
<3 href="fs3direct-io.c#L297" id="L237" cl39s="line" name="L277"> 277{
<3 href="fs3direct-io.c#L298" id="L238" cl39s="line" name compL242"> 242      N(dio_pages_present(is_async)
<3 href="fs3direct-io.c#L299" id="L239" cl39s="line" name="L249">">dio_pages_preesen_free" class="(                if ((dio, flags);
<4 href="fs4direct-io.c#L32k_irq1s/d4200" 40s="line" name="L270"> 270}
<4 1ref="fs4direct-io.c#L291" id="L241" cl40s="line" name="L281"> 281
<4 2ref="fs4direct-io.c#L292" id="L242" cl4ss="line" name="L202"> 202/*
<4 3ref="fs4direct-io.c#L293" id="L243" cl4ss="line" name="L203"> 203 Waittimply qunextandletcting to h.  *pera="L269"it. 
<4 href="fs4direct-io.c#L204" id="L244" cl40s="line" name="L224"> 224<="L269 thenc tomplndls>     hen all DIO BI.  * enc  lets interested parties
<4 5ref="fs4direct-io.c#L295" id="L245" cl40s="line" name="L225"> 225 226ttequiessfferedy redy qunt"> rilesyst"r *erenc tonnt">
<4 7ref="fs4direct-io.c#L297" id="L247" cl40s="line" name="L227"> 227nt">/* cleanup the bio */
<4 href="fs4direct-io.c#L208" id="L248" cl40s="line" namef">dio_bio_end_aio(struct s_prade=w_ href="+code=inodes_prade=w_ hr claref">dio_bio_end_aio(struct dio *is_async)
<4 href="fs4direct-io.c#L209" id="L249" cl40s="line" name="L277"> 277{
<4 href="fs4direct-io.c#L210" id="L240" cl41s="line" name="L280"> 280        unsigned long flags;
<4 1ref="fs4direct-io.c#L211" id="L241" cl4ss="line" nameef">dio_bio_end_aio(struct bio *dNULLint flags;
<4 2ref="fs4direct-io.c#L212" id="L242" cl41s="line" name="L252"> 252
<4 href="fs4direct-io.c#L213" id="L243" cl41s="line" name="L283"> 283        spin_lock_irqsave(&dio->bio_lock, flags);
<4 href="fs4direct-io.c#L214" id="L244" cl41s="line" name="L284"> 284
<4 href="fs4direct-io.c#L215" id="L245" cl41s="line" name=e" name="L202"> 202/*
<4 href="fs4direct-io.c#L216" id="L246" cl41s="line" name="L176"> 176 * handler.
<4 href="fs4direct-io.c#L217" id="L247" cl41s="line" name="L297"> 297 298
<4 href="fs4direct-io.c#L219" id="L249" cl4ss="line" name="L219"> 219"> *pn'sesommenourafcnditcompleted by bio completion.
<4 href="fs4direct-io.c#L220" id="L240" cl4ss="line" name="L220"> 220/* cleanup the bio */
<4 1ref="fs4direct-io.c#L221" id="L241" cl42s="line" name compL242"> 242      > = --dio->remaining == 1 && diobio *dNULLint remaining == 0) {
<4 2ref="fs4direct-io.c#L222" id="L242" cl42s="line" name="L292"> 292       __ pagcurrent_ne" eint             TASK_UNINTERRUPTIBLEint flags);
<4 href="fs4direct-io.c#L223" id="L243" cl42s="line" name="L213"> 288       tic& dio->dcurrentgt;flags;
<4 href="fs4direct-io.c#L224" id="L244" cl42s="line" name="L254"> 254       m        spin_unlock_irqrestore(&dio->bio_lock, flags);
<4 href="fs4direct-io.c#L225" id="L245" cl42s="line" name="L265"> 288       ic uchedultic spi" class="sref">flags);
<4 href="fs4direct-io.c#L226" id="L246" cl42s="line" name="L266"> "L282"> 282        /* cleanup the bio */
<4 href="fs4direct-io.c#L227" id="L247" cl427="line" name="L254"> 254       m        spin_lock_irqsave(&dio->bio_lock, flags);
<4 href="fs4direct-io.c#L228" id="L248" cl42s="line" name="L288"> 288       tic& dio->dNULLint flags;
<4 href="fs4direct-io.c#L229" id="L249" cl42s="line" namene" name="L270"> 270}
<4 href="fs4direct-io.c#L230" id="L240" cl43s="line" name="L260"> 260        if (diobio *remaining == 0) {
<4 href="fs4direct-io.c#L231" id="L241" cl43s="line" name="L261"> 261       bio *d     if (diobio *flags;
<4 href="fs4direct-io.c#L232" id="L242" cl43s="line" name="L292"> 292          & diobio *dio = bio->bi_private;
<4 href="fs4direct-io.c#L233" id="L243" cl43s="line" namene" name="L270"> 270}
<4 href="fs4direct-io.c#L234" id="L244" cl43s="line" name="L289"> 289        spin_unlock_irqrestore(&dio->bio_lock, flags0}
<4 href="fs4direct-io.c#L235" id="L245" cl43s="line" name="L269"> 269      io< *bi_private;
<4 href="fs4direct-io.c#L236" id="L246" cl43s="line" name="L270"> 270}
<4 href="fs4direct-io.c#L237" id="L247" cl43s="line" name="L247"> 247
<4 href="fs4direct-io.c#L238" id="L248" cl43s="line" name="L298"> 298/*
<4 href="fs4direct-io.c#L239" id="L249" cl43s="line" name="L219"> 219
<4 href="fs4direct-io.c#L240" id="L240" cl44s="line" name="L220"> 220nt">/* cleanup the bio */
<4 href="fs4direct-io.c#L241" id="L241" cl4ss="line" name="L272"> 272static int dio_bio_complete(struct dio *dio, struct bio *is_async)
<4 href="fs4direct-io.c#L242" id="L242" cl4ss="lief">remaining == 0) {
<4 href="fs4direct-io.c#L243" id="L243" cl44s="line" nameconis a="L272"> 272stuptodt;dsesompl * = bio, flags0}
<4 href="fs4direct-io.c#L244" id="L244" cl44s="line" name" class="sref">dio, srvec;bvec;dio = bioflags0}
<4 href="fs4direct-io.c#L245" id="L245" cl44s="line" namea="L272"> 272stesen_n = flags0}
<4 href="fs4direct-io.c#L246" id="L246" cl44s="line" name="L296"> 296
<4 href="fs4direct-io.c#L247" id="L247" cl44s="line" name="L2!272"> 272stuptodt;is_async)
<4 href="fs4direct-io.c#L248" id="L248" cl44s="line" name="L288"> 288       tic& dio_aioa>, int remainingEIOint flags0}
<4 href="fs4direct-io.c#L249" id="L249" cl44s="line" name="L259"> 259
<4 href="fs4direct-io.c#L250" id="L240" cl45s="line" name="L260"> 260        if (dio     if (end_io && dio->rw == remaining == 0) {
<4 href="fs4direct-io.c#L251" id="L241" cl45s="line" name="L261"> 261       bio_cpan resent"lerta;            dio,  "L282"> 282        nt">/* cleanup the bio */
<4 href="fs4direct-io.c#L252" id="L242" cl45s="line" name}eL263ref">remaining == 0) {
<4 href="fs4direct-io.c#L253" id="L243" cl45s="line" name="L213">impl            esen_n =  272stesen_n =  272stio = bio 272stesen_n = remaining == 0) {
<4 href="fs4direct-io.c#L254" id="L244" cl45s="line" name="L264">e" name=" class="sref">dioe" c"+code=dio_pagee" c=REAio" class="sref">e" c"+code=dio_pagee" c=REAio" class="sref">divec; 272stesen_n = divge" c"+code=dio_pageivge" cde=b class="sref">flags0}
<4 href="fs4direct-io.c#L255" id="L245" cl45s="liclass="sref">flags0}
<4 href="fs4direct-io.c#L256" id="L246" cl45s="line" name="L266">ne" name="L260"> 260        if (dio->rw ==  272stP" cC" ccoud> ==             e" c"+code=dio_pagee" c=REAolass="sref">is_async)
<4 href="fs4direct-io.c#L257" id="L247" cl457="line" name="L254">ne" name="L261"> 261       upage" c"lerta>->->=REA            e" c"+code=dio_pagee" c=REAo class="sref">flags0}
<4 href="fs4direct-io.c#L258" id="L248" cl45s="line" name="L288">="L261"> 261       esen_free" class="(flags0}
<4 href="fs4direct-io.c#L259" id="L249" cl45s="line" name="L249">ne" name="L270"> 270}
<4 href="fs4direct-io.c#L260" id="L240" cl46s="line" name="L190"> 190       bic pu * 270}
<4 href="fs4direct-io.c#L261" id="L241" cl46s="line" namene" name="L270"> 270}
<4 href="fs4direct-io.c#L262" id="L242" cl46s="line" name="L269"> 269      uptodt;remainingEIOint flags0}
<4 href="fs4direct-io.c#L263" id="L243" cl46s="line" name="L270"> 270}
<4 href="fs4direct-io.c#L264" id="L244" cl46s="line" name="L284"> 284
<4 href="fs4direct-io.c#L265" id="L245" cl46s="line" name="L225"> 225/*
<4 href="fs4direct-io.c#L266" id="L246" cl46s="line" name="L226"> 226tWaitton peras" clas * enc  lets interested parties
<4 href="fs4direct-io.c#L267" id="L247" cl46s="line" name="L227"> 227
<4 href="fs4direct-io.c#L268" id="L248" cl46s="line" name="L298"> 298implomplhe sito mak=eientsrough _complete" class. 
<4 href="fs4direct-io.c#L269" id="L249" cl46s="line" name="L219"> 219, omments" e" a havtsrough _coio" c_aioa>,  perashouldibees" e" a havviadeets interested parties
<4 href="fs4direct-io.c#L270" id="L240" cl47s="line" name="L220"> 220 * handler.
<4 href="fs4direct-io.c#L271" id="L241" cl47s="line" name="L221"> 221nt">/* cleanup the bio */
<4 href="fs4direct-io.c#L272" id="L242" cl47s="line" name="L276"> 276static ade=w_ss="commen="+code=dio_bio_comade=w_ss="commen="sref">dio_bio_complete(struct dio *is_async)
<4 href="fs4direct-io.c#L273" id="L243" cl47s="lief">remaining == 0) {
<4 href="fs4direct-io.c#L274" id="L244" cl47s="line" name" class="sref">dio, struct bio *flags0}
<4 href="fs4direct-io.c#L275" id="L245" cl47s="line" namedoref">remaining == 0) {
<4 href="fs4direct-io.c#L276" id="L246" cl47s="line" name="L266"> 266       bio *d   rade=w_ href="+code=inodes_prade=w_ hr clar" class="sref">dio *flags0}
<4 href="fs4direct-io.c#L277" id="L247" cl477="line" name="L254">="L260"> 260   bio *is_async)
<4 href="fs4direct-io.c#L278" id="L248" cl47s="line" name="L288">="L261"> 261       atic int dio * 270}
<4 href="fs4direct-io.c#L279" id="L249" cl4ss="line" name}e compL242"> 242   dio,  270}
<4 href="fs4direct-io.c#L280" id="L240" cl48s="line" name="L270"> 270}
<4 href="fs4direct-io.c#L281" id="L241" cl4ss="line" name="L281"> 281
<4 href="fs4direct-io.c#L282" id="L242" cl48s="line" name="L202"> 202/*
<4 href="fs4direct-io.c#L283" id="L243" cl48s="line" name="L203"> 203 A"entllyilarge O_DIRECT"ent">,  write     generingla los  Pandls.  * handler.
<4 href="fs4direct-io.c#L284" id="L244" cl48s="line" name="L224"> 224 * handler.
<4 href="fs4direct-io.c#L285" id="L245" cl48s="line" name="L225"> 225 226 lets interested parties
<4 href="fs4direct-io.c#L287" id="L247" cl48s="line" name="L227"> 227 usere" c="memory. lets interested parties
<4 href="fs4direct-io.c#L288" id="L248" cl48s="line" name="L298"> 298nt">/* cleanup the bio */
<4 href="fs4direct-io.c#L289" id="L249" cl4ss="line" name="L205"> 205static  272static ints=ap="+code=dio_bio_complets=ap="sref">dio_bio_complete(struct dio *dioio_submit"(dio_submit *is_async)
<4 href="fs4direct-io.c#L290" id="L240" cl490="lief">remaining == 0) {
<4 href="fs4direct-io.c#L291" id="L241" cl49s="line" namee="L272"> 272str/a>, ret = 0;
<4 href="fs4direct-io.c#L292" id="L242" cl49s="line" name="L252"> 252
<4 href="fs4direct-io.c#L293" id="L243" cl49s="line" name="L242"> 242            sdios=ap_fcoun->remaining == 0) {
<4 href="fs4direct-io.c#L294" id="L244" cl49s="line" name="L264"> compL242"> 242      > = --diobio *remaining == 0) {
<4 href="fs4direct-io.c#L295" id="L245" cl49s="line" name="L265">>>>>>>>>="L280"> 280        unsigned long flags;
<4 href="fs4direct-io.c#L296" id="L246" cl49s="line" name="L266">ne" name" class="sref">dio, struct bio *flags0}
<4 href="fs4direct-io.c#L297" id="L247" cl497="line" name="L254">ne" namee="L272"> 272str/a2>, flags0}
<4 href="fs4direct-io.c#L298" id="L248" cl49s="line" name="L268"> 268
<4 href="fs4direct-io.c#L299" id="L249" cl49s="line" name="L249">="L261"> 261       m        spin_lock_irqsave(&dio->bio_lock, flags);
<5 href="fs5direct-io.c#L32k_irq1s/d5200" 50s="line" name="L190">="L261"> 261       bio *d     if (diobio *flags;
<5 1ref="fs5direct-io.c#L291" id="L251" cl50s="line" name="L261">="L261"> 261          & diobio *dio = bio->bi_private;
<5 2ref="fs5direct-io.c#L292" id="L252" cl50s="line" name="L292">="L261"> 261       m        spin_unlock_irqrestore(&dio->bio_lock, flags0}
<5 3ref="fs5direct-io.c#L293" id="L253" cl50s="line" name="L213">="L261"> 261       r/a2>, ret< void dio * 270}
<5 href="fs5direct-io.c#L204" id="L254" cl50s="line" name="L264">e" name=="L242"> 242   r/a>, is_async)
<5 5ref="fs5direct-io.c#L295" id="L255" cl50s="line" name="L265">>>>>>>>>="L261"> 261       r/a>,  272str/a2>, flags0}
<5 6ref="fs5direct-io.c#L296" id="L256" cl50s="line" name="L266">ne" name="L270"> 270}
<5 7ref="fs5direct-io.c#L297" id="L257" cl507="line" name="L254"> 254       m        sdios=ap_fcoun->ret = 0;
<5 href="fs5direct-io.c#L208" id="L258" cl50s="line" namene" name="L270"> 270}
<5 9ref="fs5direct-io.c#L299" id="L259" cl50s="line" name="L269"> 269      r/a>, ret = 0;
<5 href="fs5direct-io.c#L210" id="L250" cl51s="line" name="L270"> 270}
<5 1ref="fs5direct-io.c#L211" id="L251" cl51s="line" name="L281"> 281
<5 2ref="fs5direct-io.c#L212" id="L252" cl51s="line" name="L202"> 202/*
<5 href="fs5direct-io.c#L213" id="L253" cl51s="line" name="L203"> 203 Complintctn hafsito map some moresdisk ire" s. /*
<5 href="fs5direct-io.c#L214" id="L254" cl51s="line" name="L224"> 224="=ws> Pass /*
<5 5ref="fs5direct-io.c#L215" id="L255" cl51s="line" name="L225"> 225 * handler.
<5 href="fs5direct-io.c#L216" id="L256" cl51s="line" name="L176"> 176/*
<5 7ref="fs5direct-io.c#L217" id="L257" cl51s="line" name="L297"> 297 Pab_locommt enc . /*
<5 href="fs5direct-io.c#L218" id="L258" cl51s="line" name="L298"> 298 * handler.
<5 9ref="fs5direct-io.c#L219" id="L259" cl5ss="line" name="L219"> 219/*
<5 href="fs5direct-io.c#L220" id="L250" cl5ss="line" name="L220"> 220/* * handler.
<5 1ref="fs5direct-io.c#L221" id="L251" cl52s="line" name="L221"> 221 haioremainmmenno do.  * handler.
<5 2ref="fs5direct-io.c#L222" id="L252" cl52s="line" name="L222"> 222de="comment"> * handler.
<5 href="fs5direct-io.c#L223" id="L253" cl52s="line" name="L203"> 203 Iftn hafsihaiomnt">dla los  Paire" s,eienshouldipop haseabhio" cb_oizennode="comment"> * handler.
<5 href="fs5direct-io.c#L224" id="L254" cl52s="line" name="L224"> 224 * handler.
<5 5ref="fs5direct-io.c#L225" id="L255" cl52s="line" name="L225"> 225 * handler.
<5 href="fs5direct-io.c#L226" id="L256" cl52s="line" name="L176"> 176/*
<5 href="fs5direct-io.c#L227" id="L257" cl52s="line" name="L297"> 297 Pass omnt">dlb_locommentnew,ass ntn hafsimuis off buffer_new()ass="comment"> * handler.
<5 href="fs5direct-io.c#L228" id="L258" cl52s="line" name="L298"> 298 * handler.
<5 9ref="fs5direct-io.c#L229" id="L259" cl52s="line" name="L219"> 219/*
<5 href="fs5direct-io.c#L230" id="L250" cl53s="line" name="L220"> 220/*
<5 1ref="fs5direct-io.c#L231" id="L251" cl53s="line" name="L221"> 221 hompLbyp="L269mmena9"aps" eritseavaluntin>b_oizenperabypspanrmme/*
<5 2ref="fs5direct-io.c#L232" id="L252" cl53s="line" name="L222"> 222d()a  How vernt">/*
<5 href="fs5direct-io.c#L233" id="L253" cl53s="line" name="L203"> 203 b_loc2aita time -eienwIllirepea halyint">"gpagb_loc() aioienwalkion haleseass="comment"> * handler.
<5 href="fs5direct-io.c#L234" id="L254" cl53s="line" name="L224"> 224nt">/* cleanup the bio */
<5 href="fs5direct-io.c#L235" id="L255" cl53s="line" name="L272"> 272stgpagmoregb_loc/a>, dio_bio_complete(struct dio *dioio_submit"(dio_submit *transferred,
<5 href="fs5direct-io.c#L236" id="L256" cl53s="line" name="L266">ne" name me" class="sref">dio,uffer_head> == dio_submnt_bh> == is_async)
<5 href="fs5direct-io.c#L237" id="L257" cl53s="line" name="L277"> 277{
<5 href="fs5direct-io.c#L238" id="L258" cl53s="line" namee="L272"> 272str/a>, ret = 0;
<5 href="fs5direct-io.c#L239" id="L259" cl53s="line" name="L289"> 289eedor_a>, bio_los_e iroblka>,  "L282"> 282        nt">/* cleanup the bio */
<5 href="fs5direct-io.c#L240" id="L250" cl540="line" name="L289"> 289, bio_los_endblka>, "> "L282"> 282        nt">/* cleanup the bio */
<5 1ref="fs5direct-io.c#L241" id="L251" cl54s="line" name="L280"> 280        unsigns_>-> 282        nt">/* cleanup the bio */
<5 2ref="fs5direct-io.c#L242" id="L252" cl542="line" namee="L272"> 272stcrssef="+code=dio_biocrsseft" cclass="sref">ret = 0;
<5 href="fs5direct-io.c#L243" id="L253" cl54s="line" name="L280"> e="L272"> 272st__blkb=wsic  272st>it *dioblkb=wsic  272st>it *dioblkfaedoric ret = 0;
<5 href="fs5direct-io.c#L244" id="L254" cl54s="line" name="L284"> 284
<5 href="fs5direct-io.c#L245" id="L255" cl54s="line" namene" name="L202"> 202/*
<5 href="fs5direct-io.c#L246" id="L256" cl54s="line" name="L176"> 176,  perawece pavChoverwrittealomplss /*
<5 href="fs5direct-io.c#L247" id="L257" cl54s="line" name="L297"> 297dlb_locomss ntwe     now ="L269" thenmemoryeoa>, /*
<5 href="fs5direct-io.c#L248" id="L258" cl54s="line" name="L298"> 298/* cleanup the bio */
<5 href="fs5direct-io.c#L249" id="L259" cl54s="line" name="L289"> 289,  272st/a>(&dioesen_oa>, o(&ret = 0;
<5 href="fs5direct-io.c#L250" id="L250" cl55s="line" name="L260"> 260   r/a>, remaining == 0) {
<5 href="fs5direct-io.c#L251" id="L251" cl55s="line" name="L261"> 261       BUG_ON>, >it *dioble" cln_compic >it *diofinal_ble" cln_teque> * de=b" e" name="L270"> 270}
<5 href="fs5direct-io.c#L252" id="L252" cl55s="line" name="L292"> 292       os_e iroblka>,  272st>it *dioble" cln_compic  272st>it *dioblkfaedoric ret = 0;
<5 href="fs5direct-io.c#L253" id="L253" cl55s="line" name="L213">ss="sref">bio_los_endblka>, >it *diofinal_ble" cln_teque> * de=b - 1)n"sre"srelass="sref">ret = 0;
<5 href="fs5direct-io.c#L254" id="L254" cl55s="line" name="L264">e" name=ne" name="L213">ss="sref">bio_l>it *dioblkfaedoric ret = 0;
<5 href="fs5direct-io.c#L255" id="L255" cl55s="line" name="L265"> 288       ns_>-> 272stos_endblka>,  292       os_e iroblka>, ret = 0;
<5 href="fs5direct-io.c#L256" id="L256" cl55s="line" name="L296"> 296
<5 href="fs5direct-io.c#L257" id="L257" cl557="line" name="L254">="sref">dio_submnt_bh> == diob_ne" eint ret = 0;
<5 href="fs5direct-io.c#L258" id="L258" cl55s="line" name="L288">="sref">dio_submnt_bh> == diob_nizeint  272stos_>-> 272st__blkb=wsic ret = 0;
<5 href="fs5direct-io.c#L259" id="L259" cl55s="line" name="L259"> 259
<5 href="fs5direct-io.c#L260" id="L250" cl56s="line" name="L190"> e" name="L202"> 202/*
<5 href="fs5direct-io.c#L261" id="L251" cl56s="line" name="L221"> 221/*
<5 href="fs5direct-io.c#L262" id="L252" cl56s="line" name="L222"> 222
<5 href="fs5direct-io.c#L263" id="L253" cl56s="line" name="L203"> 203 rienc twe seenpeleted by bio completion.
<5 href="fs5direct-io.c#L264" id="L254" cl56s="line" name="L224"> 224dlbuffer head<="L269 t,*perass ant"> riwIllift">leted by bio completion.
<5 href="fs5direct-io.c#L265" id="L255" cl56s="line" name="L225"> 225dlI/Opleted by bio completion.
<5 href="fs5direct-io.c#L266" id="L256" cl56s="line" name="L226"> 226
<5 href="fs5direct-io.c#L267" id="L257" cl56s="line" name="L227"> 227/*
<5 href="fs5direct-io.c#L268" id="L258" cl56s="line" name="L298"> 298d/*
<5 href="fs5direct-io.c#L269" id="L259" cl56s="line" name="L219"> 219
<5 href="fs5direct-io.c#L270" id="L250" cl57s="line" name="L220"> 220/* cleanup the bio */
<5 href="fs5direct-io.c#L271" id="L251" cl57s="line" name="L261"> 261       crssef="+code=dio_biocrsseft" cio"272"> 272st/a>(&dio->end_io &aWRITEint ret = 0;
<5 href="fs5direct-io.c#L272" id="L252" cl57s="line" name="L292">="L260"> 260        if (dioock, end_io &aDIO_SKIP_HOLESa>, remaining == 0) {
<5 href="fs5direct-io.c#L273" id="L253" cl57s="line" name="L213">="L261">="L242"> 242            sdioble" cln_compic  242   i_oizets=ad> ==      if (dio de=i> == ret = 0;
<5 href="fs5direct-io.c#L274" id="L254" cl57s="line" name="L264">e" name=ne" name="L213">ne" name="L261"> 261       >it *dioblkb=wsic is_async)
<5 href="fs5direct-io.c#L275" id="L255" cl57s="line" name="L265">>>>>>>>>="L261"> 261       crssef="+code=dio_biocrsseft" cio" class="sref">ret = 0;
<5 href="fs5direct-io.c#L276" id="L256" cl57s="line" name="L266">ne" name="L270"> 270}
<5 href="fs5direct-io.c#L277" id="L257" cl57s="line" name="L247"> 247
<5 href="fs5direct-io.c#L278" id="L258" cl57s="line" name="L288">="L289"> 289, dio_submit *diogpagb_loca>,      if (dio de=i> == bio_los_e iroblka>, transferred,
<5 href="fs5direct-io.c#L279" id="L259" cl57s="line" name="L249">="L261">="L265">>>>>>>>>="L261"> 261       mnt_bh> == bio_lcrssef="+code=dio_biocrsseft" c" e" name="L270"> 270}
<5 href="fs5direct-io.c#L280" id="L250" cl58s="lie" name="L270"> 270}
<5 href="fs5direct-io.c#L281" id="L251" cl58s="line" name="L261"> "L282"> 282        implss="comment*nt">/* cleanup the bio */
<5 href="fs5direct-io.c#L282" id="L252" cl58s="line" name="L292"> 292          & dio>-> 272stmnt_bh> == diob_>->bi_private;
<5 href="fs5direct-io.c#L283" id="L253" cl58s="line" namene" name="L270"> 270}
<5 href="fs5direct-io.c#L284" id="L254" cl58s="line" name="L269"> 269      r/a>, ret = 0;
<5 href="fs5direct-io.c#L285" id="L255" cl58s="line" name="L270"> 270}
<5 href="fs5direct-io.c#L286" id="L256" cl58s="line" name="L296"> 296
<5 href="fs5direct-io.c#L287" id="L257" cl58s="line" name="L227"> 227/*
<5 href="fs5direct-io.c#L288" id="L258" cl58s="line" name="L298"> 298
<5 href="fs5direct-io.c#L289" id="L259" cl58s="line" name="L219"> 219nt">/* cleanup the bio */
<5 href="fs5direct-io.c#L290" id="L250" cl590="line" name="L205"> 205static  272staticnew_dio, dio_bio_complete(struct dio *dioio_submit"(dio_submit *transferred,
<5 href="fs5direct-io.c#L291" id="L251" cl59s="line" name="L261"> 261       meedor_a>, bio_le iro_>eedor>, dio,uffer_head> == dio_submnt_bh> == is_async)
<5 href="fs5direct-io.c#L292" id="L252" cl59s="lief">remaining == 0) {
<5 href="fs5direct-io.c#L293" id="L253" cl59s="line" name 261       meedor_a>, bio_leeedor>, ret = 0;
<5 href="fs5direct-io.c#L294" id="L254" cl59s="line" namee="L272"> 272str/a>, bio_lnrresent>, ret = 0;
<5 href="fs5direct-io.c#L295" id="L255" cl59s="liclass="sref">flags0}
<5 href="fs5direct-io.c#L296" id="L256" cl59s="line" name="L289"> 289,  272st/a>c ints=ap="+code=dio_bio_complets=ap="sre" class="sref">dio *dio_submit * 270}
<5 href="fs5direct-io.c#L297" id="L257" cl59s="line" name="L2="L289"> 289, is_async)
<5 href="fs5direct-io.c#L298" id="L258" cl59s="line" name="L288">gotoo="sref">dio_subou *ret = 0;
<5 href="fs5direct-io.c#L299" id="L259" cl59s="line" name="L289"> 289eedor>,  272st> iro_>eedor>,  242            sdioblkb=wsic  270}
<6 href="fs6direct-io.c#L32k_irq1s/d6200" 600="line" name="L289"> 289,  272stmin="+code=dio_biomin="sre" class="sref">>it *dioesent"in_t *dio_subpletgpagnrrvec/a>, mnt_bh> == diob_bdeva href="+code=bipbdevt" col e" name="L270"> 270}
<6 1ref="fs6direct-io.c#L291" id="L261" cl60s="line" name="L289"> 289,  272stmin="+code=dio_biomin="sre" class="sref">nrresent>, dio_subndl_MAX_PAGESa>,  270}
<6 2ref="fs6direct-io.c#L292" id="L262" cl60s="line" name="sref">dio_subnUG_ON>, nrresent>,  270}
<6 3ref="fs6direct-io.c#L293" id="L263" cl60s="line" name 261       _completalloc;dio *dio_submit *dio_submnt_bh> == diob_bdeva href="+code=bipbdevt" cio="sref">dio_submeedor>, bio_lnrresent>,  270}
<6 4ref="fs6direct-io.c#L294" id="L264" cl60s="line" name42"> 242            sdiobcoudara;ret = 0;
<6 5ref="fs6direct-io.c#L295" id="L265" cl60s="li="sref">dio_subou *ret = 0;
<6 6ref="fs6direct-io.c#L296" id="L266" cl60s="line" name="L269"> 269      r/a>, ret = 0;
<6 7ref="fs6direct-io.c#L297" id="L267" cl607="line" name="L270"> 270}
<6 href="fs6direct-io.c#L208" id="L268" cl60s="line" name="L268"> 268
<6 9ref="fs6direct-io.c#L299" id="L269" cl60s="line" name="L219"> 219/*
<6 href="fs6direct-io.c#L210" id="L260" cl61s="line" name="L220"> 220/*
<6 1ref="fs6direct-io.c#L211" id="L261" cl61s="line" name="L221"> 221  thenwaiosucclasfulmss ntupdt;< final_ble" cln_ple*perasak=ea"rre againstde="comment"> * handler.
<6 2ref="fs6direct-io.c#L212" id="L262" cl61s="line" name="L202"> 202  te juis-added esenpleted by bio completion.
<6 href="fs6direct-io.c#L213" id="L263" cl61s="line" name="L203"> 203leted by bio completion.
<6 4ref="fs6direct-io.c#L214" id="L264" cl61s="line" name="L224"> 224 rineedsito > iroea"new2ndl.leted by bio completion.
<6 5ref="fs6direct-io.c#L215" id="L265" cl61s="line" name="L225"> 225nt">/* cleanup the bio */
<6 href="fs6direct-io.c#L216" id="L266" cl61s="line" name="L205"> 205static  272static intaddge" c"+code=dio_pageatic intaddge" c="sref">dio_bio_complete(ssubmit"(dio_submit *is_async)
<6 7ref="fs6direct-io.c#L217" id="L267" cl61s="line" name="L277"> 277{
<6 href="fs6direct-io.c#L218" id="L268" cl61s="line" namee="L272"> 272str/a>, ret = 0;
<6 9ref="fs6direct-io.c#L219" id="L269" cl61s="line" name="L259"> 259
<6 href="fs6direct-io.c#L220" id="L260" cl620="line" name="L289"> 289,  272st intaddge" c"+code=dio_page intaddge" c="sre42"> 242            sdiobio, dio_submit *sdiofurresen="+code=dio_biocurresen=sdis="sref">transferred,
<6 1ref="fs6direct-io.c#L221" id="L261" cl62s="line" name="L261">="L261"> 261       mit *sdiofurresen_len="+code=dio_biofurresen_lende=bio="sref">dio_submit *sdiofurresen_de=off="+code=dio_biofurresen_de=offt" cl e" name="L270"> 270}
<6 2ref="fs6direct-io.c#L222" id="L262" cl622="line" namee"L260"> 260   r/a>,        mit *sdiofurresen_len="+code=dio_biofurresen_lende=b"ref">remaining == 0) {
<6 href="fs6direct-io.c#L223" id="L263" cl62s="line" name="L213">se" name="L219"> 219/*
<6 href="fs6direct-io.c#L224" id="L264" cl62s="line" name="L224"> 224/*
<6 5ref="fs6direct-io.c#L225" id="L265" cl62s="line" name="L225"> 225/* cleanup the bio */
<6 href="fs6direct-io.c#L226" id="L266" cl62s="line" name="L266">e"L2e42"> 242            sdiofurresen_len="+code=dio_biofurresen_lende=bi+"272"> 272st>it *diofurresen_de=off="+code=dio_biofurresen_de=offt" clioo" 261       PAGE_SIZEint is_async)
<6 href="fs6direct-io.c#L227" id="L267" cl627="line" name="L254">ne" name" class="sref">>it *dioesent"in_t * 270}
<6 href="fs6direct-io.c#L228" id="L268" cl62s="line" name="L288">="L289"> 289 242            sdiofurresen="+code=dio_biocurresen=sdil e" name="L270"> 270}
<6 9ref="fs6direct-io.c#L229" id="L269" cl62s="line" name="L249">42"> 242            sdiofinal_ble" cln_ple      272st>it *diofurresen_b_loca>,  270}
<6 href="fs6direct-io.c#L230" id="L260" cl63s="line" name="L190">="L261">e42"> 242            sdiofurresen_len="+code=dio_biofurresen_lende=bi"sre"sref272"> 272st>it *dioblkb=wsic  270}
<6 1ref="fs6direct-io.c#L231" id="L261" cl63s="line" name="L261"> 261       r/a>, ret = 0;
<6 2ref="fs6direct-io.c#L232" id="L262" cl63s="line" name}eL263ref">remaining == 0) {
<6 href="fs6direct-io.c#L233" id="L263" cl63s="line" name="L213">ss="sref">bio_lr/a>, ret = 0;
<6 href="fs6direct-io.c#L234" id="L264" cl63s="line" namene" name="L270"> 270}
<6 href="fs6direct-io.c#L235" id="L265" cl63s="line" name="L269"> 269      r/a>, ret = 0;
<6 href="fs6direct-io.c#L236" id="L266" cl63s="line" name="L270"> 270}
<6 href="fs6direct-io.c#L237" id="L267" cl637="line" name="L254">e" name="L270"> 270}
<6 href="fs6direct-io.c#L238" id="L268" cl63s="line" name="L298"> 298/*
<6 href="fs6direct-io.c#L239" id="L269" cl63s="line" name="L219"> 219eedmentof furresen which an describ>dlby/*
<6 href="fs6direct-io.c#L240" id="L260" cl64s="line" name="L220"> 220eedmentof furresen/*
<6 1ref="fs6direct-io.c#L241" id="L261" cl64s="line" name="L221"> 221 > iros  h-disk at furresen_b_loc.leted by bio completion.
<6 2ref="fs6direct-io.c#L242" id="L262" cl64s="line" name="L222"> 222de="comment"> * handler.
<6 href="fs6direct-io.c#L243" id="L263" cl64s="line" name="L203"> 203 Weasak=ea"rre againstses loden p ent(entbehalfomme_os presenc tiffset:ple)ass="comment"> * handler.
<6 href="fs6direct-io.c#L244" id="L264" cl64s="line" name="L224"> 224ss="comment"> * handler.
<6 href="fs6direct-io.c#L245" id="L265" cl64s="line" name="L225"> 225 riefnt"an funedmentiioresponsibmpLimplrsmovmmenfurresen fromlss /*
<6 href="fs6direct-io.c#L246" id="L266" cl64s="line" name="L176"> 176 * handler.
<6 href="fs6direct-io.c#L247" id="L267" cl64s="line" name="L297"> 297/* cleanup the bio */
<6 href="fs6direct-io.c#L248" id="L268" cl64s="line" name="L205"> 205static  272staticsend_furresen="+code=dio_bioaticsend_furresen="sref">dio_bio_complete(s *dio *dioio_submit"(dio_submit *transferred,
<6 href="fs6direct-io.c#L249" id="L269" cl64s="line" name="L249">" class="sref">dio,uffer_head> == dio_submnt_bh> == is_async)
<6 href="fs6direct-io.c#L250" id="L260" cl650="lief">remaining == 0) {
<6 href="fs6direct-io.c#L251" id="L261" cl65s="line" namee="L272"> 272str/a>, ret = 0;
<6 href="fs6direct-io.c#L252" id="L262" cl65s="line" name="L252"> 252
<6 href="fs6direct-io.c#L253" id="L263" cl65s="line" name="L242"> 242            sdiobio, remaining == 0) {
<6 href="fs6direct-io.c#L254" id="L264" cl65s="line" name="L264">ass="sref">sdiolde=_a>, sdiofurrde=off="+code=dio_biofurrde=offt" cio"272"> 272st>it *diofurresen_fs_de=off="+code=dio_biofurresen_fs_de=offt" cclass="sref">ret = 0;
<6 href="fs6direct-io.c#L255" id="L265" cl65s="line" name="L265"> 288       lde=_a>, sdiobticnext_de=off="+code=dio_biobticnext_de=offt" cio"272"> 272st>it *diologint"_de=offcln_ple      270}
<6 href="fs6direct-io.c#L256" id="L266" cl65s="line" name="L266">ne" name42"> 242            sdiobio, bioret = 0;
<6 href="fs6direct-io.c#L257" id="L267" cl65s="line" name="L247"> 247
<6 href="fs6direct-io.c#L258" id="L268" cl65s="line" name="L288">=e" name="L298"> 298/*
<6 href="fs6direct-io.c#L259" id="L269" cl65s="line" name="L219"> 219
<6 href="fs6direct-io.c#L260" id="L260" cl66s="line" name="L220"> 220
<6 href="fs6direct-io.c#L261" id="L261" cl66s="line" name="L221"> 221 * handler.
<6 href="fs6direct-io.c#L262" id="L262" cl66s="line" name="L222"> 222/*
<6 href="fs6direct-io.c#L263" id="L263" cl66s="line" name="L203"> 203/*
<6 href="fs6direct-io.c#L264" id="L264" cl66s="line" name="L224"> 224/*
<6 href="fs6direct-io.c#L265" id="L265" cl66s="line" name="L225"> 225/*
<6 href="fs6direct-io.c#L266" id="L266" cl66s="line" name="L226"> 226
<6 href="fs6direct-io.c#L267" id="L267" cl66s="line" name="L227"> 227/*
<6 href="fs6direct-io.c#L268" id="L268" cl66s="line" name="L298"> 298/*
<6 href="fs6direct-io.c#L269" id="L269" cl66s="line" name="L219"> 219/*
<6 href="fs6direct-io.c#L270" id="L260" cl67s="line" name="L220"> 220
<6 href="fs6direct-io.c#L271" id="L261" cl67s="line" name="L221"> 221/* cleanup the bio */
<6 href="fs6direct-io.c#L272" id="L262" cl67s="line" name="L292">="L260"> 260            sdiofinal_ble" cln_ple      272st>it *diofurresen_b_loca>, ="L2ass="sref">sdiofurrde=off="+code=dio_biofurrde=offt" ci!o"272"> 272stbticnext_de=off="+code=dio_biobticnext_de=offt" class="sref">is_async)
<6 href="fs6direct-io.c#L274" id="L264" cl67s="line" name="L264">e" name=272"> 272static intubmit"(dio *dio_submit * 270}
<6 href="fs6direct-io.c#L275" id="L265" cl67s="line" name="L265">=e" name="L298"> 298/*
<6 href="fs6direct-io.c#L276" id="L266" cl67s="line" name="L226"> 226/*
<6 href="fs6direct-io.c#L277" id="L267" cl67s="line" name="L227"> 227/*
<6 href="fs6direct-io.c#L278" id="L268" cl67s="line" name="L298"> 298/* cleanup the bio */
<6 href="fs6direct-io.c#L279" id="L269" cl67s="line" name="L249">L263r="L242"> 242            sdiobcoudara;is_async)
<6 href="fs6direct-io.c#L280" id="L260" cl68s="line" name="L190">="L261"> 261       atic intubmit"(dio *dio_submit * 270}
<6 href="fs6direct-io.c#L281" id="L261" cl68s="line" namene" name="L270"> 270}
<6 href="fs6direct-io.c#L282" id="L262" cl68s="line" name="L252"> 252
<6 href="fs6direct-io.c#L283" id="L263" cl68s="line" name="L242"> 242            sdiobio,        NULL, remaining == 0) {
<6 href="fs6direct-io.c#L284" id="L264" cl68s="line" name="L264">ass="sref">sdior/a>,  272st/a>cnew_dio, dio *dio_submit *dio_submit *sdiofurresen_b_loca>, dio_submnt_bh> ==  270}
<6 href="fs6direct-io.c#L285" id="L265" cl68s="line" name="L265">="L2="L289"> 289, is_async)
<6 href="fs6direct-io.c#L286" id="L266" cl68s="line" name="L266">ne" namegotoo="sref">dio_subou *ret = 0;
<6 href="fs6direct-io.c#L287" id="L267" cl687="line" namene" name="L270"> 270}
<6 href="fs6direct-io.c#L288" id="L268" cl68s="line" name="L268"> 268
<6 href="fs6direct-io.c#L289" id="L269" cl689="line" name="L242"> 242   atic intaddge" c"+code=dio_pageatic intaddge" c="sre="sref">dio_submit *remaining == 0) {
<6 href="fs6direct-io.c#L290" id="L260" cl69s="line" name="L190"> 261       atic intubmit"(dio *dio_submit * 270}
<6 href="fs6direct-io.c#L291" id="L261" cl69s="line" name="L261"> 261       r/a>,  272st/a>cnew_dio, dio *dio_submit *dio_submit *sdiofurresen_b_loca>, dio_submnt_bh> ==  270}
<6 href="fs6direct-io.c#L292" id="L262" cl69s="line" name="L292">="L260"> 260   r/a>, remaining == 0) {
<6 href="fs6direct-io.c#L293" id="L263" cl69s="line" name="L213">="L261"> 261       r/a>,  272st/a>c intaddge" c"+code=dio_pageatic intaddge" c="sre="sref">dio_submit * 270}
<6 href="fs6direct-io.c#L294" id="L264" cl69s="line" name="L264">e" name=272"> 272stnUG_ON>, r/a>,  270}
<6 href="fs6direct-io.c#L295" id="L265" cl69s="line" name="L265">ne" name="L270"> 270}
<6 href="fs6direct-io.c#L296" id="L266" cl69s="line" namene" name="L270"> 270}
<6 href="fs6direct-io.c#L297" id="L267" cl69s="li="sref">dio_subou *ret = 0;
<6 href="fs6direct-io.c#L298" id="L268" cl69s="line" name="L269"> 269      r/a>, ret = 0;
<6 href="fs6direct-io.c#L299" id="L269" cl69s="line" name="L270"> 270}
<7 href="fs7direct-io.c#L32k_irq1s/d7200" 70s="lie" name="L270"> 270}
<7 1ref="fs7direct-io.c#L291" id="L271" cl70s="line" name="L221"> 221/*
<7 2ref="fs7direct-io.c#L292" id="L272" cl70s="line" name="L202"> 202 An autonomoussfunedmenttctputoa2chunkommea esen under deferr>dlIl.leted by bio completion.
<7 3ref="fs7direct-io.c#L293" id="L273" cl70s="line" name="L203"> 203leted by bio completion.
<7 4ref="fs7direct-io.c#L294" id="L274" cl70s="line" name="L224"> 224 ridoeslce patuactut"ly know (mplsare) when hent"an piecChof esen an ieleted by bio completion.
<7 5ref="fs7direct-io.c#L295" id="L275" cl70s="line" name="L225"> 225
<7 6ref="fs7direct-io.c#L296" id="L276" cl70s="line" name="L176"> 176epartdmen betwe ntn haloginommedo_ion./*
<7 7ref="fs7direct-io.c#L297" id="L277" cl70s="line" name="L297"> 297eedmen() an important>implslarity. 
<7 href="fs7direct-io.c#L208" id="L278" cl70s="line" name="L298"> 298leted by bio completion.
<7 9ref="fs7direct-io.c#L299" id="L279" cl70s="line" name="L219"> 219 iros  h-disk at b_locnr.leted by bio completion.
<7 href="fs7direct-io.c#L210" id="L270" cl71s="line" name="L220"> 220
<7 1ref="fs7direct-io.c#L211" id="L271" cl71s="line" name="L221"> 221 Wetperform deferr>dlIl,Lbyp="cordmmenn hae="t-ubmit"ted esen atside ou /*
<7 2ref="fs7direct-io.c#L212" id="L272" cl71s="line" name="L202"> 202 rivate" esrtiefnt">" clasuen. /*
<7 3ref="fs7direct-io.c#L213" id="L273" cl71s="line" name="L203"> 203uacrosslssat pden p en.leted by bio completion.
<7 4ref="fs7direct-io.c#L214" id="L274" cl71s="line" name="L224"> 224leted by bio completion.
<7 5ref="fs7direct-io.c#L215" id="L275" cl71s="line" name="L225"> 225 Iftn at doeslce patuworkomuton hntwe puton haold esen attctn haple*peraaddnt"anleted by bio completion.
<7 6ref="fs7direct-io.c#L216" id="L276" cl71s="line" name="L176"> 176insteadpleted by bio completion.
<7 7ref="fs7direct-io.c#L217" id="L277" cl71s="line" name="L297"> 297/* cleanup the bio */
<7 href="fs7direct-io.c#L218" id="L278" cl71s="line" name="L205"> 205static dio_submbmit"resen_>eedmen/a> *eedmen="sref">dio_bio_complete(s *dio *dioio_submit"(dio_submit *dioe" c"+code=dio_pagee" c="srss="sref">dio_sube" c"+code=dio_pagee" c="srs="sref">transferred,
<7 href="fs7direct-io.c#L220" id="L270" cl72s="line" name="L190">="L2="L280"> ="sref">dio_suboe=off="+code=dio_biode=offt" c,2="L280"> ="sref">dio_sublen="+code=dio_biolende=bio="sref">dio_submeedor_a>, bio_lb_locnr, transferred,
<7 1ref="fs7direct-io.c#L221" id="L271" cl72s="line" name="L261">="L2" class="sref">dio,uffer_head> == dio_submnt_bh> == is_async)
<7 2ref="fs7direct-io.c#L222" id="L272" cl72s="lief">remaining == 0) {
<7 href="fs7direct-io.c#L223" id="L273" cl72s="line" namee="L272"> 272str/a>, ret = 0;
<7 href="fs7direct-io.c#L224" id="L274" cl72s="line" name="L284"> 284
<7 5ref="fs7direct-io.c#L225" id="L275" cl72s="line" name="L260"> 260        if (dio->end_io &aWRITEint remaining == 0) {
<7 href="fs7direct-io.c#L226" id="L276" cl72s="line" name="L266">ne" name="L221"> 221/*
<7 href="fs7direct-io.c#L227" id="L277" cl72s="line" name="L227"> 227 e=eubmit"rple()/*
<7 href="fs7direct-io.c#L228" id="L278" cl72s="line" name="L298"> 298/* cleanup the bio */
<7 9ref="fs7direct-io.c#L229" id="L279" cl72s="line" name="L249">42"> 242   task_intacfcoun_writeint len="+code=dio_biolende=bl e" name="L270"> 270}
<7 href="fs7direct-io.c#L230" id="L270" cl73s="line" namene" name="L270"> 270}
<7 1ref="fs7direct-io.c#L231" id="L271" cl73s="lie" name="L270"> 270}
<7 2ref="fs7direct-io.c#L232" id="L272" cl73s="line" namene" name="L221"> 221/*
<7 href="fs7direct-io.c#L233" id="L273" cl73s="line" name="L203"> 203/*
<7 href="fs7direct-io.c#L234" id="L274" cl73s="line" name="L224"> 224/* cleanup the bio */
<7 href="fs7direct-io.c#L235" id="L275" cl73s="line" name="L260"> 260            sdiofurresen="+code=dio_biocurresen=sdiioo" 261       e" c"+code=dio_pagee" c="srs="sre="sreleanup the bio */
<7 href="fs7direct-io.c#L236" id="L276" cl73s="line" name="L2="sref">dio_submit *sdiofurresen_de=off="+code=dio_biofurresen_de=offt" ci+"272"> 272st>it *diofurresen_len="+code=dio_biofurresen_lende=bioo" 261       oe=off="+code=dio_biode=offt" cs="sre="sreleanup the bio */
<7 href="fs7direct-io.c#L237" id="L277" cl737="line" name="L2="sref">dio_submit *sdiofurresen_b_loca>,  270}
<7 href="fs7direct-io.c#L238" id="L278" cl73s="line" name="L2e42"> 242            sdiofurresen_len="+code=dio_biofurresen_lende=bi"sre"sref272"> 272st>it *dioblkb=wsic        b_locnr, remaining == 0) {
<7 href="fs7direct-io.c#L239" id="L279" cl73s="line" name="L249">42"> 242            sdiofurresen_len="+code=dio_biofurresen_lende=bi+o" 261       len="+code=dio_biolende=beleanup the bio */
<7 href="fs7direct-io.c#L240" id="L270" cl74s="lie" name="L270"> 270}
<7 1ref="fs7direct-io.c#L241" id="L271" cl74s="line" name="L261"> "L282"> 282        t">/* cleanup the bio */
<7 2ref="fs7direct-io.c#L242" id="L272" cl74s="line" name="L222"> 222to >cheduleass aIOnnow tot">/* cleanup the bio */
<7 href="fs7direct-io.c#L243" id="L273" cl74s="line" name="L203"> 203
<7 href="fs7direct-io.c#L244" id="L274" cl74s="line" name="L224"> 224/* cleanup the bio */
<7 href="fs7direct-io.c#L245" id="L275" cl74s="line" name="L265">="L2="L289"> 289sdiobcoudara;remaining == 0) {
<7 href="fs7direct-io.c#L246" id="L276" cl74s="line" name="L266">ne" name42"> 242   r/a>,  272st/a>csend_furresen="+code=dio_bioaticsend_furresen="sre" class="sref">dio *dio_submit *dio_submnt_bh> ==  270}
<7 href="fs7direct-io.c#L247" id="L277" cl747="line" name="L254">ne" name" class="sref">esen_free" rele* C"+code=dio_pagee" c_free" rele* C="sre="sref">dio_submit *sdiofurresen="+code=dio_biocurresen=sdil e" name="L270"> 270}
<7 href="fs7direct-io.c#L248" id="L278" cl74s="line" name="L288">ne" name" class="sref">         sdiofurresen="+code=dio_biocurresen=sdiio" 261       NULL,  270}
<7 href="fs7direct-io.c#L249" id="L279" cl74s="line" name="L249">ne" name="L270"> 270}
<7 href="fs7direct-io.c#L250" id="L270" cl75s="line" name="L190">gotoo="sref">dio_subou *ret = 0;
<7 href="fs7direct-io.c#L251" id="L271" cl75s="line" namene" name="L270"> 270}
<7 href="fs7direct-io.c#L252" id="L272" cl75s="line" name="L252"> 252
<7 href="fs7direct-io.c#L253" id="L273" cl75s="line" name "L282"> 282        t">/* cleanup the bio */
<7 href="fs7direct-io.c#L254" id="L274" cl75s="line" name="L224"> 224dlesen alrradytn ernon hntsend itpleted by bio completion.
<7 href="fs7direct-io.c#L255" id="L275" cl75s="line" name="L225"> 225/* cleanup the bio */
<7 href="fs7direct-io.c#L256" id="L276" cl75s="line" name="L260"> 260            sdiofurresen="+code=dio_biocurresen=sdilref">remaining == 0) {
<7 href="fs7direct-io.c#L257" id="L277" cl757="line" name="L254">42"> 242   r/a>,  272st/a>csend_furresen="+code=dio_bioaticsend_furresen="sre" class="sref">dio *dio_submit *dio_submnt_bh> == = class="sref">esen_free" rele* C"+code=dio_pagee" c_free" rele* C="sre="sref">dio_submit *sdiofurresen="+code=dio_biocurresen=sdil e" name="L270"> 270}
<7 href="fs7direct-io.c#L259" id="L279" cl75s="line" name="L249">42"> 242            sdiofurresen="+code=dio_biocurresen=sdiio" 261       NULL,  270}
<7 href="fs7direct-io.c#L260" id="L270" cl76s="line" name="L190">="L2="L289"> 289, is_async)
<7 href="fs7direct-io.c#L261" id="L271" cl76s="line" name="L261">="L261">gotoo="sref">dio_subou *ret = 0;
<7 href="fs7direct-io.c#L262" id="L272" cl762="line" namene" name="L270"> 270}
<7 href="fs7direct-io.c#L263" id="L273" cl76s="lie" name="L270"> 270}
<7 href="fs7direct-io.c#L264" id="L274" cl76s="line" name42"> 242   esen_free" gff="+code=dio_bioesen_free" gff="sre42"> 242   e" c"+code=dio_pagee" c="sr);ame="L249">4"L282"> 282         It an ieaspo>*nt">/* cleanup the bio */
<7 href="fs7direct-io.c#L265" id="L275" cl765="line" name42"> 242            sdiofurresen="+code=dio_biocurresen=sdiio" 261       e" c"+code=dio_pagee" c="srclass="sref">ret = 0;
<7 href="fs7direct-io.c#L266" id="L276" cl76s="line" name="L289"> 289 *sdiofurresen_de=off="+code=dio_biofurresen_de=offt" cio" 261       oe=off="+code=dio_biode=offt" cclass="sref">ret = 0;
<7 href="fs7direct-io.c#L267" id="L277" cl767="line" name="L289"> 289 *sdiofurresen_len="+code=dio_biofurresen_lende=bio" 261       len="+code=dio_biolende=beleanup the bio */
<7 href="fs7direct-io.c#L268" id="L278" cl768="line" name="L289"> 289 *sdiofurresen_b_loca>,        b_locnr, 
<7 href="fs7direct-io.c#L269" id="L279" cl76s="line" name="L289"> 289it *diofurresen_fs_de=off="+code=dio_biofurresen_fs_de=offt" cio"272"> 272st>it *dioble" cln_fomp,  272st>it *dioblkb=wsic 
<7 href="fs7direct-io.c#L270" id="L270" cl77s="lin"sref">dio_subou *ret = 0;
<7 href="fs7direct-io.c#L271" id="L271" cl77s="line" name="L269"> 269      r/a>, ret = 0;
<7 href="fs7direct-io.c#L272" id="L272" cl77s="line" name="L270"> 270}
<7 href="fs7direct-io.c#L273" id="L273" cl77s="lie" name="L270"> 270}
<7 href="fs7direct-io.c#L274" id="L274" cl77s="line" name="L224"> 224/* cleanup the bio */
<7 href="fs7direct-io.c#L275" id="L275" cl77s="line" name="L225"> 225 Cle*n anyasprty ,ufferstiffset:b_locdev mntpmmenwhich alian newly-crrated/*
<7 href="fs7direct-io.c#L276" id="L276" cl77s="line" name="L226"> 226 raimplS_ISREG:fomps -:b_locdevs doinotpofft"pan class="comment">/*
<7 href="fs7direct-io.c#L277" id="L277" cl77s="line" name="L227"> 227/*
<7 href="fs7direct-io.c#L278" id="L278" cl77s="line" name="L298"> 298/* cleanup the bio */
<7 href="fs7direct-io.c#L279" id="L279" cl77s="line" namvoid lass="sref">diofle*n_b_locdev_aliannt>, dio_bio_complete(s *dio *dio,uffer_head> == dio_submnt_bh> == is_async)
<7 href="fs7direct-io.c#L280" id="L270" cl780="lief">remaining == 0) {
<7 href="fs7direct-io.c#L281" id="L271" cl78s="line" name="L280"> ="sref">dio_subi> == ret = 0;
<7 href="fs7direct-io.c#L282" id="L272" cl782="line" name="L280"> ="sref">dio_subnb_locs> == ret = 0;
<7 href="fs7direct-io.c#L283" id="L273" cl78s="lie" name="L270"> 270}
<7 href="fs7direct-io.c#L284" id="L274" cl78s="line" name42"> 242   nb_locs> ==  272stmnt_bh> == diob_nizeint  272st     if (dioin>di> == dioi_blkb=wsic ret = 0;
<7 href="fs7direct-io.c#L285" id="L275" cl78s="lilass="sref">ret = 0;
<7 href="fs7direct-io.c#L286" id="L276" cl78s="line" nameimple42"> 242   i> == dio_subi> ==  272stnb_locs> == dio_subi> == remaining == 0) {
<7 href="fs7direct-io.c#L287" id="L277" cl787="line" name="L254">42"> 242   unmnt_underlymme_metadata> ==  242   mnt_bh> == diob_bdeva href="+code=bipbdevt" cif">remaining == 0) {
<7 href="fs7direct-io.c#L288" id="L278" cl78s="line" name="L288">ne" nameeeeeeeeeeeeeeeeeee42"> 242   mnt_bh> == diob_b_locnr,  272sti> ==  270}
<7 href="fs7direct-io.c#L289" id="L279" cl789="line" namene" name="L270"> 270}
<7 href="fs7direct-io.c#L290" id="L270" cl79s="line" name="L270"> 270}
<7 href="fs7direct-io.c#L291" id="L271" cl79s="lie" name="L270"> 270}
<7 href="fs7direct-io.c#L292" id="L272" cl79s="line" name="L222"> 222/* cleanup the bio */
<7 href="fs7direct-io.c#L293" id="L273" cl79s="line" name="L203"> 203uI"Lw lmentnotpwritmmenn ha203 */:b_loc*peraget_+_loc() allocated/*
<7 href="fs7direct-io.c#L294" id="L274" cl79s="line" name="L224"> 224to foml-iffset:unus>dleortmentof ss /*
<7 href="fs7direct-io.c#L295" id="L275" cl79s="line" name="L225"> 225 b_locewithnzeros. T"an hntpens  nly>="Lus>r-,uffer,:fompde=offto /*
<7 href="fs7direct-io.c#L296" id="L276" cl79s="line" name="L226"> 226
<7 href="fs7direct-io.c#L297" id="L277" cl79s="line" name="L227"> 227
<7 href="fs7direct-io.c#L298" id="L278" cl79s="line" name="L298"> 298 iroeefnt">/*
<7 href="fs7direct-io.c#L299" id="L279" cl79s="line" name="L219"> 219
<8 href="fs8direct-io.c#L32k_irq1s/d8200" 80s="line" name="L220"> 220/* cleanup the bio */
<8 1ref="fs8direct-io.c#L291" id="L281" cl80s="line" name="L205"> 205static dioaticzero_b_loca>, dio_bio_complete(s *dio *dioio_submit"(dio_submit *=="L272"> 272st20d/a> *dio,uffer_head> == dio_submnt_bh> == is_async)
<8 3ref="fs8direct-io.c#L293" id="L283" cl80s="lief">remaining == 0) {
<8 4ref="fs8direct-io.c#L294" id="L284" cl80s="line" name="L280"> ="sref">dio_subatic _locs_per_fs_b_loca>, ret = 0;
<8 5ref="fs8direct-io.c#L295" id="L285" cl805="line" name="L280"> ="sref">dio_subt"an_nhunk_b_locs> ==  282         Ieaspo_b_locsa*nt">/* cleanup the bio */
<8 6ref="fs8direct-io.c#L296" id="L286" cl806="line" name="L280"> ="sref">dio_subt"an_nhunk_bytnt>, ret = 0;
<8 7ref="fs8direct-io.c#L297" id="L287" cl807="line" name" class="sref">dioe" c"+code=dio_pagee" c="srss="sref">dio_sube" c"+code=dio_pagee" c="srclass="sref">ret = 0;
<8 8ref="fs8direct-io.c#L298" id="L288" cl80s="line" name="L268"> 268
<8 9ref="fs8direct-io.c#L299" id="L289" cl80s="line" name="L289"> 289it *dio> iroczero_dcla/a> *ret = 0;
<8 href="fs8direct-io.c#L210" id="L280" cl81s="line" name="L2!272"> 272st>it *dioblkfaedoric  272st,uffercnew> ==  242   mnt_bh> == is_async)
<8 1ref="fs8direct-io.c#L211" id="L281" cl81s="line" name="L261">="L269class="sref">ret = 0;
<8 2ref="fs8direct-io.c#L212" id="L282" cl81s="line" name="L252"> 252
<8 3ref="fs8direct-io.c#L213" id="L283" cl813="line" name="L289"> 289,  272st>it *dioblkfaedoric ret = 0;
<8 4ref="fs8direct-io.c#L214" id="L284" cl81s="line" name42"> 242   t"an_nhunk_b_locs> ==  272st>it *dioble" cln_fomp,  242   atic _locs_per_fs_b_loca>,  270}
<8 5ref="fs8direct-io.c#L215" id="L285" cl81s="lilass="sref">ret = 0;
<8 6ref="fs8direct-io.c#L216" id="L286" cl81s="line" name="L2!272"> 272stt"an_nhunk_b_locs> == is_async)
<8 7ref="fs8direct-io.c#L217" id="L287" cl817="line" name="L254">="L269class="sref">ret = 0;
<8 8ref="fs8direct-io.c#L218" id="L288" cl81s="line" name="L268"> 268
<8 9ref="fs8direct-io.c#L219" id="L289" cl81s="line" name=e" name="L222"> 222/* cleanup the bio */
<8 href="fs8direct-io.c#L220" id="L280" cl82s="line" name="L220"> 220 Wetneed>to zeronmutoesrtiefn nafs b_loc. /*
<8 1ref="fs8direct-io.c#L221" id="L281" cl82s="line" name="L221"> 221/*
<8 2ref="fs8direct-io.c#L222" id="L282" cl82s="line" name="L222"> 222/* cleanup the bio */
<8 href="fs8direct-io.c#L223" id="L283" cl82s="line" name="L242"> 242   20d/a> * 270}
<8 href="fs8direct-io.c#L224" id="L284" cl82s="line" name="L264">ass="sref">sdiot"an_nhunk_b_locs> ==  272static _locs_per_fs_b_loca>, dio_subt"an_nhunk_b_locs> ==  270}
<8 5ref="fs8direct-io.c#L225" id="L285" cl82s="lilass="sref">ret = 0;
<8 href="fs8direct-io.c#L226" id="L286" cl82s="line" name="L289"> 289,  272stt"an_nhunk_b_locs> ==  272st>it *dioblkb=wsic 
<8 href="fs8direct-io.c#L227" id="L287" cl82s="line" name="L247"> 247
<8 href="fs8direct-io.c#L228" id="L288" cl828="line" name="L289"> 289 272stZERO_PAGE"+code=dio_pageZERO_PAGEt"sre l e" name="L270"> 270}
<8 9ref="fs8direct-io.c#L229" id="L289" cl829="line" name="L242"> 242   mbmit"resen_>eedmen/a> *eedmen="sre" class="sref">dio *dio_submit * 289 289, 
<8 href="fs8direct-io.c#L230" id="L280" cl83s="line" name="L190">="L261">ne" name="L289"> 289it *dionext_+_loccfor_t * 289 == is_async)
<8 1ref="fs8direct-io.c#L231" id="L281" cl83s="line" name="L261">="L269class="sref">ret = 0;
<8 2ref="fs8direct-io.c#L232" id="L282" cl83s="line" name="L252"> 252
<8 href="fs8direct-io.c#L233" id="L283" cl833="line" name="L289"> 289it *dionext_+_loccfor_t *       t"an_nhunk_b_locs> ==  270}
<8 href="fs8direct-io.c#L234" id="L284" cl83s="line" name="L270"> 270}
<8 href="fs8direct-io.c#L235" id="L285" cl83s="lilass="sref">ret = 0;
<8 href="fs8direct-io.c#L236" id="L286" cl83s="line" name="L226"> 226/* cleanup the bio */
<8 href="fs8direct-io.c#L237" id="L287" cl83s="line" name="L227"> 227/* cleanup the bio */
<8 href="fs8direct-io.c#L238" id="L288" cl83s="line" name="L298"> 298/*
<8 href="fs8direct-io.c#L239" id="L289" cl83s="line" name="L219"> 219eedmen(),nwhich sak=sesareommet">/*
<8 href="fs8direct-io.c#L240" id="L280" cl84s="line" name="L220"> 220
<8 1ref="fs8direct-io.c#L241" id="L281" cl84s="line" name="L221"> 221 Don./*
<8 2ref="fs8direct-io.c#L242" id="L282" cl84s="line" name="L222"> 222 IOs. n at="pan class="comment">/*
<8 href="fs8direct-io.c#L243" id="L283" cl84s="line" name="L203"> 203izespleted by bio completion.
<8 href="fs8direct-io.c#L244" id="L284" cl84s="line" name="L224"> 224
<8 href="fs8direct-io.c#L245" id="L285" cl84s="line" name="L225"> 225 SoLwthenwntdc an tctperit"nt"t:io" cget_+_locsfunedmenttctpopulte" bh.b_nizet"ted by bio completion.
<8 href="fs8direct-io.c#L246" id="L286" cl84s="line" name="L226"> 226
<8 href="fs8direct-io.c#L247" id="L287" cl84s="line" name="L227"> 227
<8 href="fs8direct-io.c#L248" id="L288" cl84s="line" name="L298"> 298 tresults,*set:b_locdev shouldnbn offtup:withn512-bytn i_blkb=ws and/*
<8 href="fs8direct-io.c#L249" id="L289" cl84s="line" name="L219"> 219
<8 href="fs8direct-io.c#L250" id="L280" cl85s="line" name="L220"> 220
<8 href="fs8direct-io.c#L251" id="L281" cl85s="line" name="L221"> 221nt">/* cleanup the bio */
<8 href="fs8direct-io.c#L252" id="L282" cl85s="line" nam=="L272"> 272stdo_ion. *dio_bio_complete(s *dio *dioio_submit"(dio_submit *dio,uffer_head> == dio_submnt_bh> == is_async)
<8 href="fs8direct-io.c#L254" id="L284" cl85s="lief">remaining == 0) {
<8 href="fs8direct-io.c#L255" id="L285" cl855="line" nameconst ="L280"> ="sref">dio_subblkb=wsic  272st>it *dioblkb=wsic 
<8 href="fs8direct-io.c#L256" id="L286" cl85s="line" nameconst ="L280"> ="sref">dio_subbllocs_per_e" c"+code=dio_pagebllocs_per_e" ct" cio"272"> 272stPAGE_SIZE"+code=dio_pagePAGE_SIZEt" ci"sre"sref272"> 272stblkb=wsic 
<8 href="fs8direct-io.c#L257" id="L287" cl857="line" name" class="sref">dioe" c"+code=dio_pagee" c="srss="sref">dio_sube" c"+code=dio_pagee" c="srclass="sref">ret = 0;
<8 href="fs8direct-io.c#L258" id="L288" cl85s="line" name="L280"> ="sref">dio_subblloccln_e" c"+code=dio_pageblloccln_e" c="srclass="sref">ret = 0;
<8 href="fs8direct-io.c#L259" id="L289" cl85s="line" namee="L272"> 272str/a>, ret = 0;
<8 href="fs8direct-io.c#L260" id="L280" cl86s="lie" name="L270"> 270}
<8 href="fs8direct-io.c#L261" id="L281" cl86s="line" name4"L282"> 282         T haI/Olcana> iroeat anya+_locsde=offtwithiffset:first pden >nt">/* cleanup the bio */
<8 href="fs8direct-io.c#L262" id="L282" cl862="line" name="sref">dio_subblloccln_e" c"+code=dio_pageblloccln_e" c="srio"272"> 272st>it *diofirst_blloccln_e" c"+code=dio_pagefirst_blloccln_e" c="srclass="sref">ret = 0;
<8 href="fs8direct-io.c#L263" id="L283" cl86s="lie" name="L270"> 270}
<8 href="fs8direct-io.c#L264" id="L284" cl86s="line" namewhimpL2="L289"> 289sdioble" cln_fomp,  272st>it *diofinal_blloccln_requesa>, remaining == 0) {
<8 href="fs8direct-io.c#L265" id="L285" cl865="line" namene" name="sref">dio_sube" c"+code=dio_pagee" c="srso"272"> 272sttic get_esen="+code=dio_bioaticget_esen="sre" class="sref">dio *dio_submit * 270}
<8 href="fs8direct-io.c#L266" id="L286" cl86s="line" name="L266">="L242"> 242   IS_ERR/a> *e" c"+code=dio_pagee" c="sr))>ef">remaining == 0) {
<8 href="fs8direct-io.c#L267" id="L287" cl867="line" name="L254">ne" name" class="sref">r/a>,  272stPTR_ERR/a> *e" c"+code=dio_pagee" c="sr) e" name="L270"> 270}
<8 href="fs8direct-io.c#L268" id="L288" cl86s="line" name="L288">ne" namegotoo="sref">dio_subou *ret = 0;
<8 href="fs8direct-io.c#L269" id="L289" cl86s="line" name="L249">ne" name="L270"> 270}
<8 href="fs8direct-io.c#L270" id="L280" cl87s="lie" name="L270"> 270}
<8 href="fs8direct-io.c#L271" id="L281" cl87s="line" name="L261">whimpL2="L289"> 289 272stbllocs_per_e" c"+code=dio_pagebllocs_per_e" ct" c)>ef">remaining == 0) {
<8 href="fs8direct-io.c#L272" id="L282" cl87s="line" name="L292">>>>>>>>>="L280"> ="sref">dio_suboe=offcln_e" c"+code=dio_pageoe=offcln_e" ct" cio"272"> 272stblloccln_e" c"+code=dio_pageblloccln_e" c="sri"ltc"ltc"272"> 272stblkb=wsic 
<8 href="fs8direct-io.c#L273" id="L283" cl87s="line" nameeeeeeeeeeeeeeeee="L280"> ="sref">dio_subt"an_nhunk_bytnt>,  282         # mmebytnt mntp"> >nt">/* cleanup the bio */
<8 href="fs8direct-io.c#L274" id="L284" cl87s="line" name="L264">e" name=="L280"> ="sref">dio_subt"an_nhunk_b_locs> ==  282         # mmeb_locsa*nt">/* cleanup the bio */
<8 href="fs8direct-io.c#L275" id="L285" cl875="line" namene" namee" name=="L280"> ="sref">dio_subu> == 
<8 href="fs8direct-io.c#L276" id="L286" cl87s="lileanup the bio */
<8 href="fs8direct-io.c#L277" id="L287" cl877="line" name="L254">ne" name="L2="L289"> 289sdiobllocs_availabmp"+code=dio_pagebllocs_availabmpt" cioo" lref">remaining == 0) {
<8 href="fs8direct-io.c#L278" id="L288" cl87s="line" name="L288">ne" nameeeeeeeeene" name="L226"> 226/* cleanup the bio */
<8 href="fs8direct-io.c#L279" id="L289" cl87s="line" name="L219"> 219to ge*peramnt some morn diskt">/* cleanup the bio */
<8 href="fs8direct-io.c#L280" id="L280" cl88s="line" name="L220"> 220/* cleanup the bio */
<8 href="fs8direct-io.c#L281" id="L281" cl88s="line" name="L261">="L261">>>>>>>>>="L280"> long"272"> 272stblkmasca>, 
<8 href="fs8direct-io.c#L282" id="L282" cl88s="line" name="L292">>>>>>>>>>>>>>>>>="L280"> long"272"> 272staticremainder="+code=dio_bioaticremaindert" celeanup the bio */
<8 href="fs8direct-io.c#L283" id="L283" cl88s="lie" name="L270"> 270}
<8 href="fs8direct-io.c#L284" id="L284" cl88s="line" name="L264">e" name=========" class="sref">r/a>,  272stget_morn_b_locs> == dio *dio_submit * 289 ==  289, remaining == 0) {
<8 href="fs8direct-io.c#L286" id="L286" cl88s="line" name="L266">ne" namee" name=========" class="sref">esen_free" rele* C"+code=dio_pagee" c_free" rele* C="sre="sref">dio_sube" c"+code=dio_pagee" c="sr) e" name="L270"> 270}
<8 href="fs8direct-io.c#L287" id="L287" cl887="line" name="L254">>>>>>>>>>>>>>>>>>>>>>>>>gotoo="sref">dio_subou *ret = 0;
<8 href="fs8direct-io.c#L288" id="L288" cl88s="line" name="L288">ne" nameeeeeeeeene" name="L270"> 270}
<8 href="fs8direct-io.c#L289" id="L289" cl88s="line" name="L249">>>>>>>>>>>>>>>>>="L2!272"> 272st,uffer_mntp">> == ="sre="sref">dio_submnt_bh> == is_async)
<8 href="fs8direct-io.c#L290" id="L280" cl89s="line" name="L190">="L261">ne" name>>>>>>>>gotoo="sref">dio_subdo_holnt>, ret = 0;
<8 href="fs8direct-io.c#L291" id="L281" cl89s="lie" name="L270"> 270}
<8 href="fs8direct-io.c#L292" id="L282" cl89s="line" name="L292">>>>>>>>>>>>>>>>>="L289"> 289sdiobllocs_availabmp"+code=dio_pagebllocs_availabmpt" cioe" name="L270"> 270}
<8 href="fs8direct-io.c#L293" id="L283" cl89s="line" nameeeeeeeeeeeeeeeee="L292">>>>>>>>>>>>>>>>>="L289"> 289 == diob_nizeint  272st>it *dioblkb=wsic 
<8 href="fs8direct-io.c#L294" id="L284" cl89s="line" name="L264">e" name=========" class="sref">>it *dionext_+_loccfor_t * 270}
<8 href="fs8direct-io.c#L295" id="L285" cl895="line" namene" namee" name=========>>>>>>>>="L289"> 289 == diob_b_locnr,  272st>it *dioblkfaedoric ret = 0;
<8 href="fs8direct-io.c#L296" id="L28="lin89maining == 0) {
<8 href="fs8direc========="L2="L289",uffercnew> ==  242   mnt_bh> == is_async)
<8 href="fs8direct-io.c#L297" id="L287" cl897="line" name="L254">>>>>>>>>>>>>>>>>>>>>>>>>42"> 242   fle*n_b_locdev_aliannt>, dio *dio_submnt_bh> ==  268
<8 href="fs8direct-io.c#L299" id="L289" cl89s="line" name="L249">>>>>>>>>>>>>>>>>="L2!272"> 272st>it *dioblkfaedoric is_async)
<9 href="fs9direct-io.c#L32k_irq1s/d9200" 90s="line" name="L190">="L261">ne" name>>>>>>>>gotoo="sref">dio_subdo_holnt>, ret = 0;
<9 1ref="fs9direct-io.c#L291" id="L291" cl90s="lie" name="L270"> 270}
<9 2ref="fs9direct-io.c#L292" id="L292" cl90s="line" name="L292">>>>>>>>>>>>>>>>>42"> 242   blkmasca>,  272st>it *dioblkfaedoric ret = 0;
<9 3ref="fs9direct-io.c#L293" id="L293" cl90s="line" nameeeeeeeeeeeeeeeee="L292">272"> 272staticremainder="+code=dio_bioaticremaindert" cio"(="L289"> 289sdioble" cln_fomp, end_io &ablkmasca>,  284
<9 5ref="fs9direct-io.c#L295" id="L295" cl905="line" namene" namee" name=========ne" name="L226"> 226/* cleanup the bio */
<9 6ref="fs9direct-io.c#L296" id="L296" cl90s="line" name="L226"> 226uI"Lw lmentat n ha> iroeefnIOnaerasea/aIOt">/* cleanup the bio */
<9 7ref="fs9direct-io.c#L297" id="L297" cl90s="line" name="L227"> 227u> irosoesrtway/* cleanup the bio */
<9 8ref="fs9direct-io.c#L298" id="L298" cl90s="line" name="L298"> 298uaticremainder will bntnon-zero. /* cleanup the bio */
<9 9ref="fs9direct-io.c#L299" id="L299" cl90s="line" name="L219"> 219imply advanc tt">/* cleanup the bio */
<9 href="fs9direct-io.c#L210" id="L290" cl91s="line" name="L220"> 220
<9 1ref="fs9direct-io.c#L211" id="L291" cl91s="line" name="L221"> 221="Lss aIOnis a write*perasett"ted by bio completion.
<9 2ref="fs9direct-io.c#L212" id="L292" cl91s="line" name="L222"> 222
<9 3ref="fs9direct-io.c#L213" id="L293" cl91s="line" name="L203"> 203 iroeefnt">
<9 4ref="fs9direct-io.c#L214" id="L294" cl91s="line" name="L224"> 224/* cleanup the bio */
<9 5ref="fs9direct-io.c#L215" id="L295" cl91s="line" name="L225"> 225/* cleanup the bio */
<9 6ref="fs9direct-io.c#L216" id="L296" cl91maining == 0) {
<8 href="fs8direc====!272"> 272st,uffercnew> ==  242   mnt_bh> == is_async)
<9 7ref="fs9direct-io.c#L217" id="L297" cl917="line" name="L254">>>>>>>>>>>>>>>>>>>>>>>>>" class="sref">>it *dionext_+_loccfor_t *       aticremainder="+code=dio_bioaticremaindert" celeanup the bio */
<9 8ref="fs9direct-io.c#L218" id="L298" cl91s="line" name="L288">ne" nameeeeeeeeen"L289"> 289sdiobllocs_availabmp"+code=dio_pagebllocs_availabmpt" ci-o" 261       aticremainder="+code=dio_bioaticremaindert" celeanup the bio */
<9 9ref="fs9direct-io.c#L219" id="L299" cl91s="line" name="L249">>>>>>>>>ne" name="L270"> 270}
<9 href="fs9direct-io.c#L220" id="L290" cl92s="lin"sref">dio_subdo_holnt>, ret = 0;
<9 1ref="fs9direct-io.c#L221" id="L291" cl92s="line" name="L261">="L261">4"L282"> 282         Hperle holnta*nt">/* cleanup the bio */
<9 2ref="fs9direct-io.c#L222" id="L292" cl92s="line" name="L292">>>>>>>>>="L2!272"> 272st,uffer_mntp">> == ="sre="sref">dio_submnt_bh> == remaining == 0) {
<9 href="fs9direct-io.c#L223" id="L293" cl92s="line" nameeeeeeeeeeeeeeeee="L292">272"> 272stloff_ * 272sti_nize_ali80">*t" celeanup the bio */
<9 href="fs9direct-io.c#L224" id="L294" cl92s="line" name="L284"> 284
<9 5ref="fs9direct-io.c#L225" id="L295" cl925="line" namene" namee" name=========ne" name="L226"> 226/* cleanup the bio */
<9 6ref="fs9direct-io.c#L226" id="L296" cl92maining == 0) {
<8 href="fs8direc========="L2="L289"     if (diorw> == end_io &aWRITE"+code=dio_pageWRITEt" clref">remaining == 0) {
<9 href="fs9direct-io.c#L227" id="L297" cl927="line" name="L254">>>>>>>>>>>>>>>>>>>>>>>>>" class="sref">esen_free" rele* C"+code=dio_pagee" c_free" rele* C="sre="sref">dio_sube" c"+code=dio_pagee" c="sr) e" name="L270"> 270}
<9 href="fs9direct-io.c#L228" id="L298" cl92s="line" name="L288">ne" nameeeeeeeeeeeeeeeee="L269"-="sref">dio_subENOTBLK"+code=dio_pageENOTBLKt" celeanup the bio */
<9 9ref="fs9direct-io.c#L229" id="L299" cl92s="line" name="L249">>>>>>>>>>>>>>>>>ne" name="L270"> 270}
<9 href="fs9direct-io.c#L230" id="L290" cl93s="lie" name="L270"> 270}
<9 1ref="fs9direct-io.c#L231" id="L291" cl93s="line" name="L261">>>>>>>>>>>>>>>>>"e" name="L226"> 226/* cleanup the bio */
<9 2ref="fs9direct-io.c#L232" id="L292" cl93s="line" name="L222"> 222urettctaccount2for aoesrtial:b_loc*psasett"ted by bio completion.
<9 href="fs9direct-io.c#L233" id="L293" cl93s="line" name="L203"> 203
<9 href="fs9direct-io.c#L234" id="L294" cl93s="line" name="L224"> 224/* cleanup the bio */
<9 href="fs9direct-io.c#L235" id="L295" cl935="line" namene" namee" name=========n72"> 272sti_nize_ali80">*t" cio"272"> 272stALIGN*dio_subi_nize_read> == dio *dioin>di> == ne" namee" name=========================1i"ltc<cL272"> 272stblkb=wsic  270}
<9 href="fs9direct-io.c#L237" id="L297" cl937="line" name="L254">>>>>>>>>>>>>>>>>="L2="L289"> 289sdioblloccln_fomp,  270}
<9 href="fs9direct-io.c#L238" id="L298" cl93s="line" name="L288">ne" nameeeeeeeeeeeeeeeeeeeeeeeeen72"> 272sti_nize_ali80">*t" ci"sre"sref272"> 272stblkb=wsic remaining == 0) {
<9 href="fs9direct-io.c#L239" id="L299" cl93s="line" name="L249">>>>>>>>>>>>>>>>>eeeeeeeene" name="L226"> 226/* cleanup the bio */
<9 href="fs9direct-io.c#L240" id="L290" cl94s="line" name="L190">="L261">ne" name>>>>>>>>" class="sref">esen_free" rele* C"+code=dio_pagee" c_free" rele* C="sre="sref">dio_sube" c"+code=dio_pagee" c="sr) e" name="L270"> 270}
<9 1ref="fs9direct-io.c#L241" id="L291" cl94s="line" name="L261">>>>>>>>>>>>>>>>>>>>>>>>>gotoo="sref">dio_subou *ret = 0;
<9 2ref="fs9direct-io.c#L242" id="L292" cl94s="line" name="L292">>>>>>>>>>>>>>>>>ne" name="L270"> 270}
<9 href="fs9direct-io.c#L243" id="L293" cl94s="line" nameeeeeeeeeeeeeeeee="L292">272"> 272stzero_ushe*dio_sube" c"+code=dio_pagee" c="srio="sref">dio_subblloccln_e" c"+code=dio_pageblloccln_e" c="sri"ltc"ltc"272"> 272stblkb=wsic 
<9 href="fs9direct-io.c#L244" id="L294" cl94s="line" name="L264">e" name=========================1i"ltc<cL272"> 272stblkb=wsic  270}
<9 href="fs9direct-io.c#L245" id="L295" cl945="line" namene" namee" name=========n72"> 272st         sdioblloccln_fomp,  270}
<9 href="fs9direct-io.c#L246" id="L296" cl94s="line" name="L266">ne" namee" name=="sref">dio_subblloccln_e" c"+code=dio_pageblloccln_e" c="sr++ e" name="L270"> 270}
<9 href="fs9direct-io.c#L247" id="L297" cl947="line" name="L254">>>>>>>>>>>>>>>>>gotoo="sref">dio_subnext_+_loc/a> *ret = 0;
<9 href="fs9direct-io.c#L248" id="L298" cl94s="line" name="L288">ne" namene" name="L270"> 270}
<9 href="fs9direct-io.c#L249" id="L299" cl94s="lie" name="L270"> 270}
<9 href="fs9direct-io.c#L250" id="L290" cl95s="line" name="L190">="L261">"e" name="L226"> 226/* cleanup the bio */
<9 href="fs9direct-io.c#L251" id="L291" cl95s="line" name="L221"> 221uI"Lw ce paentperformmmenIOnwhich has an ali80 203 whicht">/* cleanup the bio */
<9 2ref="fs9direct-io.c#L252" id="L292" cl95s="line" name="L222"> 222="t">/* cleanup the bio */
<9 href="fs9direct-io.c#L253" id="L293" cl95s="line" name="L203"> 203 iroeefnt"is b_loc./*
<9 href="fs9direct-io.c#L254" id="L294" cl95s="line" name="L224"> 224/* cleanup the bio */
<9 href="fs9direct-io.c#L255" id="L295" cl955="line" namene" namee" name=="L2="L289"> 289 *dio_sub>it *dioblkfaedoric  272st>it *dio> iroczero_dcla/a> *is_async)
<9 href="fs9direct-io.c#L256" id="L296" cl95s="line" name="L266">ne" namee" name=="sref">dio_subaticzero_b_loca>, dio *dio_submit * 289 ==  247
<9 href="fs9direct-io.c#L258" id="L298" cl95s="line" name="L288">ne" name"e" name="L226"> 226/* cleanup the bio */
<9 href="fs9direct-io.c#L259" id="L299" cl95s="line" name="L219"> 219
<9 href="fs9direct-io.c#L260" id="L290" cl96s="line" name="L220"> 220 221nt">/* cleanup the bio */
<9 href="fs9direct-io.c#L262" id="L292" cl96s="line" name="L292">>>>>>>>>="L289"> 289 ==  272st>it *dioble" s_availabmp"+code=dio_pagebllocs_availabmpt" c e" name="L27 == 0) {
<9 href="fs9direct-io.c#L263" id="L293" cl96s="line" nameeeeeeeeeeeeeeeee="L289"> 289 * 289dio_suboe=offcln_e" c"+code=dio_pageoe=offcln_e" ct" c)i"sre"sref272"> 272stblkb=wsic 
<9 href="fs9direct-io.c#L264" id="L294" cl96s="line" name="L264">e" name=="L2="L289"> 289 ==  272stu/a> *is_async)
<9 href="fs9direct-io.c#L265" id="L295" cl965="line" namene" name="L292">>>>>>>>>="L289"> 289 ==  272stu/a> *
<9 href="fs9direct-io.c#L266" id="L296" cl96s="line" name="L266">eeeeeeee="L289"> 289 * 272st>it *diofinal_blloccln_requesa>, dio_sub         sdioblloccln_fomp, ne" name="L2="L289"> 289 ==  272stu/a> *is_async)
<9 href="fs9direct-io.c#L268" id="L298" cl96s="line" name="L288">ne" name>>>>>>>>="L289"> 289 ==  272stu/a> *
<9 href="fs9direct-io.c#L269" id="L299" cl96s="line" name="L249">>>>>>>>>="L289"> 289,  272stt"an_nhunk_b_locs> ==  272stblkb=wsic 
<9 href="fs9direct-io.c#L270" id="L290" cl97s="line" name="L190">="L261">"72"> 272stBUG_ON*t"an_nhunk_bytnt>, 
<9 href="fs9direct-io.c#L271" id="L291" cl97s="lie" name="L270"> 270}
<9 href="fs9direct-io.c#L272" id="L292" cl97s="line" name="L292">>>>>>>>>="sref">dio_sub         sdioboundary/a> * 272st,uffer_boundary/a> *dio_submnt_bh> == dior/a>,  272stmbmit"resen_>eedmen/a> *eedmen="sre" class="sref">dio *dio_submit * 289e" name============================"sref">dio_suboe=offcln_e" c"+code=dio_pageoe=offcln_e" ct" c,leanup the bio */
<9 href="fs9direct-io.c#L275" id="L295" cl975="line" namene" namee" name============================"sref">dio_subt"an_nhunk_bytnt>, 
<9 href="fs9direct-io.c#L276" id="L296" cl97s="line" name="L266">ne" namee" name===================="sref">dio_sub         sdionext_+_loccfor_t *ne" namee" name===================="sref">dio_submnt_bh> == ne" name="L2="L289"> 289, remaining == 0) {
<9 href="fs9direct-io.c#L279" id="L299" cl97s="line" name="L249">>>>>>>>>>>>>>>>>" class="sref">esen_free" rele* C"+code=dio_pagee" c_free" rele* C="sre="sref">dio_sube" c"+code=dio_pagee" c="sr) e" name="L270"> 270}
<9 href="fs9direct-io.c#L280" id="L290" cl98s="line" name="L190">="L261">ne" namegotoo="sref">dio_subou *ret = 0;
<9 href="fs9direct-io.c#L281" id="L291" cl98s="line" name="L261">="L261">ne" name="L270"> 270}
<9 href="fs9direct-io.c#L282" id="L292" cl98s="line" name="L292">>>>>>>>>="sref">dio_sub         sdionext_+_loccfor_t *       t"an_nhunk_b_locs> ==  270}
<9 href="fs9direct-io.c#L283" id="L293" cl98s="lie" name="L270"> 270}
<9 href="fs9direct-io.c#L284" id="L294" cl98s="line" name="L264">e" name=="L289"> 289sdioblloccln_fomp,        t"an_nhunk_b_locs> ==  270}
<9 href="fs9direct-io.c#L285" id="L295" cl985="line" namene" namee" name=="sref">dio_subblloccln_e" c"+code=dio_pageblloccln_e" c="sri+o" 261       t"an_nhunk_b_locs> ==  270}
<9 href="fs9direct-io.c#L286" id="L296" cl98s="line" name="L266">ne" name272"> 272st>it *dioble" s_availabmp"+code=dio_pagebllocs_availabmpt" ci-o" 261       t"an_nhunk_b_locs> ==  270}
<9 href="fs9direct-io.c#L287" id="L297" cl987="li="sref">dio_subnext_+_loc/a> *ret = 0;
<9 href="fs9direct-io.c#L288" id="L298" cl98s="line" name="L288">ne" name"72"> 272stBUG_ON*         sdioblloccln_fomp,  272st>it *diofinal_blloccln_requesa>,  270}
<9 href="fs9direct-io.c#L289" id="L299" cl98s="line" name="L249">>>>>>>>>="L2="L289"> 289sdioblloccln_fomp,  272st>it *diofinal_blloccln_requesa>, is_async)
<9 href="fs9direct-io.c#L290" id="L290" cl99s="line" name="L190">="L261">ne" namebreakce" name="L270"> 270}
<9 href="fs9direct-io.c#L291" id="L291" cl99s="line" name="L261">ne" name="L270"> 270}
<9 href="fs9direct-io.c#L292" id="L292" cl99s="line" name="L252"> 252
<9 href="fs9direct-io.c#L293" id="L293" cl99s="line" nameeeeeeeeene" name="L226"> 226nt">/* cleanup the bio */
<9 href="fs9direct-io.c#L294" id="L294" cl99s="line" name="L264">" class="sref">esen_free" rele* C"+code=dio_pagee" c_free" rele* C="sre="sref">dio_sube" c"+code=dio_pagee" c="sr) e" name="L270"> 270}
<9 href="fs9direct-io.c#L295" id="L295" cl995="line" namene" name="sref">dio_subblloccln_e" c"+code=dio_pageblloccln_e" c="srio" class="sref">ret = 0;
<9 href="fs9direct-io.c#L296" id="L29="lin99maining =ne" name="L270"> 270}
<9 href="fs9direct-io.c#L297" id="L297" cl997="li="sref">dio_subou *ret = 0;
<9 href="fs9direct-io.c#L298" id="L298" cl99s="line" name="L269"="L289"> 289, ret = 0;
<9 href="fs9direct-io.c#L299" id="L299" cl99s="line" name="L270"> 270}
<10 href="fs10 hrect-io.c#L299" id="L210 hr>10 h="line/pre> 270}
<10 1ref="fs10 irect-io.c#L291" id="L210 ir>10 s="line" nam="L289"> 289 272stdrop refcount *dio_bio_complete(s *dio *is_async)
<10 2ref="fs10 irect-io.c#L292" id="L210 ir>10 s="lief">remaining == 0) {
<10 3ref="fs10 irect-io.c#L293" id="L210 ir>10 s="line" namee="L272"> 272str/a2>, ret = 0;
<10 4ref="fs10 irect-io.c#L294" id="L210 ir>10 s="line" name="L280"> long"272"> 272stflags> == ret = 0;
<10 5ref="fs10 irect-io.c#L295" id="L210 ir>10 s="lilass="sref">ret = 0;
<10 6ref="fs10 irect-io.c#L296" id="L210 ir>10 maining ="e" name="L226"> 226/* cleanup the bio */
<10 7ref="fs10 irect-io.c#L297" id="L210 ir>10 s="line" name="L227"> 227pletmmensett">/* cleanup the bio */
<10 8ref="fs10 irect-io.c#L298" id="L210 ir>10 s="line" name="L298"> 298/* cleanup the bio */
<10 9ref="fs10 irect-io.c#L299" id="L210 ir>10 s="line" name="L219"> 219plett:beforn we get herp. /*
<101href="fs10direct-io.c#L210" id="L210dir>10di="line" name="L219"> 219plett()atranslte"saset EIOCBQUEUED/*
<1011ref="fs10direct-io.c#L211" id="L210dir>10ds="line" name="L221"> 221splett()./*
<10d2ref="fs10direct-io.c#L212" id="L210dir>10ds="line" name="L222"> 222/* cleanup the bio */
<1013ref="fs10direct-io.c#L213" id="L210dir>10ds="line" name="L203"> 203n at="pan class="comment">/*
<10d4ref="fs10direct-io.c#L214" id="L210dir>10ds="line" name="L224"> 224pletmon pathslcanadropon hiraamenperaushLn haammainmmencount2to="pan class="comment">/*
<10d5ref="fs10direct-io.c#L215" id="L210dir>10ds="line" name="L225"> 225bmitssmen pathaatomically./*
<10d6ref="fs10direct-io.c#L216" id="L210dir>10ds="line" name="L226"> 226nt">/* cleanup the bio */
<10d7ref="fs10direct-io.c#L217" id="L210dir>10d7="line" name272"> 272st>pmm_llocclrqsava/a> *dio *sdiobio__loc"+code=dio_pagebio__loc=sdise="L289"> 289 ==  270}
<10d8ref="fs10direct-io.c#L218" id="L210dir>10d8="line" name272"> 272str/a2>, dio_sub     if (diorefcount * 270}
<10d9ref="fs10direct-io.c#L219" id="L210dir>10d9="line" name272"> 272st>pmm_unllocclrqrestorn/a> *dio *sdiobio__loc"+code=dio_pagebio__loc=sdise="L289"> 289 ==  270}
<102href="fs10direct-io.c#L220" id="L210dir>10di="line" name="L269"="L289"> 289, ret = 0;
<1021ref="fs10direct-io.c#L221" id="L210dir>10d1="line" name="L270"> 270}
<1022ref="fs10direct-io.c#L222" id="L210dir>10ds="line" name="L252"> 252
<10d3ref="fs10direct-io.c#L223" id="L210dir>10ds="line" name="L203"> 203/* cleanup the bio */
<1024ref="fs10direct-io.c#L224" id="L210dir>10ds="line" name="L224"> 224
<10d5ref="fs10direct-io.c#L225" id="L210dir>10ds="line" name="L225"> 225/* cleanup the bio */
<1026ref="fs10direct-io.c#L226" id="L210dir>10ds="line" name="L226"> 226/* cleanup the bio */
<1027ref="fs10direct-io.c#L227" id="L210dir>10ds="line" name="L227"> 227="Lss aflagsovalueecontains DIO_LOCKING we ushLa fancya_locmmet">/* cleanup the bio */
<1028ref="fs10direct-io.c#L228" id="L210dir>10ds="line" name="L298"> 298
<10d9ref="fs10direct-io.c#L229" id="L210dir>10ds="line" name="L219"> 219 219=t>=sleted by bio completion.
<1031ref="fs10direct-io.c#L231" id="L210dir>10ds="line" name="L221"> 221 222="Lss aflagsovalueedoesfNOTecontain DIO_LOCKING we donce pat ushLanyleted by bio completion.
<1033ref="fs10direct-io.c#L233" id="L210dir>10ds="line" name="L203"> 203rather rely entset:filtsystrmatctuynchronizet"ted by bio completion.
<1034ref="fs10direct-io.c#L234" id="L210dir>10ds="line" name="L224"> 224
<1035ref="fs10direct-io.c#L235" id="L210dir>10ds="line" name="L225"> 225/* cleanup the bio */
<1036ref="fs10direct-io.c#L236" id="L210dir>10ds="line" name="L226"> 226 227=t>onc tw lmentdclapleted by bio completion.
<1038ref="fs10direct-io.c#L238" id="L210dir>10ds="line" name="L298"> 298=sleted by bio completion.
<1039ref="fs10direct-io.c#L239" id="L210dir>10ds="line" name="L219"> 219
<104href="fs10direct-io.c#L240" id="L210dir>10di="line" name="L219"> 219/* cleanup the bio */
<10d1ref="fs10direct-io.c#L241" id="L210dir>10ds="line" name="L221"> 221other fompsystrmsfneed>to sak= caentefnt"is entsetir ownpleted by bio completion.
<1042ref="fs10direct-io.c#L242" id="L210dir>10ds="line" name="L222"> 222
<1043ref="fs10direct-io.c#L243" id="L210dir>10ds="line" name="L203"> 203="Lyouoesss "code"aso anyt"imenby poe="er mak= >urettea/afunedmenleted by bio completion.
<1044ref="fs10direct-io.c#L244" id="L210dir>10ds="line" name="L224"> 224 >diouretattcleted by bio completion.
<1045ref="fs10direct-io.c#L245" id="L210dir>10ds="line" name="L225"> 225s. 226
<1047ref="fs10direct-io.c#L247" id="L210dir>10ds="line" name="L227"> 227/* cleanup the bio */
<1048ref="fs10direct-io.c#L248" id="L210dir>10d8="line" nam="L289"> 289 272st>nize_t * 252
<1049ref="fs10direct-io.c#L249" id="L210dir>10d9="li="sref">dio_subdo_b_locdev_2"> 25_IO * 25_IO="sree="L272"> 272strw> == dio_bio_complete == iocb> == dio_bio_completedi> == in>di> == dio_bio_completebdev"+code=dio_pagebdevde=d, constaf">dio_bio_complete == iov"+code=dio_pageiov=sdise="L289"> 289 272stoe=off* long"272"> 272stnr_segs> ==  289 272stget_blloc* 289 272stend_t * 289 272st>bmit"rt * 272stflags> == 
<1053ref="fs10direct-io.c#L253" id="L210dir>10d3="lief">remaining == 0) {
<1054ref="fs10direct-io.c#L254" id="L210dir>10ds="line" namee="L272"> 272stseg/a> *ret = 0;
<1055ref="fs10direct-io.c#L255" id="L210dir>10d5="line" name="L289"> 289 * 289 *ret = 0;
<1056ref="fs10direct-io.c#L256" id="L210dir>10d6="line" name="L280"> long"272"> 272staddric ret = 0;
<1057ref="fs10direct-io.c#L257" id="L210dir>10d7="line" name="L280"> " class="sref">i_blkb=wsic ACCESS_ONCEic dio_subin>di> == dioi_blkb=wsic  270}
<1058ref="fs10direct-io.c#L258" id="L210dir>10d8="line" name="L280"> " class="sref">blkb=wsic i_blkb=wsic  270}
<1059ref="fs10direct-io.c#L259" id="L210dir>10d9="line" name="L280"> " class="sref">bllocsize_masca>,  272stblkb=wsic ret = 0;
<106href="fs10direct-io.c#L260" id="L210dir>10di="line" name="L289"> 289 * 289,  289,  270}
<1061ref="fs10direct-io.c#L261" id="L210dir>10d1="line" name="L289"> 289 272stend/a> *oe=off* 270}
<1062ref="fs10direct-io.c#L262" id="L210dir>10ds="line" namef">dio_bio_complete(s *dio * 270}
<1063ref="fs10direct-io.c#L263" id="L210dir>10d3="line" namef">dio_bio_complete(sccbmit"* 289 * 270}
<1064ref="fs10direct-io.c#L264" id="L210dir>10ds="line" name="L280"> long"272"> 272stushe_addric  270}
<1065ref="fs10direct-io.c#L265" id="L210dir>10d5="line" name="L289"> 289 * 289,  270}
<1066ref="fs10direct-io.c#L266" id="L210dir>10d6="line" namef">dio_bio_complete ==  289 ==  270}
<1067ref="fs10direct-io.c#L267" id="L210dir>10d7="line" namef">dio_bio_complete * 289 * 270}
<1068ref="fs10direct-io.c#L268" id="L210dir>10ds="line" name="L268"> 268
<10d9ref="fs10direct-io.c#L269" id="L210dir>10d9="line" name="L2="L289"> 289 == end_io &aWRITE"+code=dio_pageWRITEt" clne" name="L268"> 268
<107href="fs10direct-io.c#L270" id="L210dir>10di="line" namene" name="L289"> 289 == WRITE_ODIRECT"+code=dio_pageWRITE_ODIRECT="li e" name="L270"> 270}
<1071ref="fs10direct-io.c#L271" id="L210dir>10ds="lie" name="L270"> 270}
<10d2ref="fs10direct-io.c#L272" id="L210dir>10ds="line" name=e" name="L203"> 203/* cleanup the bio */
<1073ref="fs10direct-io.c#L273" id="L210dir>10ds="line" name="L203"> 203
<1074ref="fs10direct-io.c#L274" id="L210dir>10ds="line" name="L224"> 224 225/* cleanup the bio */
<1076ref="fs10direct-io.c#L276" id="L210dir>10d6="lie" name="L270"> 270}
<10d7ref="fs10direct-io.c#L277" id="L210dir>10d7="line" name="L2="L289"> 289end_io &abllocsize_masca>, remaining == 0) {
<10d8ref="fs10direct-io.c#L278" id="L210dir>10ds="line" name="L288">="L2="L289"> 289 268
<1079ref="fs10direct-io.c#L279" id="L210dir>10ds="line" name="L249">>>>>>>>>="L289"> 289blksize_b=wsic dio_subbdev_logical_blloccnize *dio_subbdev"+code=dio_pagebdevde=dl) e" name="L270"> 270}
<108href="fs10direct-io.c#L280" id="L210dir>10di="line" namene" name="L289"> 289,  272stblkb=wsic ret = 0;
<1081ref="fs10direct-io.c#L281" id="L210dir>10ds="line" name="L261">="L2="L289"> 289end_io &abllocsize_masca>, ret = 0;
<1082ref="fs10direct-io.c#L282" id="L210dir>10ds="line" name="L292">>>>>>>>>gotoo="sref">dio_subou *ret = 0;
<10d3ref="fs10direct-io.c#L283" id="L210dir>10d3="line" namene" name="L270"> 270}
<1084ref="fs10direct-io.c#L284" id="L210dir>10ds="line" name="L284"> 284
<10d5ref="fs10direct-io.c#L285" id="L210dir>10d5="line" name=e" name="L203"> 203addle p" cta*nt">/* cleanup the bio */
<10d6ref="fs10direct-io.c#L286" id="L210dir>10d6="line" namefor 2="L289"> 289 * 272stseg/a> * 272stnr_segs> ==  272stseg/a> *remaining == 0) {
<1087ref="fs10direct-io.c#L287" id="L210dir>10d7="line" name="L254">272"> 272staddric  long)" class="sref">iov"+code=dio_pageiov=sdi[272"> 272stseg/a> *iov_b* C"+code=dio_pageiov_b* Ct" cclass="sref">ret = 0;
<10d8ref="fs10direct-io.c#L288" id="L210dir>10ds="line" name="L288">="L289"> 289 *iov"+code=dio_pageiov=sdi[272"> 272stseg/a> *iov_len/a> *ret = 0;
<10d9ref="fs10direct-io.c#L289" id="L210dir>10ds="line" name="L249">272"> 272stend/a> *       nize *ret = 0;
<109href="fs10direct-io.c#L290" id="L210dir>10di="line" name="L261">="L2="L289"> 289 * 289end_io &abllocsize_masca>, ret = 0;
<1091ref="fs10direct-io.c#L291" id="L210dir>10ds="line" name="L261">>>>>>>>>>>>>>2="L289"> 289 *end_io &abllocsize_masca>, remaining == 0) {
<10d2ref="fs10direct-io.c#L292" id="L210dir>10ds="line" name="L292">>>>>>>>>="L2="L289"> 289 268
<1093ref="fs10direct-io.c#L293" id="L210dir>10ds="line" nameeeeeeeeeeeeeeeee="L292">272"> 272stblkb=wsic blksize_b=wsic  268
<1094ref="fs10direct-io.c#L294" id="L210dir>10ds="line" name="L264">e" name==================="sref">dio_subbdev_logical_blloccnize *dio_subbdev"+code=dio_pagebdevde=dl) e" name="L270"> 270}
<1095ref="fs10direct-io.c#L295" id="L210dir>10d5="line" namene" namee" name=="sref">dio_subbllocsize_masca>,  272stblkb=wsic ret = 0;
<1096ref="fs10direct-io.c#L296" id="L210dir>10ds="line" name="L266">ne" name="L22="L289"> 289end_io &abllocsize_masca>, 2="L289"> 289 *end_io &abllocsize_masca>, ret = 0;
<1097ref="fs10direct-io.c#L297" id="L210dir>10d7="line" name="L254">>>>>>>>>>>>>>>>>gotoo="sref">dio_subou *ret = 0;
<1098ref="fs10direct-io.c#L298" id="L210dir>10ds="line" name="L288">ne" name="L270"> 270}
<1099ref="fs10direct-io.c#L299" id="L210dir>10ds="line" namene" name="L270"> 270}
<11 href="fs11 hrect-io.c#L299" id="L211 hr>110s="lie" name="L270"> 270}
<1101ref="fs11 irect-io.c#L291" id="L211 ir>1101="line" name=e" name="L203"> 203/* cleanup the bio */
<11 2ref="fs11 irect-io.c#L292" id="L211 ir>110s="line" name="L2="L289"> 289 ==  272stREAD> == end_io &aend/a> *oe=off*ret = 0;
<11 3ref="fs11 irect-io.c#L293" id="L211 ir>110s="line" nameeeeeeeee="L269" class="sref">ret = 0;
<1104ref="fs11 irect-io.c#L294" id="L211 ir>110s="line" name="L284"> 284
<11 5ref="fs11 irect-io.c#L295" id="L211 ir>1105="line" name="L289"> 289(s *kmem_free" alllo *dio_subatic7ree"* 289,  270}
<11 6ref="fs11 irect-io.c#L296" id="L211 ir>11 maining =""L289"> 289,  289, ret = 0;
<11 7ref="fs11 irect-io.c#L297" id="L211 ir>1107="line" name="L2!272"> 272stdio *is_async)
<11 8ref="fs11 irect-io.c#L298" id="L211 ir>110s="line" name="L288">gotoo="sref">dio_subou *ret = 0;
<11 9ref="fs11 irect-io.c#L299" id="L211 ir>1109="line" name=e" name="L203"> 203/* cleanup the bio */
<111href="fs11direct-io.c#L210" id="L211dir>11di="line" name="L219"> 2191107="line" name="ame="L2!"L268"> 268
<10d9ref="fs1[1>ret = 0;
<11 9ref="fs11 ire9ref="fs1[1>retitescclass="sref">ret = 0;
<3ausame= .5%>1107="liniocsy fta*c7">plett()./*
<10d2ref="fs10direct-io.c#Ll95s="la> 29regre"L226"ine= data/ani benchmark.  So,981107="linstREAD> ==0direct-io.c#L213" id="L210dir>10ds="line" name="L203"> 203/* cleanup the bio */
1fstradomme1emmenanaatomic_t so>n at=1pan c1ass="comment">/*
<10d4ref="fs10 ==  272ret = 0;
<11 7refFP_eeeeeee="L269" claFP_eeee" name="L270"> 270>gotoo="sref">dio_subo7" cl95s="line" namess="srofeeee="L269" class="srofe" na<1063ref="fs10direct-io.c#L263" id="L210dir>10d="line" name="L264">eame="L266">ne" n4">ea>dio_subbllocsize_masca>, /1/* cleanup the bio */
<110d7ref="f110direct-io.c#L217" id="L110dir11"sref">ret = 0;
<11 7ref"+flagst" c) e" name="L270"> 270}
<102hreining == 0) {
<1054ref="fee"="srse="L289"> ef">ret = 0;
<10 6ref="fs10 irect-io.c#L296" id="L2101rqsava="sr1""sre" class="sref">dio *remaining"+flagst" c) e" name="L270"> 270}
<102hreining == 0) {
<1054ref="fe> = 0;
<11 3ref="fs11"L210dir>10 == 0) {
<1"L210dir>109oe=off*bdev"+code=dio_pagebdevde=dlne1_1href="fs1storn="sre""sre" class="s1ef">d11ef="+coblksize_b=ws="sre="sre<1063ref="fs10direct-i=">ie"L_ ie"L_ dma0 s="eeee="L269" claFa0 s="sref">v"+code=dio_pagebdevde=dlne1ef">retne" name="L270"> 27">ret = 0;
<11 7ref"+in>dide=dsleanup the bio 0"> 270}
<102hrekial_bp>,  270}
<102hrei_ma0 s="eeee="L269" clai_ma0 s="="fs10 irect-io.c#L296" id="L2101dir>10ds="1ine" name="L252"> 2521<10d312">/* cleanup the bio */
<1ir>10ds="l1ne" name="L203"> 203/* c12 href="+next_+_loccfor_t<=sdii irect-io.c#L292" id="L21L210b29re95" cme="Lass="sr-ioworker10 ==  272eedmen="sre" class="sref"but>ofs10direct-io.c#L220but>ofs10de" na/aflags> == of="fs10direct-ionbut>opsystrmadr1verspleted by bio complet1on.fs10direct1io.c#L226" id="L210dir>101s="li12stblkb=wsic  =ne" name="Liile_com0ds="_and_9" i_ran 270a href="+codeaticcbmit"rf="l1gsoesrid=t1r:t">/* cleanup the bio *1 *pqsava="sr1fancya_locmmet">/* cleanu1 the 122stu/a> *is_async="fs11 irect-io.c#L297" id="L21bdev"+code=dio_pagebdevde=dlne1io complet1on.
<10d9ref="fs101irect1272stu/a> *ofloc=sdirect-io.c#L220but>ofloc=sde" na/aflags> == of="fs10direct-ionbut>op1href="fs1pera="L269stwithleted by 1io co12>dio_sube" c"+code=dio_pagee" c="sr) e" name="L270">GFP_KERNELtfreef="fs10direct-iGFP_KERNELtfreee" name="L270"> 270}
<11 6ref="fs11 irect-io.c#L296" id="L211 ir>11 ma88">gotoo="sref">dio_subouef="+coresvalt" cio"-="L289">tpheld ent119ry, but>=t>=sleted by b1o com13="fs9direct-io.c#L281" id="L291" cl98s="line" name="L261">="L261">ne" name="L270"> 270}
<9 href="fs9direcm13ir>10ds="1 bio completion.
<1032re13292">>>>>>>>>="sref">dio_sub         fs10direct1io.c#L236" id="L210dir>101s="li13 bio */
<10d6ref="fs10direct-i==  272/* cle1nup t1e bio */
<1037ref="fs111111111* WL210b29e" name="ame=d="L21ect-io.c#L2aaaaa*nt">/* cleanup the bio */
1ecamm226>=1>onc tw lmentdclapleted b1 bio 1ompletion.
<1038ref="f11111111* ==  272=sleted by b1o com13">diorefcount * 224 == t1href="fs1ewnion.msfsean an1dcla by i_mutex,t">/* cle1nup t140bio */
<10d6ref="fs10direct-i==  272
<1042ref="fs10direct11111111*  id=iile extid=s="s0ds="liupdaid="Li"L210-io.c#L2data==  27210ds="l1io.c#L243" id="L210dir>101s="li1e" name="L203"> 203>>>>. Sidualafieldsnperawill genertde much1t"imenby p1e="er mak= >urettea/afune1menle1ed by bio completion.
11111111* eveine" nAIO,98 >diouretattcleted b1 bio 1ompletion.
<1045ref="f11111111* /a*  ->="name=">10disaa*nt">/* cleanup the bio */
1worse"/a>s1 272
11047ref="fs10direct-io.c#1247" 14"sref">ret = 0;
<11 7ref"+flagst" c) e" name="L270"> 270}
<102hreis_adide=dio" classos_e" name="L270"> 270<"+in>dide=dsleanup the bio )ret = 0;!||>2="L289"> 289 289 == ret = 0ref="+rwde=bi=o"272"> 272=1-io.c#L248" id="L210dir>11d8="l142stu/a> *2="L289"> 289< irect-io.c#L293" id="L211cln_requesade=d)ce" i"L210_r<1067ref="fs10direi"L210_r<10e" name="L270"> 270<"58ref="fs10direct-io.c#L258")_subbllocsize_masca>, st>nize_t1/a> *end_io1 25_IO="sr1e="L272"> 272strw> ==1 *bdev"+code=d1o_pag15watch mutofor ao0 l=neio from aot=sdise="L219"> 289oe=off* 270}
<102hreiirect-io.c#L250" id="L210dir>href="+iov_lent" cirect-io.c#L250" id="L210dir11 irect-io.c#L295" id="L211 ir>10ds="l1/a>st>bmit"rt * 272stflagst" c) e" name="L270"> 270}
<102hre71ref="fs10direct-io.c#L271" id="L210dir>71ref="fs10direct-io.c#11 irect-io.c#L295" id="L211 i"imenby p1ine" namee="L272"> 272 272e" name="L280"> long"272"> dir>10ds="line" 
<1094ref="fs10direct-io.c#L294" id="L210dir>10ds=>
<1094ref="fs10direct-io.c#L211 irect-io.c#L295" id="L211 ier perasr1
<1055ref="fs10direct-io.1#L255154sref">ret = 0;
<11 7refe" name="L280"> long"272"> dir>10ds="line"  *href="+iov_lent" ci> == s1> *ret = 0;
<1056ref="fs10di" name="L280"> long"272"> dir>10ds="line" , 1cln_cln_requesade=d)ce" ds=>
<1094ref="fs10direct-io.c#L211 irect-io.c#L295" id="L211 i.
1ret = 0;
<1057ref="fs10dire15*ACCESS_ONCEic <1 href1"+coACCESS_ONC<1056ref="fs10di" name="L280"> long"272"> dir>10ds="line" d_t * *i_blkb=wsic diorefcount * 270}
<102hreme="L289"> 289 289 271s15 * long"272"> dir>10ds="line" 053ref="fs10direct-io.c#L253" id="L21lnl95s="line" name053ref="fs10direct-io.c#L253" id="L2111 irect-io.c#L295" id="L211 289,  289,  long"272"> dir>10ds="line" ">="L261">ne" nb name="L280"> lon">="L261">ne" nb n"L21lnl-> 289oe=off* long"272"> dir>10ds="line" b_locst" cce" name="L270"> 270}
<9 href="fs9directnl-> 289 * 272"+flagst" c) e" name="L270"> 270}
<102hrei+in>dide=dsleanup the bio  href="+iov_lent" ccin>dide=dsleanup the bio  289 270}
<1165ref164sref">ret = 0;
<11 7ref"+flagst" c) e" name="L270"> 270}
<102hrei>}
<1095ref="fs10diri_n/a> * 270<"58ref="fs10direct-io.c#L258") 289s1 /* cleanup the bio */
<1d="lie="L219"> 289 == ret = 0;
<11 7refloc=sdise="nef="fs10direct-ioloc=sdise="nefe" na/aflags> ==  270}
<102href="fs10direct-io.c#L220" id="L210di) 289 * 272st>pmm_unllocclr hr> 289 289<1arw> 1= end_io1/a> &aWRIT1"+code=dio_pageWRITEt" cl1e" na16di="line" name="L219"> 2191107="lisref">WRIT1_ODIRECT"+code=dio_pageWR1TE_OD17fs1[1>ret = 0;
<11 9ref="fs11 ire9In-io.c#one" n-dir>10me=t-io.s,98 224< 2 m219dualafieldsnperawill genertde much1ir>10ds="l1ne" name=e" name="L203"> 103/*
<10d2ref="fs10direct-io.c#Ll9 298>>>a*nt">/* cleanup the bio */
1073ref="fs10direct-io.c#L273" id="L210dir>17" name="L203"> 203 272to givet"ted by bio1compl17" id="L210 ir>> &abllocsize_masca>,  = 0;
<11 7refe" name="L280"> long"272"> dir>10ds="line"  *dio_subou *e" name="L280"> long"272"> dir>10ds="line" l9 lonl9/* cleanup the bio */
<1ir>10d7="l1ne" name="L2="L289"> 289<1aoe=o17 272stnr_segs> ==  272stseg/a> *remaining == 0) {
<1087ref="fs10direct-io.c#L287" id="L210dir>10d7="line" name="L254">272"> 272staddric  272stseg/a> * 289 *iov_b* C"+code=dio_pageiov_b* Ct" cclass="sref">ret = 0;
<10d8ref="fs10direct-io.c#L288" id="L210dir>10ds="line" name="L288">="L289"> 289 * 268
<1079ref="fs101irect1io.c#L279" id="L210dire" name="L270">e" name="L280"> long"272"> dir>10ds="line" l9 lonl9v"+code=dio_pagebdevde=dlne1wst" cio""1class="sref">blksize_b=ws1c  289 289 *+ref="+iov_lent" cclass="sref">ret = 0;
<10d9ref="fs10direct-io.c#L289" id="L210dir>10ds="line" name="L249">272"> 272stend/a>>+ref="+iov_lent" PAGE_SIZname="L289"> 289PAGE_SIZn" id=1) /v"+code=dio_pagebdevde=dlne1ize_masct"1cio"(1i"ltc<cL272"> 2721/a>st1lkb=wsic PAGE_SIZname="L289"> 289PAGE_SIZn" ids-" id="L210dir>10ne" name="L289"> 289 */re" name="L270">PAGE_SIZname="L289"> 289PAGE_SIZn" id) 289e1d_io &abllocsize_masc1>, ret = 0;
<10d3re1="fs118anup the bio */
<1024ref=1id="L210di1>10ds="line" name="L284">1284 272="L238" idirect-io.c#L268" id="L238" idirece" na/aflags> ==  268
<10d9ref="fs) 289 103addle p" cta*nt">/* cle1nup t1e bio */ ==  272stseg/a> *remaining == 0) {
<1087ref="fs10direct-io.c#L287" id="L210dir>10d7="line" name="L254">272"> 272staddric  * 289 *iov_b* C"+code=dio_pageiov_b* Ct" cclass="sref">ret = 0;
<10d8ref="fs10direct-io.c#L288" id="L210dir>10ds="line" name="L288">="L289"> 289 * long)1 class="sref">iov"+code=d1o_pag1iov=sdi[272"> 272stseg/a> * long"272"> dir>10ds="line" 0> = 0;
<1097ref="fs10direct10di="line" name="f">dio_bio_completeret = 0;
<10d9ref="fs10direct-io.c#L289" id="L210dir>10ds="line" name="L249">272"> 272stend/a> *1ov"+code=dio_pageiov=sdi[172"> 18 end_io1a>       n1ze *ret = 0;
<109 irect-io.c#L292" id="L2Ind"lin221 of>>>1* ==  272 289end_io,  long"272"> dir>10ds="line" ">rst261">ne" name="L280"> lon">rst261">ne" n *iovtseg/a> * 289 *0dir>1~e" name="L270">PAGE_MASKame="L289"> 289PAGE_MASK="fs)1cln_cln_requesade=d)ce" ds=>
<1094ref="fs10direct-io.c#L211 irect-io.c#L295" id="L211 zet" ci""s1ef">end_io &abllocsiz1_masc1>,  long"272"> dir>10ds="line" ">="L261">ne" nreques72"> 272st>p">="L261">ne" nreques7"L21lnl95s="line" name0" name="L280"> long"272"> dir>10ds="line" ,  268
<1093r1f="fs10direct-io.c#L293" id="L210dirrrrrrrrrrrrrrrrrrrrrrrrr10d5="line" namen">dio_bio_complete
<1094ref="fs10direct-io.c#L2) 289blks1ze_b=1sic ="n2"> e1* ==  272 *d95s="line" name0" name="L280"> long"272"> dir>10ds="line" 
<1067ref="fs10dire#L267" id is11 irect-io.c#L295" id="L211 +cbllocsiz1_masct" cio"(1i"ltc<cL212"> 212stblkb=wsic  long"272"> dir>10ds="line" tai1 irect-io.c#L29tai17" id is11 irect-io.c#L295" id="L211 +2stse1f">end_io &abllocsize1masca1,  long"272"> dir>10ds="line" currname="L280"> loncurrn7" id is11 irect-io.c#L295" id="L211 +0"> long)1class="sref">ret = 0;1<10981ef="fs1 irect-io.c#L295" id="L211 +s="sref">1"L210dir>10ds="line" name1e" na1e="L270"> 270}
<1195s="line" name0" name="L280"> long"272"> dir>10ds="line" tot"L24">eame="L266">ne" ntot"L24">ea7" id is11 irect-io.c#L295" id="L211 +>       n1>110s="lie" name="L270"> 170ret = 0;
<10>> &abllocsize_mascae" name="L289"> 289 *0dir>1&abllocsize_mascPAGE_SIZname="L289"> 289PAGE_SIZn" id=1)ic  203 long"272"> dir>10ds="line" tot"L24">eame="L266">ne" ntot"L24">ea7" i++11 irect-io.c#L295" id="L2112riocsy fta2nt">/* cleanup the bio */2/span20292">>>>>>>>>="sref">dio_sub 0d5="line" namen">dio_bio_complete 289PAGE_SIZn" ids-"&abllocsize_mascae" name="L289"> 289 *0dir>1&abllocsize_mascPAGE_SIZname="L289"> 289PAGE_SIZn" id1- 1r) 289 284
<11 95s="line" name0" name="L280"> long"272"> dir>10ds="line" tot"L24">eame="L266">ne" ntot"L24">ea7" id+iovtseg/a> *dio_bio_complete 289PAGE_SIZn" id1- 1r>/re" name="L270">PAGE_SIZname="L289"> 289PAGE_SIZn" id 289 20occnize="sre="sref">d95s="line" name0" name="L280"> long"272"> dir>10ds="line" currnize_tesio_bio_completeesi"L21lnl95s="line" namene" name="L289"> 289 * 22kmem_free"2alllo */* cleanup the bio */
<2 289,  = 0;
<11 7refo.c#L263" id="L210dir>10d="/aflags> ==  long"272"> ="/aflags> == dio_bio_complete<) 289ret = 0;2c#L2920f="fs1 irect-io.c#L295" id="L2112="sref">re2 = 0;
<11 9ref="fs11 2rect-2o.c#L299" id="L211 ir><1056ref="fs10d"fs10direct-io.c#L219" id="L210dir>10d9="line" sul72"> 272st>pmmsul7irect10di="line" name="cclass="sref">ret = 0;
<10d9ref="fs10direct-io.c#L289" id="L210dir>10ds="line" name="L249">272"> 272stend/a>>-1 irect-io.c#L295" id="L2112=9sref">re2<110s="lie" name="L270"> 21dir>20ef="+coblksize_b=ws="sre="sre||>2="L289"> 289<=" name="L280"> long"272"> dir>10ds="line" ">="L261">ne" nreques72"> 272st>p">="L261">ne" nreques7"L21l-" id="L210dir>100" name="L280"> long"272"> dir>10ds="line" ,  268
<12d9ref21line" name="L261">ne" name="L270"> 27">ret = 0;
<11 7refds=>
<1094ref="fs10direct-io.c#L2) 289plett()./* cleanup the bio */
<2nstREAD> =20direct-io.c#L213" id="L220dir>21 href="+next_+_loccfoass="sref">is_async="fs11 irect-io.c#L297" id="L21bdev"+code=dio_pagebdevde=dlne2fstradomme2emmenanaatomic_t so>n at=2pan c21ref="+cbmit"resen_>eedmen="sre" class="sref"a* 7"leanup>,  = 0;
<11 7refo.c#L263" id="L210dir>10d="/aflags> ==  long"272"> ) 289dddddddddbreak 289/2stblkb=wsic ret 272dio *is_async="fs11 irect-io.c#L297" id="L21">oer>1107="line" name=TBLKame="L289"> 289me=TBLK"L21bdev"+code=dio_pagebdevde=dlne2f9sref">re2storn="sre""sre" class="s2ef">d21ef="+coblksize_b=ws="e="L219"> 2191107="l2ef">ret="npart of1107="l2eiocsy fta2ine" name="L252"> 2522<10d322>/*
<10d2ref="fs10direct-io.crrrrrrrr* be handlcme="L=t-io.cme"L21when981107="l2estREAD> =2ne" name="L203"> 203/* c22" name="L203"> 203 272102s="li22ref="+cbmit"resen_>ee95s="line" name="fs11 irect-io.c#L297" id="L211 is11 irect-io.c#L295" id="L2112psystrmadr2verspleted by bio complet2on.102s="li22stblkb=wse="L219"> 2191107="l2e0d7ref="f2r:t">/* cleanup the bio *2
<1037ref="fs111111111* Th2r be some un0ds=ten9diske=d=10dirnd of1107="l2eqsava="sr2fancya_locmmet">/* cleanu2 the 22mpletion.
<1038ref="f11111111* fs-="+co-s210me=>>>>.  Glie" nath=d=nowa*nt">/* cleanup the bio */
2io complet2on.
<10d9ref="fs102irect2272 203 272 * * * clr|> = 0;
<11 7refo.c#L263" id="L210dir>10d="/aflags> ==  long"272"> ="1="/aflags> == dio_bio_complete<) 289
<2032re23292">>>>>>>>>ass="sref">is_async0" name="L280"> long"272"> dir>10ds="line" curname="L280"> loncurn7" ibdev"+code=dio_pagebdevde=dlne23r>10ds="l2e donce pat ushLanyleted 2y bio23 href="+next_+_loccfo"sref">is_async0"+coEINVALt" c e" name="L270"> 270}
<1061ref="f2 irect-io.c#L297" 2 * 223s10direct2matctuynchronizet"ted by 2io co23
<10dhref=">ize_t="lie="L289"> 223systrmadr2nete"pleted by bio comple2ion.<23occnize="sre="sref">d95s="line" name="f2 irect-io.c#L297" 2 *}
<102hredc#L2cbmicurname="L280"> londc#L2cbmicurn clr|> = 0;
<11 7refo.c#L263" id="L210dir>10d="/aflags> ==  long"272"> ="/aflags> == dio_bio_complete<) 289stblkb=wsic is_async="fs11 irect-io.c#L297" id="L21">oe0="sref">dio_subou * 223qsava="sr2>onc tw lmentdclapleted b2 bio 23ov=sdi[272"> 272stseg/a> *KERNELtre95" c irect-io.c#L29KERNELtre95" c clr|> = 0;
<11 7ref0" name="L280"> long"272"> dir>10ds="line" curname="L280"> loncurn7" ib href=">ize_t="lie="L289"> 223o complet2clusmon.  It>=sleted by b2o com23="L270"> 270}
<1195s="line" name0" name="L280"> long"272"> dir>10ds="line" curname="L280"> loncurn7" i1 i70}
<102hreNUL =""L289"> 289 2231href="fs2ewnion./* cle2nup t240bio */is_async0" name="L280"> long"272"> dir>10ds="line" b name="L280"> lonbo_subou * ==  long"272"> ) 289
<1024ref=2t"imenby p2e="er mak= >urettea/afune2menle243"rt<=sdisee="L272"> 272="L2fi->shdirect-io.c#L268" id="L2fi->shdirecd="L|/aflags> ==  268
<10d9ref="fs) 289s2 2191107="l2n.
21047ref="fs10direct-io.c#2247" 24 bio */
<1037ref="fs111111111* It is poe="bleath=d,98/* cleanup the bio */
2ncamm226>=2-io.c#L248" id="L210dir>12d8="l24mpletion.
<1038ref="f11111111* Inath=d=io.c,98rets98/* cleanup the bio */
2no complet2/a> * 203 272 272strw> ==2 *,  = 0;
<11 7refo.c#L263" id="L210dir>10d="/aflags> ==  long"272"> ) 289bdev"+code=d2o_pag25watch mutofor ao0 l=neio from ao2=sdise="L229"> 289 27210ds="l2/a>st>bmit"rt * 203>>>1lookups havme="enLl95s="led.  id=="srareques7s==  272 272
11111111* wme#L23let inbut>o/go=nowath=d=its RNE="fsd=its purpose==  272
<1045ref="f11111111* of="nusL2="L2look>="nup uninitial210me=>>>>>.==  272s2> *
<1046ref="f11111111* ==  272
2ret = 0;
<1057ref="fs20dire256bio */is_asyncndt" cioo"" class="sref">oe=off*ret = 0;clref">remaining"+flagst" c) e" name="L270"> 270}
<102hreining == 0) {
<1054ref="fe> = 0;
<11 3ref="fs11"L210dir>10 == 0) {
<1"L210dir>109ACCESS_ONCEic <2 href25ov=sdi[272"> 272stseg/a> *ofloc=sdirect-io.c#L220but>ofloc=sde" na/aflags> ==  270}
<102hreiirect-io.c#L250" id="L210dir id="L210dir>10d8="linbut>of="fs10direct-ionbut>onize_t2sref">i_blkb=wsic end_io2i25_IO="sr2 cio"(1i"ltc<cL272"> 272s25di="line" name="L219"> 2191107="l2289, ret = 0;
<11 9ref="fs11 ire9Th29onlynaaaa wmewant="lileavme=iosnameflight is when9a successful>1107="l22sdise="L22*retfull aili0ds=" havme="enLsa* p.  Inath=d=io.c>1107="l22r>10ds="l2a> * 203 289 *
11111111* call ail_ine" nam is when98 272 270}
<1265ref26mpletion.
<1045ref="f11111111* T">10had>*better* be th29onlynplaceath=d rais>s9-EIOCBQUEUED.==  272s2 
<1046ref="f11111111* ==  272 289 == ret = 0;
<11 7refBUG_ONf="fs10direct-iBUG_ON clr|> = 0;
<11 7ref="fs11 irect-io.c#L297" id="L21">oer>1107="line" namIOCBQUEUEDame="L289"> 289mIOCBQUEUED *remaining"+flagst" c) e" name="L270"> 270}
<102hreis_a = 0;
<11 3ref="fs11="fs11 irect-io.c#L297" id="L21">oe01et = 0;
<11 3ref="fs11"fs10direct-io.c#L219" id="L210dir>10d9="line" sul72"> 272st>pmmsul7irectet = 0ref="+rwde=bi=o"272"> 272nize_t2ne" name="L2="L289"> 289<2arw> 26="L270"> 270}||>2="L289"> 289bdl)lass="sref">ret10d9="line" sul72"> 272st>pmmsul7irect>oe=off* long"272"> dir>10ds="line" 0> = 0;
<1097ref="fs10direc)bu * &aWRIT2"+code=dio_pageWRITEt" cl2e" na26ef="+coblksize_b=ws="e5s="line" name="fs11 irect-io.c#L297" id="L211 ir>1107="line" namIOCBQUEUEDame="L289"> 289mIOCBQUEUED 272WRIT2_ODIRECT"+code=dio_pageWR2TE_OD27watch mutofor ao0 l=neio from ao2ir>10ds="l2ne" name=e" name="L203"> 203>>>>>>>>ass="sref">is_async="fs11 irect-io.c#L297" id="L211!oer>1107="line" namIOCBQUEUEDame="L289"> 289mIOCBQUEUED10ds="l20direct-io.c#L273" id="L220dir>27 href="+next_+_loccfo"sref">is_asynca* 7a9" i_ect-io.c#L>,  = 0;
<11 7refo.c#L263" id="L210dir>10dref="+coresvalt" cio"-="L289"2bsolutely 2eeded>to givet"ted by bio2compl27
<10dhref=">ize_t="lie="L289"> 22enough tim2pleted by bio completion.2/span27de=dio_pagee"t" clref">remaining"rop_r name272"> 272st>p"rop_r name27 clr|> = 0;
<11 7refo.c#L263" id="L210dir>10dr">oe0=dev"+code=dio_pagebdevde=dlne21076ref="f210direct-io.c#L276" id="L210dir27stblkb=wsic ,  = 0;
<11 7refo.c#L263" id="L210dir>10d="> = 0;
<11 7refss="sreeee="L269" class="sref">ar95s="line" name="fs11 irect-io.c#L297" id="L21ar95s="line" namefal c irect-io.c#L29fal c>10dref="+coresvalt" cio"-="L289"2b="lie="L22ne" name="L2="L289"> 289<2aoe=o27  270}
<11 6ref="fs11 irect-io.c#L296" id="L211 ir>11 ma88">gotoo="sref">dio_subouef="+coresvalt" cio"-="L289"2>end_io,  } el cf="+coresvalt" cio"-="L289"2>st>nize_t2"> 268
<1079ref="fs102irect2io.c#L279" id="L210dire" name="L270">BUG_ONf="fs10direct-iBUG_ON clr|> = 0;
<11 7ref="fs11 irect-io.c#L297" id="L21"!oer>1107="line" namIOCBQUEUEDame="L289"> 289mIOCBQUEUEDa> &aWRIT2class="sref">blksize_b=ws2c  2722/a>st2lkb=ws> = 0;
<11 7refs="L261">ne" name="L270">:f="+coresvalt" cio"-="L289"2ir>10ds="l2d_io &abllocsize_masc2>,  = 0;
<11 7ref="fs11 irect-io.c#L297" id="L21ef="+coresvalt" cio"-="L289"2" cclass="2ref">ret = 0;
<10d3re2="fs128anup 11 irect-io.c#L291" id="L2112id="L210di2>10ds="line" name="L284">2284ize_t="lie="L289"> 22inough tim2ne" name=e" name="L203"> 203is_async0"+coEINVALt" c e" name="L270"> 2href=">ize_t="lie="L289"> 22i076ref="f2">addle p" cta*nt">/* cle2nup t2e bio "sref">is_async_ *dev_ass="sr == dide=dio" class"+in>e" nc="line" namef">dccin>dide=dsleanup the bio ,e<1063ref="fs10direct-iiirect-io.c#L250" id="L210dir>="line" namef">dcirect-io.c#L250" id="L210dira href="+codeaticcbmit"rf="l272stse2/a> *="line" namef">dbdevdide=dsleanup th=ofe" nc="line" namef">dcclass="sref">ret = 0id="L211 ir>11 malss=EINVALt" c e" namlss=EIe" nc> = 0;
<11 7refss="sreeee="L269" class="sref">a href="+codeaticcbmit"rf="l27end_ioiov"+code=d2o_pag2iov=sdi[272"> _b* C"+code=d 0) {
<1087ref="fs10direct-io.c#L287" id="L210dirid="L211 ir>11 ma = 0;
<11 7refd_t *11 ma88"_iodonoEINVALt" c e" nam88"_iodonoEIe" nc> = 0;
<11 7refme="L289"> 289 28">diorefcount * = 0;
<11 7ref053ref="fs10direct-io.c#L253" id="L21, inref="fs10direct-iining == 0) {
<1054ref="fr mutofor ao0 l=neio from ao2a>       n2ze *ev"+code=dio_pagebdevde=dlne2="sre2="L229"> 289
<10d6ref="fs10direct-i==  272end_io &abllocsiz2_masc29>/*
<10d2ref="fs10direct-io.c#LTh29b>>>>1devi= n2"> e1is/10dssd=in=10dirnd to ">="Lt" c  272 268
<1093r2f="fs29" name="L203"> 203=".  Si> 29it203 272blks2ze_b=29d by bio completion.
11111111* p+rwne" 9it h2r=" to hide some of 272 * ency.==  272 229he bio */
<1046ref="f11111111*==  272stse2f">end_io &abllocsize2masca29 bio */
<1037ref="fs111111111* Attempt="lip+rwne" 9>rets98 er.==  272ret = 0;2<109829mpletion.
<1038ref="f11111111* ==  2722"L210dir>10ds="line" name2e" na29">diorefcount * 268
<10d9+rwne" e" na/aflags> ==  270}
<102hrefd_disk 270}
<102hrel9rt_tb1 irect-io.c#L29l9rt_tb1       n2>110s="lie" name="L270"> 270 * 268
<10d9+rwne" e" nags> ==  270}
<102hrefd_queu 1101="l3ne" name=e" name="L203"> 303 289,  268
<10d9+rwne" e" na(char *io_pageiov_b* Ctbdev 270}
<102hrefd_queu 1101="l3nf">end_io &abllocsiz3/span30">/* cleanup the bio */
<3>stREAD> =3  = 0;
<11 7ref=rect-io.c#L270" id="L2,e"line" namef">dccin>dide=dsleanup the bio ,e"line" namef">dcirect-io.c#L250" id="L210diraef="fs10direct-i=devdcclass="sref">ret = 0id="L211 ir>11 mass="sreeee="L269" class="sref">a href="+codeaticcbmit"rf="l3rect-io.c#3294" id="L211 ir>110s="li3e" na3e="L284"> 284
<11                      0) {
<1087ref="fs10direct-io.c#L287" id="L210dirid="L211 ir>11 ma11 mame="L289"> 289 30occnize="sre="sref">d                     0) {
<1087ref="053ref="fs10direct-io.c#L253" id="L21, f="fs10direct-iining == 0) {
<1054ref="fref="+coresvalt" cio"-="L289"3i5ct-io.c#32masct" cio"(1i"ltc<cL23ree" 30">/* 11 irect-io.c#L291" id="L2113 289, 789ret = 0;3c#L2930f="fs>1107="line" namXPORT_SYMBO =""L289"> 289 = 0;
<11 7ref_ *dev_ass="sr == 10ds="line" name3rect-30 end_io3=9sref">re3<110s="lie" name="L270"> 31dir>30ef="+2"> ic f="fs10direct-i_="nef="fs10direct-io_="nefe" n inref="fs10direct-i88"_inef="fs10direct-io88"_inef clr|voidr mutofor ao0 l=neio from ao3ne" name="3me="L2!"L268"> 268
<13d9ref31line"ev"+code=dio_pagebdevde=dlne3niocsy fta3c7">plett().oe=off*}
<102hreKMEM_CACHE6ref="fs11 irecKMEM_CACHE clr|> = 0;
<11 7refo.c#L263" id="L210dir>10d="> = 0;
<11 7refSLAB_PANIC =30direct-io.c#L213" id="L230dir>31 href="+next_/a*  - s11 irect-io.c#L295" id="L2113fstradomme3emmenanaatomic_t so>n at=3pan c31ref="11 irect-io.c#L291" id="L2113n4ct-io.c#3n haammainmmencount2to="p3n cla31Ce"oc"sref">is_asyncmodule_inef="fs10direct-iomodule_inefe" name="L270"> 270}inef="fs10direct-io88"_inef clrr mutofor ao0 l=neio from ao3n5ct-io.c#3y./3s


Th29orig>="L LXR softwarretmutofor ahttp://sourc"L21ge.net/9+ojeios/lxr">LXR 1038unefy>10d="=">10experi8ref"L versc#L2by9mutofor amailto:lxr@ss=ux.no">lxr@ss=ux.no2"> d
lxr.ss=ux.no kindt" hostcme="Lmutofor ahttp://www.redpill-ss=9+o.no">Redpill Ls=9+o AS>10d="9+ovider of="n id=opera.c#Ls servi= a si> 291995.