mirror of
https://github.com/ceph/ceph
synced 2025-03-07 16:58:39 +00:00
mds: broadcast quota message to client when disable quota
When disable quota by setting quota.max_files or quota.max_bytes to zero, client does not receive the quota broadcast message. Signed-off-by: Junhui Tang <tangjunhui@sangfor.com.cn> Fixes: https://tracker.ceph.com/issues/38054
This commit is contained in:
parent
578f7e082e
commit
061ace2eb7
@ -1990,7 +1990,7 @@ void MDCache::project_rstat_frag_to_inode(nest_info_t& rstat, nest_info_t& accou
|
||||
}
|
||||
}
|
||||
|
||||
void MDCache::broadcast_quota_to_client(CInode *in, client_t exclude_ct)
|
||||
void MDCache::broadcast_quota_to_client(CInode *in, client_t exclude_ct, bool quota_change)
|
||||
{
|
||||
if (!(mds->is_active() || mds->is_stopping()))
|
||||
return;
|
||||
@ -1999,7 +1999,9 @@ void MDCache::broadcast_quota_to_client(CInode *in, client_t exclude_ct)
|
||||
return;
|
||||
|
||||
auto i = in->get_projected_inode();
|
||||
if (!i->quota.is_enable())
|
||||
|
||||
if (!i->quota.is_enable() &&
|
||||
!quota_change)
|
||||
return;
|
||||
|
||||
// creaete snaprealm for quota inode (quota was set before mimic)
|
||||
|
@ -399,7 +399,7 @@ public:
|
||||
void project_rstat_frag_to_inode(nest_info_t& rstat, nest_info_t& accounted_rstat,
|
||||
snapid_t ofirst, snapid_t last,
|
||||
CInode *pin, bool cow_head);
|
||||
void broadcast_quota_to_client(CInode *in, client_t exclude_ct = -1);
|
||||
void broadcast_quota_to_client(CInode *in, client_t exclude_ct = -1, bool quota_change = false);
|
||||
void predirty_journal_parents(MutationRef mut, EMetaBlob *blob,
|
||||
CInode *in, CDir *parent,
|
||||
int flags, int linkunlink=0,
|
||||
|
@ -5194,7 +5194,7 @@ void Server::handle_set_vxattr(MDRequestRef& mdr, CInode *cur,
|
||||
pip = &pi.inode;
|
||||
|
||||
client_t exclude_ct = mdr->get_client();
|
||||
mdcache->broadcast_quota_to_client(cur, exclude_ct);
|
||||
mdcache->broadcast_quota_to_client(cur, exclude_ct, true);
|
||||
} else if (name.find("ceph.dir.pin") == 0) {
|
||||
if (!cur->is_dir() || cur->is_root()) {
|
||||
respond_to_request(mdr, -EINVAL);
|
||||
|
Loading…
Reference in New Issue
Block a user