• Bob Peterson's avatar
    gfs2: eliminate GLF_QUEUED flag in favor of list_empty(gl_holders) · e2c6c8a7
    Bob Peterson authored
    Before this patch, glock.c maintained a flag, GLF_QUEUED, which indicated
    when a glock had a holder queued. It was only checked for inode glocks,
    although set and cleared by all glocks, and it was only used to determine
    whether the glock should be held for the minimum hold time before releasing.
    
    The problem is that the flag is not accurate at all. If a process holds
    the glock, the flag is set. When they dequeue the glock, it only cleared
    the flag in cases when the state actually changed. So if the state doesn't
    change, the flag may still be set, even when nothing is queued.
    
    This happens to iopen glocks often: the get held in SH, then the file is
    closed, but the glock remains in SH mode.
    
    We don't need a special flag to indicate this: we can simply tell whether
    the glock has any items queued to the holders queue. It's a waste of cpu
    time to maintain it.
    
    This patch eliminates the flag in favor of simply checking list_empty
    on the glock holders.
    Signed-off-by: default avatarBob Peterson <rpeterso@redhat.com>
    Signed-off-by: default avatarAndreas Gruenbacher <agruenba@redhat.com>
    e2c6c8a7
glock.c 64.3 KB