On Wed, Jun 01 2016 at 12:23am -0400, James Johnston <johnstonj.public@xxxxxxxxxxxx> wrote: > Hi Mikulas, > > > bio_alloc can allocate a bio with at most BIO_MAX_PAGES (256) vector > > entries. However, the incoming bio may have more vector entries if it was > > allocated by other means. For example, bcache submits bios with more than > > BIO_MAX_PAGES entries. This results in bio_alloc failure. > > > > To avoid the failure, change the code so that it allocates bio with at > > most BIO_MAX_PAGES entries. If the incoming bio has more entries, > > bio_add_page will fail and a new bio will be allocated - the code that > > handles bio_add_page failure already exists in the dm-log-writes target. > > > > Also, move atomic_inc(&lc->io_blocks) before bio_alloc to fix a bug that > > the target hangs if bio_alloc fails. The error path does put_io_block(lc), > > so we must do atomic_inc(&lc->io_blocks) before invoking the error path to > > avoid underflow of lc->io_blocks. > > > > Signed-off-by: Mikulas Patocka <mpatocka@xxxxxxxxxx> > > Cc: stable@xxxxxxxxxxxxxxx # v4.1+ > > How does this relate to the previous patch you made to dm-crypt? How best > should I test this? It looks like the dm-crypt patch fixed the problem. > > Should I test by applying this patch ONLY and reverting the dm-crypt patch? > (i.e. does this patch also fix the problem.) Or should I just test with > both patches applied simultaneously? The dm-log-writes patch has nothing to do with the dm-crypt patch. It is just that both targets have comparable issues with bcache issuing really large bios. _______________________________________________ dm-crypt mailing list dm-crypt@xxxxxxxx http://www.saout.de/mailman/listinfo/dm-crypt