X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fosd-zfs%2Fosd_quota.c;h=180d66ddac506d422241059290cd58a75ad73230;hb=4fb7805c408bd9d0b6409ffbc82aac501aaa025a;hp=8db1972a7c1af24fb39fe107363410c8bb3e71ad;hpb=ccabce23bd9e366c345c852f565766a799f61238;p=fs%2Flustre-release.git diff --git a/lustre/osd-zfs/osd_quota.c b/lustre/osd-zfs/osd_quota.c index 8db1972..180d66d 100644 --- a/lustre/osd-zfs/osd_quota.c +++ b/lustre/osd-zfs/osd_quota.c @@ -520,11 +520,20 @@ int osd_declare_quota(const struct lu_env *env, struct osd_device *osd, { struct osd_thread_info *info = osd_oti_get(env); struct lquota_id_info *qi = &info->oti_qi; - struct qsd_instance *qsd = osd->od_quota_slave; + struct qsd_instance *qsd = NULL; int rcu, rcg, rcp = 0; /* user & group & project rc */ - bool force = !!(osd_qid_declare_flags & OSD_QID_FORCE); + struct thandle *th = &oh->ot_super; + bool force = !!(osd_qid_declare_flags & OSD_QID_FORCE) || + th->th_ignore_quota; ENTRY; + if (osd_qid_declare_flags & OSD_QID_INODE) + qsd = osd->od_quota_slave_md; + else if (osd_qid_declare_flags & OSD_QID_BLK) + qsd = osd->od_quota_slave_dt; + else + RETURN(0); + if (unlikely(qsd == NULL)) /* quota slave instance hasn't been allocated yet */ RETURN(0);