original_kernel/net/ceph
Ilya Dryomov 29a0cfbf91 libceph: don't allow bidirectional swap of pg-upmap-items
This reverts most of commit f53b7665c8 ("libceph: upmap semantic
changes").

We need to prevent duplicates in the final result.  For example, we
can currently take

  [1,2,3] and apply [(1,2)] and get [2,2,3]

or

  [1,2,3] and apply [(3,2)] and get [1,2,2]

The rest of the system is not prepared to handle duplicates in the
result set like this.

The reverted piece was intended to allow

  [1,2,3] and [(1,2),(2,1)] to get [2,1,3]

to reorder primaries.  First, this bidirectional swap is hard to
implement in a way that also prevents dups.  For example, [1,2,3] and
[(1,4),(2,3),(3,4)] would give [4,3,4] but would we just drop the last
step we'd have [4,3,3] which is also invalid, etc.  Simpler to just not
handle bidirectional swaps.  In practice, they are not needed: if you
just want to choose a different primary then use primary_affinity, or
pg_upmap (not pg_upmap_items).

Cc: stable@vger.kernel.org # 4.13
Link: http://tracker.ceph.com/issues/21410
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Reviewed-by: Sage Weil <sage@redhat.com>
2017-09-19 20:34:29 +02:00
..
crush crush: assume weight_set != null imples weight_set_size > 0 2017-08-01 16:46:44 +02:00
Kconfig
Makefile
armor.c
auth.c
auth_none.c
auth_none.h
auth_x.c
auth_x.h
auth_x_protocol.h
buffer.c
ceph_common.c Add wait_for_random_bytes() and get_random_*_wait() functions so that 2017-07-15 12:44:02 -07:00
ceph_fs.c
ceph_hash.c
ceph_strings.c
cls_lock_client.c
crypto.c
crypto.h
debugfs.c libceph: osd_state is 32 bits wide in luminous 2017-07-07 17:25:19 +02:00
messenger.c libceph: don't call ->reencode_message() more than once per message 2017-08-01 16:46:43 +02:00
mon_client.c ceph: more accurate statfs 2017-09-06 19:56:49 +02:00
msgpool.c
osd_client.c ceph: nuke startsync op 2017-09-06 19:56:43 +02:00
osdmap.c libceph: don't allow bidirectional swap of pg-upmap-items 2017-09-19 20:34:29 +02:00
pagelist.c
pagevec.c
snapshot.c
string_table.c