From: Linus Torvalds Date: Sat, 13 Nov 2021 19:31:07 +0000 (-0800) Subject: Merge tag 'ceph-for-5.16-rc1' of git://github.com/ceph/ceph-client X-Git-Tag: baikal/aarch64/sdk6.1~5291 X-Git-Url: https://git.baikalelectronics.ru/sdk/?a=commitdiff_plain;h=5a5fb54ee5eca91790158b6af257cb3ba5d208cd;p=kernel.git Merge tag 'ceph-for-5.16-rc1' of git://github.com/ceph/ceph-client Pull ceph updates from Ilya Dryomov: "One notable change here is that async creates and unlinks introduced in 5.7 are now enabled by default. This should greatly speed up things like rm, tar and rsync. To opt out, wsync mount option can be used. Other than that we have a pile of bug fixes all across the filesystem from Jeff, Xiubo and Kotresh and a metrics infrastructure rework from Luis" * tag 'ceph-for-5.16-rc1' of git://github.com/ceph/ceph-client: ceph: add a new metric to keep track of remote object copies libceph, ceph: move ceph_osdc_copy_from() into cephfs code ceph: clean-up metrics data structures to reduce code duplication ceph: split 'metric' debugfs file into several files ceph: return the real size read when it hits EOF ceph: properly handle statfs on multifs setups ceph: shut down mount on bad mdsmap or fsmap decode ceph: fix mdsmap decode when there are MDS's beyond max_mds ceph: ignore the truncate when size won't change with Fx caps issued ceph: don't rely on error_string to validate blocklisted session. ceph: just use ci->i_version for fscache aux info ceph: shut down access to inode when async create fails ceph: refactor remove_session_caps_cb ceph: fix auth cap handling logic in remove_session_caps_cb ceph: drop private list from remove_session_caps_cb ceph: don't use -ESTALE as special return code in try_get_cap_refs ceph: print inode numbers instead of pointer values ceph: enable async dirops by default libceph: drop ->monmap and err initialization ceph: convert to noop_direct_IO --- 5a5fb54ee5eca91790158b6af257cb3ba5d208cd diff --cc fs/ceph/locks.c index d8c31069fbf2b,74c227d9abf56..d1f154aec249b --- a/fs/ceph/locks.c +++ b/fs/ceph/locks.c @@@ -302,7 -305,13 +305,10 @@@ int ceph_flock(struct file *file, int c if (!(fl->fl_flags & FL_FLOCK)) return -ENOLCK; - /* No mandatory locks */ - if (fl->fl_type & LOCK_MAND) - return -EOPNOTSUPP; + if (ceph_inode_is_shutdown(inode)) + return -ESTALE; + dout("ceph_flock, fl_file: %p\n", fl->fl_file); spin_lock(&ci->i_ceph_lock);