On Tue, May 22, 2012 at 03:42:55PM -0700, Tejun Heo wrote: > On Wed, May 09, 2012 at 11:11:25PM -0400, Kent Overstreet wrote: > > +int submit_bbio_split(struct bio *bio, struct cache_set *c, > > + struct bkey *k, unsigned ptr) > > +{ > > + struct closure *cl = bio->bi_private; > > + struct bbio *b; > > + struct bio *n; > > + unsigned sectors_done = 0; > > + > > + closure_get(cl); > > + > > + bio->bi_sector = PTR_OFFSET(k, ptr); > > + bio->bi_bdev = PTR_CACHE(c, k, ptr)->bdev; > > + > > + do { > > + n = bio_split_get(bio, bio_max_sectors(bio), c); > > + if (!n) { > > + closure_put(cl); > > + return -ENOMEM; > > + } > > + > > + b = container_of(n, struct bbio, bio); > > + > > + bkey_copy_single_ptr(&b->key, k, ptr); > > + SET_KEY_SIZE(&b->key, KEY_SIZE(k) - sectors_done); > > + SET_PTR_OFFSET(&b->key, 0, PTR_OFFSET(k, ptr) + sectors_done); > > + > > + b->submit_time_us = local_clock_us(); > > + generic_make_request(n); > > + } while (n != bio); > > + > > + return 0; > > +} > > Hmmm... where is @sectors_done updated? That's a bug - thanks! -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel