lru_cache: introduce lc_get_cumulative()
authorLars Ellenberg <lars.ellenberg@linbit.com>
Sat, 23 Mar 2013 04:17:36 +0000 (22:17 -0600)
committerJens Axboe <axboe@kernel.dk>
Sat, 23 Mar 2013 04:17:36 +0000 (22:17 -0600)
commitcbe5e6109538ddab57764a88d9f0c2accd0c7d48
treee09809862b9be7a44b44aa7367d470da14b2ccf0
parent779b3fe4c0e9dea19ae3ddef0b5fd1a663b63ee6
lru_cache: introduce lc_get_cumulative()

New helper to be able to consolidate more updates
into a single transaction.
Without this, we can only grab a single refcount
on an updated element while preparing a transaction.

lc_get_cumulative - like lc_get; also finds to-be-changed elements
  @lc: the lru cache to operate on
  @enr: the label to look up

  Unlike lc_get this also returns the element for @enr, if it is belonging to
  a pending transaction, so the return values are like for lc_get(),
  plus:

  pointer to an element already on the "to_be_changed" list.
  In this case, the cache was already marked %LC_DIRTY.

  Caller needs to make sure that the pending transaction is completed,
  before proceeding to actually use this element.

Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com>
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
Fixed up by Jens to export lc_get_cumulative().

Signed-off-by: Jens Axboe <axboe@kernel.dk>
include/linux/lru_cache.h
lib/lru_cache.c