Ilya Dryomov
cf73d882cc
libceph: use ceph_kvmalloc() for osdmap arrays
...
osdmap has a bunch of arrays that grow linearly with the number of
OSDs. osd_state, osd_weight and osd_primary_affinity take 4 bytes per
OSD. osd_addr takes 136 bytes per OSD because of sockaddr_storage.
The CRUSH workspace area also grows linearly with the number of OSDs.
Normally these arrays are allocated at client startup. The osdmap is
usually updated in small incrementals, but once in a while a full map
may need to be processed. For a cluster with 10000 OSDs, this means
a bunch of 40K allocations followed by a 1.3M allocation, all of which
are currently required to be physically contiguous. This results in
sporadic ENOMEM errors, hanging the client.
Go back to manually (re)allocating arrays and use ceph_kvmalloc() to
fall back to non-contiguous allocation when necessary.
Link: https://tracker.ceph.com/issues/40481
Signed-off-by: Ilya Dryomov <[email protected] >
Reviewed-by: Jeff Layton <[email protected] >
2019-09-16 12:06:25 +02:00
..
crush
crush: fix using plain integer as NULL warning
2018-08-13 17:55:44 +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
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
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
libceph: use ceph_kvmalloc() for osdmap arrays
2019-09-16 12:06:25 +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