}
}
-static bool qd_changed(struct gfs2_sbd *sdp)
-{
- struct gfs2_quota_data *qd;
- bool changed = false;
-
- spin_lock(&qd_lock);
- list_for_each_entry(qd, &sdp->sd_quota_list, qd_list) {
- spin_lock(&qd->qd_lockref.lock);
- changed = !test_bit(QDF_LOCKED, &qd->qd_flags) &&
- test_bit(QDF_CHANGE, &qd->qd_flags);
- spin_unlock(&qd->qd_lockref.lock);
- if (changed)
- break;
- }
- spin_unlock(&qd_lock);
- return changed;
-}
-
int gfs2_quota_sync(struct super_block *sb, int type)
{
struct gfs2_sbd *sdp = sb->s_fs_info;
if (sb_rdonly(sdp->sd_vfs))
return 0;
- if (!qd_changed(sdp))
- return 0;
qda = kcalloc(max_qd, sizeof(struct gfs2_quota_data *), GFP_KERNEL);
if (!qda)