linux-stable/drivers/infiniband/core
Olaf Kirch a656eb758f IB/fmr_pool: Flush serial numbers can get out of sync
Normally, the serial numbers for flush requests and flushes executed
for an FMR pool should be in sync.

However, if the FMR pool flushes dirty FMRs because the
dirty_watermark was reached, we wake up the cleanup thread and let it
do its stuff.  As a side effect, the cleanup thread increments
pool->flush_ser, which leaves it one higher than pool->req_ser.  The
next time the user calls ib_flush_fmr_pool(), the cleanup thread will
be woken up, but ib_flush_fmr_pool() won't wait for the flush to
complete because flush_ser is already past req_ser.  This means the
FMRs that the user expects to be flushed may not have all been flushed
when the function returns.

Fix this by telling the cleanup thread to do work exclusively by
incrementing req_ser, and by moving the comparison of dirty_len and
dirty_watermark into ib_fmr_pool_unmap().

Signed-off-by: Olaf Kirch <olaf.kirch@oracle.com>
2008-01-25 14:15:42 -08:00
..
addr.c RDMA/cma: Use neigh_event_send() to start neighbour discovery 2007-10-09 19:59:13 -07:00
agent.c IB/mad: agent_send_response() should be void 2007-08-03 10:45:17 -07:00
agent.h IB/mad: agent_send_response() should be void 2007-08-03 10:45:17 -07:00
cache.c Detach sched.h from mm.h 2007-05-21 09:18:19 -07:00
cm.c IB/cm: Add basic performance counters 2008-01-25 14:15:30 -08:00
cm_msgs.h IB/cm: cm_msgs.h should include ib_cm.h 2007-07-10 21:50:53 -07:00
cma.c RDMA/cma: Override default responder_resources with user value 2008-01-25 14:15:41 -08:00
core_priv.h
device.c IB: find_first_zero_bit() takes unsigned pointer 2007-10-09 19:59:04 -07:00
fmr_pool.c IB/fmr_pool: Flush serial numbers can get out of sync 2008-01-25 14:15:42 -08:00
iwcm.c PCI: Cleanup the includes of <linux/pci.h> 2007-05-02 19:02:35 -07:00
iwcm.h RDMA: iWARP Connection Manager. 2006-09-22 15:22:46 -07:00
mad.c IB/mad: Fix incorrect access to items on local_list 2008-01-25 14:15:31 -08:00
mad_priv.h IB/mad: Report number of times a mad was retried 2008-01-25 14:15:30 -08:00
mad_rmpp.c IB/mad: Report number of times a mad was retried 2008-01-25 14:15:30 -08:00
mad_rmpp.h
Makefile IB/uverbs: Export ib_umem_get()/ib_umem_release() to modules 2007-05-08 18:00:37 -07:00
multicast.c IB/multicast: Report errors on multicast groups if P_key changes 2008-01-25 14:15:29 -08:00
packer.c
sa.h IB: Remove garbage non-ASCII characters from comments 2007-07-09 16:17:32 -07:00
sa_query.c IB/sa: Add new QoS fields to path record 2007-10-09 19:59:12 -07:00
smi.c IB/mad: Enhance SMI for switch support 2007-07-09 16:17:32 -07:00
smi.h IB/mad: Enable loopback of DR SMP responses from userspace 2008-01-25 14:15:25 -08:00
sysfs.c Kobject: convert drivers/* from kobject_unregister() to kobject_put() 2008-01-24 20:40:40 -08:00
ucm.c IB/cm: Add basic performance counters 2008-01-25 14:15:30 -08:00
ucma.c RDMA/cma: add support for rdma_migrate_id() 2008-01-25 14:15:32 -08:00
ud_header.c
umem.c SG: Change sg_set_page() to take length and offset argument 2007-10-24 11:20:47 +02:00
user_mad.c IB/umad: Simplify and fix locking 2008-01-25 14:15:42 -08:00
uverbs.h IB/uverbs: Make ib_uverbs_release_event_file() static 2007-10-09 19:59:15 -07:00
uverbs_cmd.c IB/uverbs: Fix checking of userspace object ownership 2007-10-19 20:01:43 -07:00
uverbs_main.c IB/uverbs: Make ib_uverbs_release_event_file() static 2007-10-09 19:59:15 -07:00
uverbs_marshall.c RDMA/cma: Export rdma cm interface to userspace 2006-12-12 11:50:22 -08:00
verbs.c IB: Add CQ comp_vector support 2007-05-06 21:18:11 -07:00