• Bob Peterson's avatar
    Revert "gfs2: eliminate tr_num_revoke_rm" · a31b4ec5
    Bob Peterson authored
    This reverts commit e955537e.
    
    Before patch e955537e, tr_num_revoke tracked the number of revokes
    added to the transaction, and tr_num_revoke_rm tracked how many
    revokes were removed. But since revokes are queued off the sdp
    (superblock) pointer, some transactions could remove more revokes
    than they added. (e.g. revokes added by a different process).
    Commit e955537e eliminated transaction variable tr_num_revoke_rm,
    but in order to do so, it changed the accounting to always use
    tr_num_revoke for its math. Since you can remove more revokes than
    you add, tr_num_revoke could now become a negative value.
    This negative value broke the assert in function gfs2_trans_end:
    
    	if (gfs2_assert_withdraw(sdp, (nbuf <=3D tr->tr_blocks) &&
    			       (tr->tr_num_revoke <=3D tr->tr_revokes)))
    
    One way to fix this is to simply remove the tr_num_revoke clause
    from the assert and allow the value to become negative. Andreas
    didn't like that idea, so instead, we decided to revert e955537e.
    Signed-off-by: default avatarBob Peterson <rpeterso@redhat.com>
    Signed-off-by: default avatarAndreas Gruenbacher <agruenba@redhat.com>
    a31b4ec5
trans.c 6.99 KB