• Andreas Gruenbacher's avatar
    gfs2: Add some missing quota locking · d5563f42
    Andreas Gruenbacher authored
    The quota code is missing some locking between local quota changes and
    syncing those quota changes to the global quota file (gfs2_quota_sync);
    in particular, qd->qd_change needs to be kept in sync with the
    QDF_CHANGE change flag and the number of references held.  Use the
    qd->qd_lockref.lock spinlock for that.
    
    With the qd->qd_lockref.lock spinlock held, we can no longer call
    lockref_get(), so turn qd_hold() into a variant that assumes that the
    lock is held.  This function is really supposed to take an additional
    reference when one or more references are already held, so check for
    that instead of checking if the lockref is dead.
    Signed-off-by: default avatarAndreas Gruenbacher <agruenba@redhat.com>
    d5563f42
quota.c 44 KB