• Andreas Gruenbacher's avatar
    gfs2: do_xmote fixes · 9947a06d
    Andreas Gruenbacher authored
    Function do_xmote() is called with the glock spinlock held.  Commit
    86934198 added a 'goto skip_inval' statement at the beginning of the
    function to further below where the glock spinlock is expected not to be
    held anymore.  Then it added code there that requires the glock spinlock
    to be held.  This doesn't make sense; fix this up by dropping and
    retaking the spinlock where needed.
    
    In addition, when ->lm_lock() returned an error, do_xmote() didn't fail
    the locking operation, and simply left the glock hanging; fix that as
    well.  (This is a much older error.)
    
    Fixes: 86934198 ("gfs2: Clear flags when withdraw prevents xmote")
    Signed-off-by: default avatarAndreas Gruenbacher <agruenba@redhat.com>
    9947a06d
glock.c 74.9 KB