RE: [PATCH 00/11] New Caching mechanism for ib_core

Hefty, Sean
2011-11-10T07:03:40Z

> > Yes, but the use of the cache is hidden from the user.
>
> user who?

ib_cm, rdma_cm, ib_mad, ib_ipoib, etc. You would need to trace the use up to all ULPs.

> Since the drivers would be users of cache calls, the behavior would be
> as assumed for the query calls for the driver. Refer mthca
> implementation (PATCH 11/11): If the entry is found in cache, it
> will return immediately, and will not sleep.

> If the entry is not found, it will query the device and may sleep.

This is the issue. You changed calls from ib_find_cached_pkey() and ib_find_cached_gid() to ib_query_pkey() and ib_query_gid(). The latter calls may sleep, but I don't believe that we can sleep in all places where the new functions are used. Changing from ib_find_cached_gid to ib_query_gid changes the locking restrictions up through the stack. It doesn't matter if the cache doesn't block, the exposed calls may.

- Sean