OpenCloudOS-Kernel/drivers/infiniband/core
Sean Hefty d3d72d909e RDMA/verbs: Cleanup XRC TGT QPs when destroying XRCD
XRC TGT QPs are intended to be shared among multiple users and
processes.  Allow the destruction of an XRC TGT QP to be done explicitly
through ib_destroy_qp() or when the XRCD is destroyed.

To support destroying an XRC TGT QP, we need to track TGT QPs with the
XRCD.  When the XRCD is destroyed, all tracked XRC TGT QPs are also
cleaned up.

To avoid stale reference issues, if a user is holding a reference on a
TGT QP, we increment a reference count on the QP.  The user releases the
reference by calling ib_release_qp.  This releases any access to the QP
from a user above verbs, but allows the QP to continue to exist until
destroyed by the XRCD.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
2011-10-13 09:20:27 -07:00
..
Makefile RDMA: Add netlink infrastructure 2011-05-20 11:46:11 -07:00
addr.c net: Abstract dst->neighbour accesses behind helpers. 2011-07-17 23:11:35 -07:00
agent.c IB/mad: Improve an error message so error code is included 2011-03-18 09:42:20 -07:00
agent.h RDMA: Remove subversion $Id tags 2008-07-14 23:48:44 -07:00
cache.c IB/core: Add GID change event 2011-07-18 21:04:30 -07:00
cm.c RDMA: Check for NULL mode in .devnode methods 2011-07-04 15:53:28 -07:00
cm_msgs.h IB: Remove __constant_{endian} uses 2009-01-17 17:11:57 -08:00
cma.c RDMA/cma: Don't allow IPoIB port space for IBoE 2011-07-18 16:50:25 -07:00
core_priv.h IB/core: Allow device-specific per-port sysfs files 2010-05-21 10:34:44 -07:00
device.c RDMA: Allow for NULL .modify_device() and .modify_port() methods 2011-07-18 16:44:30 -07:00
fmr_pool.c RDMA: Remove subversion $Id tags 2008-07-14 23:48:44 -07:00
iwcm.c RDMA/iwcm: Get rid of enum iw_cm_event_status 2011-05-09 22:23:57 -07:00
iwcm.h RDMA: iWARP Connection Manager. 2006-09-22 15:22:46 -07:00
mad.c IB/mad: Return EPROTONOSUPPORT when an RDMA device lacks the QP required 2011-05-23 11:15:48 -07:00
mad_priv.h IB/mad: Allow tuning of QP0 and QP1 sizes 2009-09-07 08:28:48 -07:00
mad_rmpp.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
mad_rmpp.h RDMA: Remove subversion $Id tags 2008-07-14 23:48:44 -07:00
multicast.c IB/mad: IBoE supports only QP1 (no QP0) 2010-10-13 09:38:11 -07:00
netlink.c rtnetlink: Compute and store minimum ifinfo dump size 2011-06-09 20:38:07 -07:00
packer.c RDMA: Remove subversion $Id tags 2008-07-14 23:48:44 -07:00
sa.h IB: Remove garbage non-ASCII characters from comments 2007-07-09 16:17:32 -07:00
sa_query.c RDMA: Update missed conversion of flush_scheduled_work() 2011-01-28 16:39:08 -08:00
smi.c IB/mad: Check hop count field in directed route MAD to avoid array overflow 2009-09-05 20:24:10 -07:00
smi.h IB/mad: Enable loopback of DR SMP responses from userspace 2008-01-25 14:15:25 -08:00
sysfs.c IB/core: Add link layer type information to sysfs 2010-10-25 10:20:39 -07:00
ucm.c IB/ucm: Use memdup_user() 2010-05-25 21:10:57 -07:00
ucma.c Merge branches 'cma', 'cxgb3', 'cxgb4', 'misc', 'nes', 'netlink', 'srp' and 'uverbs' into for-next 2011-05-25 13:47:20 -07:00
ud_header.c IB/pack: Remove some unused code added by the IBoE patches 2010-12-01 16:30:18 -08:00
umem.c RDMA: Update workqueue usage 2011-01-16 21:16:31 -08:00
user_mad.c IB: Add devnode methods to cm_class and umad_class 2011-05-23 11:24:28 -07:00
uverbs.h Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6 2010-03-04 08:15:33 -08:00
uverbs_cmd.c RDMA/core: Add SRQ type field 2011-10-13 09:13:26 -07:00
uverbs_main.c RDMA: Check for NULL mode in .devnode methods 2011-07-04 15:53:28 -07:00
uverbs_marshall.c IB: Fix information leak in marshalling code 2010-12-01 16:33:18 -08:00
verbs.c RDMA/verbs: Cleanup XRC TGT QPs when destroying XRCD 2011-10-13 09:20:27 -07:00