These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / drivers / md / bcache / journal.c
index fe080ad..29eba72 100644 (file)
@@ -24,7 +24,7 @@
  * bit.
  */
 
-static void journal_read_endio(struct bio *bio, int error)
+static void journal_read_endio(struct bio *bio)
 {
        struct closure *cl = bio->bi_private;
        closure_put(cl);
@@ -61,7 +61,7 @@ reread:               left = ca->sb.bucket_size - offset;
                bio->bi_private = &cl;
                bch_bio_map(bio, data);
 
-               closure_bio_submit(bio, &cl, ca);
+               closure_bio_submit(bio, &cl);
                closure_sync(&cl);
 
                /* This function could be simpler now since we no longer write
@@ -157,7 +157,7 @@ int bch_journal_read(struct cache_set *c, struct list_head *list)
 
        for_each_cache(ca, c, iter) {
                struct journal_device *ja = &ca->journal;
-               unsigned long bitmap[SB_JOURNAL_BUCKETS / BITS_PER_LONG];
+               DECLARE_BITMAP(bitmap, SB_JOURNAL_BUCKETS);
                unsigned i, l, r, m;
                uint64_t seq;
 
@@ -401,7 +401,7 @@ retry:
 
 #define last_seq(j)    ((j)->seq - fifo_used(&(j)->pin) + 1)
 
-static void journal_discard_endio(struct bio *bio, int error)
+static void journal_discard_endio(struct bio *bio)
 {
        struct journal_device *ja =
                container_of(bio, struct journal_device, discard_bio);
@@ -547,11 +547,11 @@ void bch_journal_next(struct journal *j)
                pr_debug("journal_pin full (%zu)", fifo_used(&j->pin));
 }
 
-static void journal_write_endio(struct bio *bio, int error)
+static void journal_write_endio(struct bio *bio)
 {
        struct journal_write *w = bio->bi_private;
 
-       cache_set_err_on(error, w->c, "journal io error");
+       cache_set_err_on(bio->bi_error, w->c, "journal io error");
        closure_put(&w->c->journal.io);
 }
 
@@ -592,12 +592,14 @@ static void journal_write_unlocked(struct closure *cl)
 
        if (!w->need_write) {
                closure_return_with_destructor(cl, journal_write_unlock);
+               return;
        } else if (journal_full(&c->journal)) {
                journal_reclaim(c);
                spin_unlock(&c->journal.lock);
 
                btree_flush_write(c);
                continue_at(cl, journal_write, system_wq);
+               return;
        }
 
        c->journal.blocks_free -= set_blocks(w->data, block_bytes(c));
@@ -646,7 +648,7 @@ static void journal_write_unlocked(struct closure *cl)
        spin_unlock(&c->journal.lock);
 
        while ((bio = bio_list_pop(&list)))
-               closure_bio_submit(bio, cl, c->cache[0]);
+               closure_bio_submit(bio, cl);
 
        continue_at(cl, journal_write_done, NULL);
 }