On 11/15, Jeff Liu wrote:
>
> @@ -441,13 +441,9 @@ static unsigned int current_tail(struct gfs2_sbd *sdp)
>  
>       spin_lock(&sdp->sd_ail_lock);
>  
> -     if (list_empty(&sdp->sd_ail1_list)) {
> -             tail = sdp->sd_log_head;
> -     } else {
> -             tr = list_entry(sdp->sd_ail1_list.prev, struct gfs2_trans,
> -                             tr_list);
> -             tail = tr->tr_first;
> -     }
> +     tr = list_last_entry_or_null(&sdp->sd_ail1_list, struct gfs2_trans,
> +                                  tr_list);
> +     tail = tr ? tr->tr_first : sdp->sd_log_head;
>  

Personally I agree with Steven. At least in this case
list_last_entry_or_null() doesn't really help to simplify the code.

But probably list_last_entry() makes sense in the "else" branch,
athough this is minor.


Off-topic. Not sure this really makes sense, but I was thinking about

        list_get_first(pos, head, member)       \
                ((pos) = list_first_entry(head, typeof(*pos), member))

and list_get_first() last of course. The obvious advantage is that
compared to

        tr = list_last_entry(sdp->sd_ail1_list, struct gfs2_trans, tr_list);

above you do not need to type "struct gfs2_trans",

        list_get_last(tr, sdp->sd_ail1_list, tr_list);

looks a bit better.

Oleg.


------------------------------------------------------------------------------
DreamFactory - Open Source REST & JSON Services for HTML5 & Native Apps
OAuth, Users, Roles, SQL, NoSQL, BLOB Storage and External API Access
Free app hosting. Or install the open source package on any LAMP server.
Sign up and see examples for AngularJS, jQuery, Sencha Touch and Native!
http://pubads.g.doubleclick.net/gampad/clk?id=63469471&iu=/4140/ostg.clktrk
_______________________________________________
Jfs-discussion mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jfs-discussion

Reply via email to