gfs2: Clean up ail2_empty
authorAndreas Gruenbacher <agruenba@redhat.com>
Fri, 11 Dec 2020 13:45:23 +0000 (14:45 +0100)
committerAndreas Gruenbacher <agruenba@redhat.com>
Tue, 19 Jan 2021 20:17:50 +0000 (21:17 +0100)
Clean up the logic in ail2_empty (no functional change).

Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
fs/gfs2/log.c

index 7375c00..e4dc23a 100644 (file)
@@ -367,29 +367,33 @@ static void gfs2_ail_empty_tr(struct gfs2_sbd *sdp, struct gfs2_trans *tr,
        }
 }
 
+static void __ail2_empty(struct gfs2_sbd *sdp, struct gfs2_trans *tr)
+{
+       gfs2_ail_empty_tr(sdp, tr, &tr->tr_ail2_list);
+       list_del(&tr->tr_list);
+       gfs2_assert_warn(sdp, list_empty(&tr->tr_ail1_list));
+       gfs2_assert_warn(sdp, list_empty(&tr->tr_ail2_list));
+       gfs2_trans_free(sdp, tr);
+}
+
 static void ail2_empty(struct gfs2_sbd *sdp, unsigned int new_tail)
 {
-       struct gfs2_trans *tr, *safe;
+       struct list_head *ail2_list = &sdp->sd_ail2_list;
        unsigned int old_tail = sdp->sd_log_tail;
-       int wrap = (new_tail < old_tail);
-       int a, b, rm;
+       struct gfs2_trans *tr, *safe;
 
        spin_lock(&sdp->sd_ail_lock);
-
-       list_for_each_entry_safe(tr, safe, &sdp->sd_ail2_list, tr_list) {
-               a = (old_tail <= tr->tr_first);
-               b = (tr->tr_first < new_tail);
-               rm = (wrap) ? (a || b) : (a && b);
-               if (!rm)
-                       continue;
-
-               gfs2_ail_empty_tr(sdp, tr, &tr->tr_ail2_list);
-               list_del(&tr->tr_list);
-               gfs2_assert_warn(sdp, list_empty(&tr->tr_ail1_list));
-               gfs2_assert_warn(sdp, list_empty(&tr->tr_ail2_list));
-               gfs2_trans_free(sdp, tr);
+       if (old_tail <= new_tail) {
+               list_for_each_entry_safe(tr, safe, ail2_list, tr_list) {
+                       if (old_tail <= tr->tr_first && tr->tr_first < new_tail)
+                               __ail2_empty(sdp, tr);
+               }
+       } else {
+               list_for_each_entry_safe(tr, safe, ail2_list, tr_list) {
+                       if (old_tail <= tr->tr_first || tr->tr_first < new_tail)
+                               __ail2_empty(sdp, tr);
+               }
        }
-
        spin_unlock(&sdp->sd_ail_lock);
 }