|
@@ -704,11 +704,6 @@ struct bbio {
|
|
|
struct bio bio;
|
|
|
};
|
|
|
|
|
|
-static inline unsigned local_clock_us(void)
|
|
|
-{
|
|
|
- return local_clock() >> 10;
|
|
|
-}
|
|
|
-
|
|
|
#define BTREE_PRIO USHRT_MAX
|
|
|
#define INITIAL_PRIO 32768
|
|
|
|
|
@@ -776,6 +771,24 @@ static inline struct bucket *PTR_BUCKET(struct cache_set *c,
|
|
|
return PTR_CACHE(c, k, ptr)->buckets + PTR_BUCKET_NR(c, k, ptr);
|
|
|
}
|
|
|
|
|
|
+static inline uint8_t gen_after(uint8_t a, uint8_t b)
|
|
|
+{
|
|
|
+ uint8_t r = a - b;
|
|
|
+ return r > 128U ? 0 : r;
|
|
|
+}
|
|
|
+
|
|
|
+static inline uint8_t ptr_stale(struct cache_set *c, const struct bkey *k,
|
|
|
+ unsigned i)
|
|
|
+{
|
|
|
+ return gen_after(PTR_BUCKET(c, k, i)->gen, PTR_GEN(k, i));
|
|
|
+}
|
|
|
+
|
|
|
+static inline bool ptr_available(struct cache_set *c, const struct bkey *k,
|
|
|
+ unsigned i)
|
|
|
+{
|
|
|
+ return (PTR_DEV(k, i) < MAX_CACHES_PER_SET) && PTR_CACHE(c, k, i);
|
|
|
+}
|
|
|
+
|
|
|
/* Btree key macros */
|
|
|
|
|
|
static inline void bkey_init(struct bkey *k)
|