Merge branch 'for-3.10/core' of git://git.kernel.dk/linux-block
[platform/adaptation/renesas_rcar/renesas_kernel.git] / fs / gfs2 / lops.c
index a505597..c5fa758 100644 (file)
@@ -53,8 +53,8 @@ void gfs2_pin(struct gfs2_sbd *sdp, struct buffer_head *bh)
         * to in-place disk block, remove it from the AIL.
         */
        spin_lock(&sdp->sd_ail_lock);
-       if (bd->bd_ail)
-               list_move(&bd->bd_ail_st_list, &bd->bd_ail->ai_ail2_list);
+       if (bd->bd_tr)
+               list_move(&bd->bd_ail_st_list, &bd->bd_tr->tr_ail2_list);
        spin_unlock(&sdp->sd_ail_lock);
        get_bh(bh);
        atomic_inc(&sdp->sd_log_pinned);
@@ -94,7 +94,7 @@ static void maybe_release_space(struct gfs2_bufdata *bd)
  */
 
 static void gfs2_unpin(struct gfs2_sbd *sdp, struct buffer_head *bh,
-                      struct gfs2_ail *ai)
+                      struct gfs2_trans *tr)
 {
        struct gfs2_bufdata *bd = bh->b_private;
 
@@ -109,7 +109,7 @@ static void gfs2_unpin(struct gfs2_sbd *sdp, struct buffer_head *bh,
                maybe_release_space(bd);
 
        spin_lock(&sdp->sd_ail_lock);
-       if (bd->bd_ail) {
+       if (bd->bd_tr) {
                list_del(&bd->bd_ail_st_list);
                brelse(bh);
        } else {
@@ -117,8 +117,8 @@ static void gfs2_unpin(struct gfs2_sbd *sdp, struct buffer_head *bh,
                list_add(&bd->bd_ail_gl_list, &gl->gl_ail_list);
                atomic_inc(&gl->gl_ail_count);
        }
-       bd->bd_ail = ai;
-       list_add(&bd->bd_ail_st_list, &ai->ai_ail1_list);
+       bd->bd_tr = tr;
+       list_add(&bd->bd_ail_st_list, &tr->tr_ail1_list);
        spin_unlock(&sdp->sd_ail_lock);
 
        clear_bit(GLF_LFLUSH, &bd->bd_gl->gl_flags);
@@ -300,7 +300,7 @@ static struct bio *gfs2_log_get_bio(struct gfs2_sbd *sdp, u64 blkno)
        u64 nblk;
 
        if (bio) {
-               nblk = bio->bi_sector + bio_sectors(bio);
+               nblk = bio_end_sector(bio);
                nblk >>= sdp->sd_fsb2bb_shift;
                if (blkno == nblk)
                        return bio;
@@ -480,17 +480,22 @@ static void buf_lo_before_commit(struct gfs2_sbd *sdp)
                           &sdp->sd_log_le_buf, 0);
 }
 
-static void buf_lo_after_commit(struct gfs2_sbd *sdp, struct gfs2_ail *ai)
+static void buf_lo_after_commit(struct gfs2_sbd *sdp, struct gfs2_trans *tr)
 {
        struct list_head *head = &sdp->sd_log_le_buf;
        struct gfs2_bufdata *bd;
 
+       if (tr == NULL) {
+               gfs2_assert(sdp, list_empty(head));
+               return;
+       }
+
        while (!list_empty(head)) {
                bd = list_entry(head->next, struct gfs2_bufdata, bd_list);
                list_del_init(&bd->bd_list);
                sdp->sd_log_num_buf--;
 
-               gfs2_unpin(sdp, bd->bd_bh, ai);
+               gfs2_unpin(sdp, bd->bd_bh, tr);
        }
        gfs2_assert_warn(sdp, !sdp->sd_log_num_buf);
 }
@@ -613,7 +618,7 @@ static void revoke_lo_before_commit(struct gfs2_sbd *sdp)
        gfs2_log_write_page(sdp, page);
 }
 
-static void revoke_lo_after_commit(struct gfs2_sbd *sdp, struct gfs2_ail *ai)
+static void revoke_lo_after_commit(struct gfs2_sbd *sdp, struct gfs2_trans *tr)
 {
        struct list_head *head = &sdp->sd_log_le_revoke;
        struct gfs2_bufdata *bd;
@@ -791,16 +796,21 @@ static void databuf_lo_after_scan(struct gfs2_jdesc *jd, int error, int pass)
                jd->jd_jid, sdp->sd_replayed_blocks, sdp->sd_found_blocks);
 }
 
-static void databuf_lo_after_commit(struct gfs2_sbd *sdp, struct gfs2_ail *ai)
+static void databuf_lo_after_commit(struct gfs2_sbd *sdp, struct gfs2_trans *tr)
 {
        struct list_head *head = &sdp->sd_log_le_databuf;
        struct gfs2_bufdata *bd;
 
+       if (tr == NULL) {
+               gfs2_assert(sdp, list_empty(head));
+               return;
+       }
+
        while (!list_empty(head)) {
                bd = list_entry(head->next, struct gfs2_bufdata, bd_list);
                list_del_init(&bd->bd_list);
                sdp->sd_log_num_databuf--;
-               gfs2_unpin(sdp, bd->bd_bh, ai);
+               gfs2_unpin(sdp, bd->bd_bh, tr);
        }
        gfs2_assert_warn(sdp, !sdp->sd_log_num_databuf);
 }