diff options
| author | Jens Axboe <axboe@kernel.dk> | 2013-07-02 02:32:57 -0400 |
|---|---|---|
| committer | Jens Axboe <axboe@kernel.dk> | 2013-07-02 02:32:57 -0400 |
| commit | d0e3d0238d83b05d7846c7281524e0f814633dbd (patch) | |
| tree | 9b3750123faf4975bde744bb9da9219fb697e374 /drivers/md/bcache/movinggc.c | |
| parent | 5f0e5afa0de4522abb3ea7d1369039b94e740ec5 (diff) | |
| parent | 8e51e414a3c6d92ef2cc41720c67342a8e2c0bf7 (diff) | |
Merge branch 'bcache-for-3.11' of git://evilpiepirate.org/~kent/linux-bcache into for-3.11/drivers
Diffstat (limited to 'drivers/md/bcache/movinggc.c')
| -rw-r--r-- | drivers/md/bcache/movinggc.c | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/drivers/md/bcache/movinggc.c b/drivers/md/bcache/movinggc.c index 8589512c972e..1a3b4f4786c3 100644 --- a/drivers/md/bcache/movinggc.c +++ b/drivers/md/bcache/movinggc.c | |||
| @@ -9,6 +9,8 @@ | |||
| 9 | #include "debug.h" | 9 | #include "debug.h" |
| 10 | #include "request.h" | 10 | #include "request.h" |
| 11 | 11 | ||
| 12 | #include <trace/events/bcache.h> | ||
| 13 | |||
| 12 | struct moving_io { | 14 | struct moving_io { |
| 13 | struct keybuf_key *w; | 15 | struct keybuf_key *w; |
| 14 | struct search s; | 16 | struct search s; |
| @@ -44,14 +46,14 @@ static void write_moving_finish(struct closure *cl) | |||
| 44 | { | 46 | { |
| 45 | struct moving_io *io = container_of(cl, struct moving_io, s.cl); | 47 | struct moving_io *io = container_of(cl, struct moving_io, s.cl); |
| 46 | struct bio *bio = &io->bio.bio; | 48 | struct bio *bio = &io->bio.bio; |
| 47 | struct bio_vec *bv = bio_iovec_idx(bio, bio->bi_vcnt); | 49 | struct bio_vec *bv; |
| 50 | int i; | ||
| 48 | 51 | ||
| 49 | while (bv-- != bio->bi_io_vec) | 52 | bio_for_each_segment_all(bv, bio, i) |
| 50 | __free_page(bv->bv_page); | 53 | __free_page(bv->bv_page); |
| 51 | 54 | ||
| 52 | pr_debug("%s %s", io->s.op.insert_collision | 55 | if (io->s.op.insert_collision) |
| 53 | ? "collision moving" : "moved", | 56 | trace_bcache_gc_copy_collision(&io->w->key); |
| 54 | pkey(&io->w->key)); | ||
| 55 | 57 | ||
| 56 | bch_keybuf_del(&io->s.op.c->moving_gc_keys, io->w); | 58 | bch_keybuf_del(&io->s.op.c->moving_gc_keys, io->w); |
| 57 | 59 | ||
| @@ -94,8 +96,6 @@ static void write_moving(struct closure *cl) | |||
| 94 | struct moving_io *io = container_of(s, struct moving_io, s); | 96 | struct moving_io *io = container_of(s, struct moving_io, s); |
| 95 | 97 | ||
| 96 | if (!s->error) { | 98 | if (!s->error) { |
| 97 | trace_bcache_write_moving(&io->bio.bio); | ||
| 98 | |||
| 99 | moving_init(io); | 99 | moving_init(io); |
| 100 | 100 | ||
| 101 | io->bio.bio.bi_sector = KEY_START(&io->w->key); | 101 | io->bio.bio.bi_sector = KEY_START(&io->w->key); |
| @@ -122,7 +122,6 @@ static void read_moving_submit(struct closure *cl) | |||
| 122 | struct moving_io *io = container_of(s, struct moving_io, s); | 122 | struct moving_io *io = container_of(s, struct moving_io, s); |
| 123 | struct bio *bio = &io->bio.bio; | 123 | struct bio *bio = &io->bio.bio; |
| 124 | 124 | ||
| 125 | trace_bcache_read_moving(bio); | ||
| 126 | bch_submit_bbio(bio, s->op.c, &io->w->key, 0); | 125 | bch_submit_bbio(bio, s->op.c, &io->w->key, 0); |
| 127 | 126 | ||
| 128 | continue_at(cl, write_moving, bch_gc_wq); | 127 | continue_at(cl, write_moving, bch_gc_wq); |
| @@ -138,7 +137,8 @@ static void read_moving(struct closure *cl) | |||
| 138 | /* XXX: if we error, background writeback could stall indefinitely */ | 137 | /* XXX: if we error, background writeback could stall indefinitely */ |
| 139 | 138 | ||
| 140 | while (!test_bit(CACHE_SET_STOPPING, &c->flags)) { | 139 | while (!test_bit(CACHE_SET_STOPPING, &c->flags)) { |
| 141 | w = bch_keybuf_next_rescan(c, &c->moving_gc_keys, &MAX_KEY); | 140 | w = bch_keybuf_next_rescan(c, &c->moving_gc_keys, |
| 141 | &MAX_KEY, moving_pred); | ||
| 142 | if (!w) | 142 | if (!w) |
| 143 | break; | 143 | break; |
| 144 | 144 | ||
| @@ -159,10 +159,10 @@ static void read_moving(struct closure *cl) | |||
| 159 | bio->bi_rw = READ; | 159 | bio->bi_rw = READ; |
| 160 | bio->bi_end_io = read_moving_endio; | 160 | bio->bi_end_io = read_moving_endio; |
| 161 | 161 | ||
| 162 | if (bch_bio_alloc_pages(bio, GFP_KERNEL)) | 162 | if (bio_alloc_pages(bio, GFP_KERNEL)) |
| 163 | goto err; | 163 | goto err; |
| 164 | 164 | ||
| 165 | pr_debug("%s", pkey(&w->key)); | 165 | trace_bcache_gc_copy(&w->key); |
| 166 | 166 | ||
| 167 | closure_call(&io->s.cl, read_moving_submit, NULL, &c->gc.cl); | 167 | closure_call(&io->s.cl, read_moving_submit, NULL, &c->gc.cl); |
| 168 | 168 | ||
| @@ -250,5 +250,5 @@ void bch_moving_gc(struct closure *cl) | |||
| 250 | 250 | ||
| 251 | void bch_moving_init_cache_set(struct cache_set *c) | 251 | void bch_moving_init_cache_set(struct cache_set *c) |
| 252 | { | 252 | { |
| 253 | bch_keybuf_init(&c->moving_gc_keys, moving_pred); | 253 | bch_keybuf_init(&c->moving_gc_keys); |
| 254 | } | 254 | } |
