Lines Matching full:ca

15 static inline u64 sector_to_bucket(const struct bch_dev *ca, sector_t s)  in sector_to_bucket()  argument
17 return div_u64(s, ca->mi.bucket_size); in sector_to_bucket()
20 static inline sector_t bucket_to_sector(const struct bch_dev *ca, size_t b) in bucket_to_sector() argument
22 return ((sector_t) b) * ca->mi.bucket_size; in bucket_to_sector()
25 static inline sector_t bucket_remainder(const struct bch_dev *ca, sector_t s) in bucket_remainder() argument
29 div_u64_rem(s, ca->mi.bucket_size, &remainder); in bucket_remainder()
33 static inline u64 sector_to_bucket_and_offset(const struct bch_dev *ca, sector_t s, u32 *offset) in sector_to_bucket_and_offset() argument
35 return div_u64_rem(s, ca->mi.bucket_size, offset); in sector_to_bucket_and_offset()
83 static inline struct bucket *gc_bucket(struct bch_dev *ca, size_t b) in gc_bucket() argument
85 return bucket_valid(ca, b) in gc_bucket()
86 ? genradix_ptr(&ca->buckets_gc, b) in gc_bucket()
90 static inline struct bucket_gens *bucket_gens(struct bch_dev *ca) in bucket_gens() argument
92 return rcu_dereference_check(ca->bucket_gens, in bucket_gens()
93 lockdep_is_held(&ca->fs->state_lock)); in bucket_gens()
96 static inline u8 *bucket_gen(struct bch_dev *ca, size_t b) in bucket_gen() argument
98 struct bucket_gens *gens = bucket_gens(ca); in bucket_gen()
105 static inline int bucket_gen_get_rcu(struct bch_dev *ca, size_t b) in bucket_gen_get_rcu() argument
107 u8 *gen = bucket_gen(ca, b); in bucket_gen_get_rcu()
111 static inline int bucket_gen_get(struct bch_dev *ca, size_t b) in bucket_gen_get() argument
114 int ret = bucket_gen_get_rcu(ca, b); in bucket_gen_get()
119 static inline size_t PTR_BUCKET_NR(const struct bch_dev *ca, in PTR_BUCKET_NR() argument
122 return sector_to_bucket(ca, ptr->offset); in PTR_BUCKET_NR()
125 static inline struct bpos PTR_BUCKET_POS(const struct bch_dev *ca, in PTR_BUCKET_POS() argument
128 return POS(ptr->dev, PTR_BUCKET_NR(ca, ptr)); in PTR_BUCKET_POS()
131 static inline struct bpos PTR_BUCKET_POS_OFFSET(const struct bch_dev *ca, in PTR_BUCKET_POS_OFFSET() argument
135 return POS(ptr->dev, sector_to_bucket_and_offset(ca, ptr->offset, bucket_offset)); in PTR_BUCKET_POS_OFFSET()
138 static inline struct bucket *PTR_GC_BUCKET(struct bch_dev *ca, in PTR_GC_BUCKET() argument
141 return gc_bucket(ca, PTR_BUCKET_NR(ca, ptr)); in PTR_GC_BUCKET()
175 static inline int dev_ptr_stale_rcu(struct bch_dev *ca, const struct bch_extent_ptr *ptr) in dev_ptr_stale_rcu() argument
177 int gen = bucket_gen_get_rcu(ca, PTR_BUCKET_NR(ca, ptr)); in dev_ptr_stale_rcu()
185 static inline int dev_ptr_stale(struct bch_dev *ca, const struct bch_extent_ptr *ptr) in dev_ptr_stale() argument
188 int ret = dev_ptr_stale_rcu(ca, ptr); in dev_ptr_stale()
196 static inline struct bch_dev_usage bch2_dev_usage_read(struct bch_dev *ca) in bch2_dev_usage_read() argument
200 bch2_dev_usage_read_fast(ca, &ret); in bch2_dev_usage_read()
206 static inline u64 bch2_dev_buckets_reserved(struct bch_dev *ca, enum bch_watermark watermark) in bch2_dev_buckets_reserved() argument
214 reserved += ca->mi.nbuckets >> 6; in bch2_dev_buckets_reserved()
217 reserved += ca->mi.nbuckets >> 6; in bch2_dev_buckets_reserved()
220 reserved += ca->nr_btree_reserve; in bch2_dev_buckets_reserved()
223 reserved += ca->nr_btree_reserve; in bch2_dev_buckets_reserved()
234 static inline u64 dev_buckets_free(struct bch_dev *ca, in dev_buckets_free() argument
240 ca->nr_open_buckets - in dev_buckets_free()
241 bch2_dev_buckets_reserved(ca, watermark)); in dev_buckets_free()
244 static inline u64 __dev_buckets_available(struct bch_dev *ca, in __dev_buckets_available() argument
253 - ca->nr_open_buckets in __dev_buckets_available()
254 - bch2_dev_buckets_reserved(ca, watermark)); in __dev_buckets_available()
257 static inline u64 dev_buckets_available(struct bch_dev *ca, in dev_buckets_available() argument
260 return __dev_buckets_available(ca, bch2_dev_usage_read(ca), watermark); in dev_buckets_available()