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; > +} Where is @sectors_done updated? Thanks. -- tejun -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel