ceph: don't WARN when removing caps due to blocklisting
authorJeff Layton <jlayton@kernel.org>
Fri, 25 Sep 2020 13:27:09 +0000 (09:27 -0400)
committerIlya Dryomov <idryomov@gmail.com>
Mon, 14 Dec 2020 22:21:46 +0000 (23:21 +0100)
We expect to remove dirty caps when the client is blocklisted. Don't
throw a warning in that case.

[ idryomov: break unnecessarily long line ]

Signed-off-by: Jeff Layton <jlayton@kernel.org>
Reviewed-by: Xiubo Li <xiubli@redhat.com>
Reviewed-by: "Yan, Zheng" <zyan@redhat.com>
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
fs/ceph/caps.c

index ded4229..8552d10 100644 (file)
@@ -1149,7 +1149,8 @@ void __ceph_remove_cap(struct ceph_cap *cap, bool queue_release)
        /* remove from inode's cap rbtree, and clear auth cap */
        rb_erase(&cap->ci_node, &ci->i_caps);
        if (ci->i_auth_cap == cap) {
-               WARN_ON_ONCE(!list_empty(&ci->i_dirty_item));
+               WARN_ON_ONCE(!list_empty(&ci->i_dirty_item) &&
+                            !mdsc->fsc->blocklisted);
                ci->i_auth_cap = NULL;
        }