title: bio_endio and correct handling of the READ request
body: <p>I'm need to process in the my own "bio_endio()" routine  data has been read from disk block device.
   Debug output show me :</p>
  
  <pre><code>[ 2366.375518] [ 0x0 DUDRIVER\__dua_show_bio:701] before [000] BIO 00000000f00b7491, src_iter sector/size/idx/done/bvec_done : 2056/0/1/4096/0
  </code></pre>
  
  <p>I expect that I can run over BVEC with follow loop:</p>
  
  <pre><code>for (vcnt = 0, src_iter = src-&gt;bi_iter; ; vcnt++)
      {
      if ( !src_iter.bi_size)
          {
          if ( !(src = src-&gt;bi_next) )
              break;
  
          src_iter = src-&gt;bi_iter;
          }
  
        src_bv = bio_iter_iovec(src, src_iter);
  
  
       /* there is decrypting stuff */
  
       }
  </code></pre>
  
  <p>But so loop is ended at "first iteration" and decryption stuff hav not be called.
  So , do I'm need to save .bi_iter field before calling low level driver and restore it before loop? Or this tricks will not works because low level driver can splitting BVEC?</p>