linux/net/ceph
Ilya Dryomov ed24820d1b ceph: check POOL_FLAG_FULL/NEARFULL in addition to OSDMAP_FULL/NEARFULL
commit 7614209736 upstream.

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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-04-01 11:01:58 +02:00
..
crush crush: fix using plain integer as NULL warning 2018-08-13 17:55:44 +02:00
Kconfig treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
Makefile libceph: add ceph_decode_entity_addr 2019-07-08 14:01:43 +02:00
armor.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
auth.c libceph: add authorizer challenge 2018-08-02 21:33:24 +02:00
auth_none.c ceph: fix whitespace 2018-08-02 21:33:21 +02:00
auth_none.h ceph: fix whitespace 2018-08-02 21:33:21 +02:00
auth_x.c libceph: weaken sizeof check in ceph_x_verify_authorizer_reply() 2018-08-02 21:33:26 +02:00
auth_x.h ceph: fix whitespace 2018-08-02 21:33:21 +02:00
auth_x_protocol.h libceph: add authorizer challenge 2018-08-02 21:33:24 +02:00
buffer.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
ceph_common.c libceph: avoid a __vmalloc() deadlock in ceph_kvmalloc() 2019-09-16 12:06:25 +02:00
ceph_fs.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
ceph_hash.c ceph: mark expected switch fall-throughs 2017-11-13 12:11:39 +01:00
ceph_strings.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
cls_lock_client.c rbd: support for object-map and fast-diff 2019-07-08 14:01:45 +02:00
crypto.c libceph: don't call crypto_free_sync_skcipher() on a NULL tfm 2019-08-28 12:33:46 +02:00
crypto.h libceph: Remove VLA usage of skcipher 2018-09-28 12:46:07 +08:00
debugfs.c ceph: no need to check return value of debugfs_create functions 2019-07-03 16:57:18 +02:00
decode.c libceph: use TYPE_LEGACY for entity addrs instead of TYPE_NONE 2019-07-08 14:01:43 +02:00
messenger.c libceph: add function that reset client's entity addr 2019-09-16 12:06:23 +02:00
mon_client.c libceph: add function that reset client's entity addr 2019-09-16 12:06:23 +02:00
msgpool.c libceph: preallocate message data items 2018-10-22 10:28:22 +02:00
osd_client.c libceph: drop unused con parameter of calc_target() 2019-09-16 12:06:25 +02:00
osdmap.c ceph: check POOL_FLAG_FULL/NEARFULL in addition to OSDMAP_FULL/NEARFULL 2020-04-01 11:01:58 +02:00
pagelist.c libceph: introduce ceph_pagelist_alloc() 2018-10-22 10:28:21 +02:00
pagevec.c libceph: remove ceph_get_direct_page_vector() 2019-07-08 14:01:40 +02:00
snapshot.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 268 2019-06-05 17:30:29 +02:00
string_table.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
striper.c rbd: support for object-map and fast-diff 2019-07-08 14:01:45 +02:00