Whamcloud - gitweb
LU-16339 quota: notify OSTs until lge_qunit_nu is set
authorSergey Cheremencev <sergey.cheremencev@hpe.com>
Wed, 9 Feb 2022 11:53:51 +0000 (14:53 +0300)
committerAndreas Dilger <adilger@whamcloud.com>
Mon, 29 Jan 2024 08:55:53 +0000 (08:55 +0000)
commit6384c18bcc8562e0773c32454bc28331aa629c82
treef42fd16a64a09cfd65bbfede79606b7c6e896cae
parentfe9235a0105a3d0018c16a7fa750038781249bd2
LU-16339 quota: notify OSTs until lge_qunit_nu is set

There is a window when locks are not granted yet, but
lqe is set to qmt_reba_list to send updates to OSTs.

t1: lqe_init()->qmt_setup_lqe_gd->qmt_seed_glbe()
t1: lqe_init()->qmt_setup_lqe_gd->qmt_id_lock_notify()
t2: qmt_glimpse_lock() lustre-QMT0000: no granted locks to send glimpse
t1: ldlm_lock_enqueue()->ldlm_granted_list_add_lock() ...

If lge_qunit_nu was set to 1 in qmt_seed_glbe and appropriate qunit
is equal to the least_qunit, new qunit won't be sent to OSTs
and finally lqe_revoke will not be set causing endless -115 errors.
The fix calls qmt_id_lock_notify into qmt_dqacq0 for an lqe that has
set lge_qunit_nu or lge_edquot_nu.

Add test 85 into sanity-quota to check that write
doesn't hung if qunit initial value is equal to
the least_qunit due to small block hard limit.

HPE-bug-id: LUS-10711
Change-Id: Icd1ac29beab87c0ebf00bcb20b25c33b771b74c1
Lustre-change: https://review.whamcloud.com/49228
Lustre-commit: 6c0b4329d046de283eeb254fca561be9386df68a
Signed-off-by: Sergey Cheremencev <sergey.cheremencev@hpe.com>
Reviewed-on: https://review.whamcloud.com/c/ex/lustre-release/+/53778
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
lustre/quota/qmt_entry.c
lustre/quota/qmt_handler.c
lustre/quota/qmt_internal.h
lustre/quota/qmt_lock.c
lustre/quota/qmt_pool.c
lustre/tests/sanity-quota.sh