X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fquota%2Fquota_internal.h;h=abb83b830a42b425a7d1e326dc91a0894a33823f;hb=995342ab73da4ac8e364f90d2b26a88a5eef4801;hp=65e89b02bc3923a82ede26b39d18f728fb6f41af;hpb=381c9794747d0257ba15f34d2cc740fbde4fcd17;p=fs%2Flustre-release.git diff --git a/lustre/quota/quota_internal.h b/lustre/quota/quota_internal.h index 65e89b0..abb83b8 100644 --- a/lustre/quota/quota_internal.h +++ b/lustre/quota/quota_internal.h @@ -87,7 +87,7 @@ #define LQS_DEBUG(lqs, fmt, arg...) \ CDEBUG(D_QUOTA, "lqs(%p) id(%u) flag(%lu) type(%c) bunit(%lu) " \ "btune(%lu) iunit(%lu) itune(%lu) lqs_bwrite_pending(%lu) " \ - "lqs_iwrite_pending(%lu) ino_rec("LPD64") blk_rec("LPD64" )" \ + "lqs_iwrite_pending(%lu) ino_rec(%llu) blk_rec(%llu)" \ "refcount(%d): " \ fmt, lqs, lqs->lqs_id, lqs->lqs_flags, \ LQS_IS_GRP(lqs) ? 'g' : 'u', \ @@ -115,6 +115,9 @@ int compute_remquota(struct obd_device *obd, int isblk); int check_qm(struct lustre_quota_ctxt *qctxt); void dqacq_interrupt(struct lustre_quota_ctxt *qctxt); +void* quota_barrier(struct lustre_quota_ctxt *qctxt, + struct obd_quotactl *oqctl, int isblk); +void quota_unbarrier(void *handle); /* quota_master.c */ int lustre_dquot_init(void); void lustre_dquot_exit(void); @@ -124,8 +127,10 @@ int mds_quota_adjust(struct obd_device *obd, unsigned int qcids[], int filter_quota_adjust(struct obd_device *obd, unsigned int qcids[], unsigned int qpids[], int rc, int opc); int init_admin_quotafiles(struct obd_device *obd, struct obd_quotactl *oqctl); -int mds_quota_get_version(struct obd_device *obd, lustre_quota_version_t *ver); -int mds_quota_set_version(struct obd_device *obd, lustre_quota_version_t ver); +int mds_quota_get_version(struct obd_device *obd, lustre_quota_version_t *aver, + lustre_quota_version_t *over); +int mds_quota_set_version(struct obd_device *obd, lustre_quota_version_t aver, + lustre_quota_version_t over); int mds_quota_invalidate(struct obd_device *obd, struct obd_quotactl *oqctl); int mds_quota_finvalidate(struct obd_device *obd, struct obd_quotactl *oqctl); @@ -153,17 +158,12 @@ int target_quota_check(struct obd_export *exp, struct obd_quotactl *oqctl); int quota_adjust_slave_lqs(struct quota_adjust_qunit *oqaq, struct lustre_quota_ctxt *qctxt); -void qdata_to_oqaq(struct qunit_data *qdata, - struct quota_adjust_qunit *oqaq); #ifdef __KERNEL__ -int quota_search_lqs(struct qunit_data *qdata, - struct quota_adjust_qunit *oqaq, - struct lustre_quota_ctxt *qctxt, - struct lustre_qunit_size **lqs_return); -int quota_create_lqs(struct qunit_data *qdata, - struct quota_adjust_qunit *oqaq, - struct lustre_quota_ctxt *qctxt, - struct lustre_qunit_size **lqs_return); +int quota_is_set(struct obd_device *obd, unsigned int uid, + unsigned int gid, int flag); +struct lustre_qunit_size *quota_search_lqs(unsigned long long lqs_key, + struct lustre_quota_ctxt *qctxt, + int create); void quota_compute_lqs(struct qunit_data *qdata, struct lustre_qunit_size *lqs, int is_chk, int is_acq); @@ -177,6 +177,7 @@ int filter_quota_adjust_qunit(struct obd_export *exp, struct lustre_quota_ctxt *qctxt); int lquota_proc_setup(struct obd_device *obd, int is_master); int lquota_proc_cleanup(struct lustre_quota_ctxt *qctxt); +void build_lqs(struct obd_device *obd); extern cfs_proc_dir_entry_t *lquota_type_proc_dir; #endif @@ -186,6 +187,8 @@ extern cfs_proc_dir_entry_t *lquota_type_proc_dir; #define LQS_INO_DECREASE 4 #define LQS_INO_INCREASE 8 +/* the return status of quota operation */ +#define QUOTA_REQ_RETURNED 1 #endif int client_quota_adjust_qunit(struct obd_export *exp, @@ -199,4 +202,18 @@ int lov_quota_ctl(struct obd_export *exp, struct obd_quotactl *oqctl); int client_quota_check(struct obd_export *exp, struct obd_quotactl *oqctl); int lov_quota_check(struct obd_export *exp, struct obd_quotactl *oqctl); int client_quota_poll_check(struct obd_export *exp, struct if_quotacheck *qchk); + +static inline int client_quota_recoverable_error(int rc) +{ + return (rc == -ETIMEDOUT || rc == -EAGAIN); +} + +static inline int client_quota_should_resend(int resend, struct client_obd *cli) +{ + return atomic_read(&cli->cl_quota_resends) ? + atomic_read(&cli->cl_quota_resends) > resend : 1; +} + +int generic_quota_on(struct obd_device *obd, struct obd_quotactl *oqctl, + int global); #endif