linux/net/ceph
Jeff Layton 58eb7932ae libceph: add an epoch_barrier field to struct ceph_osd_client
Cephfs can get cap update requests that contain a new epoch barrier in
them. When that happens we want to pause all OSD traffic until the right
map epoch arrives.

Add an epoch_barrier field to ceph_osd_client that is protected by the
osdc->lock rwsem. When the barrier is set, and the current OSD map
epoch is below that, pause the request target when submitting the
request or when revisiting it. Add a way for upper layers (cephfs)
to update the epoch_barrier as well.

If we get a new map, compare the new epoch against the barrier before
kicking requests and request another map if the map epoch is still lower
than the one we want.

If we get a map with a full pool, or at quota condition, then set the
barrier to the current epoch value.

Signed-off-by: Jeff Layton <jlayton@redhat.com>
Reviewed-by: Ilya Dryomov <idryomov@gmail.com>
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
2017-05-04 09:19:21 +02:00
..
crush crush: fix dprintk compilation 2017-02-23 22:22:02 +01:00
armor.c libceph: Fix base64-decoding when input ends in newline. 2011-03-15 09:14:02 -07:00
auth_none.c libceph: rename ceph_entity_name_encode() -> ceph_auth_entity_name_encode() 2016-08-24 23:49:15 +02:00
auth_none.h libceph: make authorizer destruction independent of ceph_auth_client 2016-04-25 20:54:13 +02:00
auth_x_protocol.h ceph: factor out libceph from Ceph file system 2010-10-20 15:37:28 -07:00
auth_x.c libceph: drop len argument of *verify_authorizer_reply() 2016-12-12 23:09:21 +01:00
auth_x.h libceph: rename and align ceph_x_authorizer::reply_buf 2016-12-12 23:09:19 +01:00
auth.c libceph: drop len argument of *verify_authorizer_reply() 2016-12-12 23:09:21 +01:00
buffer.c libceph: nuke ceph_kvfree() 2014-12-17 20:09:50 +03:00
ceph_common.c libceph: supported_features module parameter 2017-05-04 09:19:18 +02:00
ceph_fs.c libceph: fix legacy layout decode with pool 0 2016-11-10 20:13:08 +01:00
ceph_hash.c net: cleanup unsigned to unsigned int 2012-04-15 12:44:40 -04:00
ceph_strings.c rbd: support for exclusive-lock feature 2016-08-24 23:49:16 +02:00
cls_lock_client.c libceph, rbd, ceph: WRITE | ONDISK -> WRITE 2017-02-24 19:04:57 +01:00
crypto.c sched/headers: Prepare to move the memalloc_noio_*() APIs to <linux/sched/mm.h> 2017-03-02 08:42:33 +01:00
crypto.h libceph: stop allocating a new cipher on every crypto request 2016-12-12 23:09:20 +01:00
debugfs.c libceph: add an epoch_barrier field to struct ceph_osd_client 2017-05-04 09:19:21 +02:00
Kconfig libceph: select CRYPTO_CBC in addition to CRYPTO_AES 2014-10-14 21:03:20 +04:00
Makefile libceph: support for advisory locking on RADOS objects 2016-08-24 23:49:15 +02:00
messenger.c libceph: force GFP_NOIO for socket allocations 2017-03-23 12:03:36 +01:00
mon_client.c libceph: no need for GFP_NOFS in ceph_monc_init() 2016-12-12 23:09:21 +01:00
msgpool.c libceph: fix some missing includes 2016-07-28 02:55:35 +02:00
osd_client.c libceph: add an epoch_barrier field to struct ceph_osd_client 2017-05-04 09:19:21 +02:00
osdmap.c libceph: don't set weight to IN when OSD is destroyed 2017-03-07 14:30:38 +01:00
pagelist.c libceph: convert ceph_pagelist.refcnt from atomic_t to refcount_t 2017-05-04 09:19:19 +02:00
pagevec.c mm: replace get_user_pages_unlocked() write/force parameters with gup_flags 2016-10-18 14:13:37 -07:00
snapshot.c libceph: convert ceph_snap_context.nref from atomic_t to refcount_t 2017-05-04 09:19:18 +02:00
string_table.c libceph: using kfree_rcu() to simplify the code 2016-08-08 21:41:42 +02:00