[PATCH 0/7] generic radix trees; drop flex arrays

From: Kent Overstreet
Date: Mon Dec 17 2018 - 08:19:41 EST


this has been sitting on my todo list for far too long; let's try and get it
merged before flex arrays grow any new users.

The only significant change since the last time I mailed this out is that it's
now safe to use a genradix from multiple threads, including when new nodes are
being allocated.

Since we never _free_ nodes on a genradix while it's in use (only when the
entire tree is being freed), this adds very little code - we just use cmpxchg
for adding pointers to new nodes, there's no need to use rcu_read_lock() or
anything like that. And for the types of things we seem to want to use it for
it's quite useful.

Andrew, would you mind picking up this series, or would someone else be more
suitable? The patch series has been sent out a few times and seen a fair amoun
of review.

Kent Overstreet (7):
openvswitch: convert to kvmalloc
md: convert to kvmalloc
selinux: convert to kvmalloc
Generic radix trees
proc: commit to genradix
sctp: Convert to genradix
Drop flex_arrays

Documentation/core-api/flexible-arrays.rst | 130 ------
Documentation/core-api/generic-radix-tree.rst | 12 +
Documentation/core-api/index.rst | 1 +
Documentation/flexible-arrays.txt | 123 ------
drivers/md/raid5-ppl.c | 6 +-
drivers/md/raid5.c | 87 ++--
drivers/md/raid5.h | 9 +-
fs/proc/base.c | 43 +-
include/linux/flex_array.h | 149 -------
include/linux/generic-radix-tree.h | 231 ++++++++++
include/linux/poison.h | 3 -
include/net/sctp/structs.h | 15 +-
lib/Makefile | 5 +-
lib/flex_array.c | 398 ------------------
lib/generic-radix-tree.c | 217 ++++++++++
net/openvswitch/flow.h | 1 -
net/openvswitch/flow_netlink.h | 1 -
net/openvswitch/flow_table.c | 51 +--
net/openvswitch/flow_table.h | 3 +-
net/sctp/stream.c | 106 +----
net/sctp/stream_interleave.c | 2 +-
security/selinux/ss/avtab.c | 40 +-
security/selinux/ss/avtab.h | 4 +-
security/selinux/ss/conditional.c | 6 +-
security/selinux/ss/policydb.c | 122 ++----
security/selinux/ss/policydb.h | 12 +-
security/selinux/ss/services.c | 22 +-
tools/include/linux/poison.h | 3 -
28 files changed, 628 insertions(+), 1174 deletions(-)
delete mode 100644 Documentation/core-api/flexible-arrays.rst
create mode 100644 Documentation/core-api/generic-radix-tree.rst
delete mode 100644 Documentation/flexible-arrays.txt
delete mode 100644 include/linux/flex_array.h
create mode 100644 include/linux/generic-radix-tree.h
delete mode 100644 lib/flex_array.c
create mode 100644 lib/generic-radix-tree.c

--
2.20.1