diff options
author | Xiubo Li <xiubli@redhat.com> | 2024-01-17 12:42:11 +0800 |
---|---|---|
committer | Ilya Dryomov <idryomov@gmail.com> | 2024-03-18 22:03:29 +0100 |
commit | 09927e7ef11fe65a9cc38b6f74a9d6dba31c8c25 (patch) | |
tree | c89b2f99b23cab545520c31cc7601ee56d428d1a /fs/ceph | |
parent | e8f897f4afef0031fe618a8e94127a0934896aba (diff) |
ceph: break the check delayed cap loop every 5s
In some cases this may take a long time and will block renewing
the caps to MDS.
[ idryomov: massage comment ]
Link: https://tracker.ceph.com/issues/50223#note-21
Signed-off-by: Xiubo Li <xiubli@redhat.com>
Reviewed-by: Ilya Dryomov <idryomov@gmail.com>
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Diffstat (limited to 'fs/ceph')
-rw-r--r-- | fs/ceph/caps.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/fs/ceph/caps.c b/fs/ceph/caps.c index 7fb4aae97412..55051ad09c19 100644 --- a/fs/ceph/caps.c +++ b/fs/ceph/caps.c @@ -4634,6 +4634,14 @@ unsigned long ceph_check_delayed_caps(struct ceph_mds_client *mdsc) iput(inode); spin_lock(&mdsc->cap_delay_lock); } + + /* + * Make sure too many dirty caps or general + * slowness doesn't block mdsc delayed work, + * preventing send_renew_caps() from running. + */ + if (jiffies - loop_start >= 5 * HZ) + break; } spin_unlock(&mdsc->cap_delay_lock); doutc(cl, "done\n"); |