linux/fs/ceph
Ilya Dryomov 7614209736 ceph: check POOL_FLAG_FULL/NEARFULL in addition to OSDMAP_FULL/NEARFULL
CEPH_OSDMAP_FULL/NEARFULL aren't set since mimic, so we need to consult
per-pool flags as well.  Unfortunately the backwards compatibility here
is lacking:

- the change that deprecated OSDMAP_FULL/NEARFULL went into mimic, but
  was guarded by require_osd_release >= RELEASE_LUMINOUS
- it was subsequently backported to luminous in v12.2.2, but that makes
  no difference to clients that only check OSDMAP_FULL/NEARFULL because
  require_osd_release is not client-facing -- it is for OSDs

Since all kernels are affected, the best we can do here is just start
checking both map flags and pool flags and send that to stable.

These checks are best effort, so take osdc->lock and look up pool flags
just once.  Remove the FIXME, since filesystem quotas are checked above
and RADOS quotas are reflected in POOL_FLAG_FULL: when the pool reaches
its quota, both POOL_FLAG_FULL and POOL_FLAG_FULL_QUOTA are set.

Cc: stable@vger.kernel.org
Reported-by: Yanhu Cao <gmayyyha@gmail.com>
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Reviewed-by: Jeff Layton <jlayton@kernel.org>
Acked-by: Sage Weil <sage@redhat.com>
2020-03-23 13:07:08 +01:00
..
acl.c ceph: remove unnecessary assignment in ceph_pre_init_acls() 2020-01-27 16:53:39 +01:00
addr.c ceph: use release_pages() directly 2019-09-16 12:06:25 +02:00
cache.c ceph: use errorfc() and friends instead of spelling the prefix out 2020-02-07 14:48:39 -05:00
cache.h libceph, rbd, ceph: convert to use the new mount API 2019-11-27 22:28:37 +01:00
caps.c ceph: only touch the caps which have the subset mask requested 2020-01-27 16:53:39 +01:00
ceph_frag.c
debugfs.c ceph: add possible_max_rank and make the code more readable 2020-01-27 16:53:40 +01:00
dir.c ceph: print dentry offset in hex and fix xattr_version type 2020-01-27 16:53:39 +01:00
export.c ceph: move static keyword to the front of declarations 2019-09-16 12:06:25 +02:00
file.c ceph: check POOL_FLAG_FULL/NEARFULL in addition to OSDMAP_FULL/NEARFULL 2020-03-23 13:07:08 +01:00
inode.c ceph: don't clear I_NEW until inode metadata is fully populated 2020-01-27 16:53:39 +01:00
io.c ceph: add buffered/direct exclusionary locking for reads and writes 2019-09-16 12:06:25 +02:00
io.h ceph: add buffered/direct exclusionary locking for reads and writes 2019-09-16 12:06:25 +02:00
ioctl.c
ioctl.h
Kconfig ceph: add selinux support 2019-07-08 14:01:42 +02:00
locks.c ceph: return -EIO if read/write against filp that lost file locks 2019-09-16 12:06:24 +02:00
Makefile ceph: move net/ceph/ceph_fs.c to fs/ceph/util.c 2020-01-27 16:53:40 +01:00
mds_client.c We have: 2020-02-06 12:21:01 +00:00
mds_client.h ceph: close holes in structs ceph_mds_session and ceph_mds_request 2020-01-27 16:53:40 +01:00
mdsmap.c ceph: add possible_max_rank and make the code more readable 2020-01-27 16:53:40 +01:00
quota.c ceph: fix infinite loop in get_quota_realm() 2019-07-08 14:01:42 +02:00
snap.c ceph: fix buffer free while holding i_ceph_lock in __ceph_build_xattrs_blob() 2019-08-22 10:47:41 +02:00
strings.c
super.c ceph: noacl mount option is effectively ignored 2020-02-11 17:04:40 +01:00
super.h ceph: canonicalize server path in place 2020-02-11 17:04:40 +01:00
util.c ceph: move net/ceph/ceph_fs.c to fs/ceph/util.c 2020-01-27 16:53:40 +01:00
xattr.c ceph: print name of xattr in __ceph_{get,set}xattr() douts 2020-01-27 16:53:40 +01:00