Lines Matching full:ca

15 static inline size_t 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 size_t sector_to_bucket_and_offset(const struct bch_dev *ca, sector_t s, in sector_to_bucket_and_offset() argument
36 return div_u64_rem(s, ca->mi.bucket_size, offset); in sector_to_bucket_and_offset()
84 static inline struct bucket_array *gc_bucket_array(struct bch_dev *ca) in gc_bucket_array() argument
86 return rcu_dereference_check(ca->buckets_gc, in gc_bucket_array()
87 !ca->fs || in gc_bucket_array()
88 percpu_rwsem_is_held(&ca->fs->mark_lock) || in gc_bucket_array()
89 lockdep_is_held(&ca->fs->gc_lock) || in gc_bucket_array()
90 lockdep_is_held(&ca->bucket_lock)); in gc_bucket_array()
93 static inline struct bucket *gc_bucket(struct bch_dev *ca, size_t b) in gc_bucket() argument
95 struct bucket_array *buckets = gc_bucket_array(ca); in gc_bucket()
101 static inline struct bucket_gens *bucket_gens(struct bch_dev *ca) in bucket_gens() argument
103 return rcu_dereference_check(ca->bucket_gens, in bucket_gens()
104 !ca->fs || in bucket_gens()
105 percpu_rwsem_is_held(&ca->fs->mark_lock) || in bucket_gens()
106 lockdep_is_held(&ca->fs->gc_lock) || in bucket_gens()
107 lockdep_is_held(&ca->bucket_lock)); in bucket_gens()
110 static inline u8 *bucket_gen(struct bch_dev *ca, size_t b) in bucket_gen() argument
112 struct bucket_gens *gens = bucket_gens(ca); in bucket_gen()
118 static inline size_t PTR_BUCKET_NR(const struct bch_dev *ca, in PTR_BUCKET_NR() argument
121 return sector_to_bucket(ca, ptr->offset); in PTR_BUCKET_NR()
127 struct bch_dev *ca = bch_dev_bkey_exists(c, ptr->dev); in PTR_BUCKET_POS() local
129 return POS(ptr->dev, PTR_BUCKET_NR(ca, ptr)); in PTR_BUCKET_POS()
136 struct bch_dev *ca = bch_dev_bkey_exists(c, ptr->dev); in PTR_BUCKET_POS_OFFSET() local
138 return POS(ptr->dev, sector_to_bucket_and_offset(ca, ptr->offset, bucket_offset)); in PTR_BUCKET_POS_OFFSET()
141 static inline struct bucket *PTR_GC_BUCKET(struct bch_dev *ca, in PTR_GC_BUCKET() argument
144 return gc_bucket(ca, PTR_BUCKET_NR(ca, ptr)); in PTR_GC_BUCKET()
182 static inline u8 ptr_stale(struct bch_dev *ca, in ptr_stale() argument
188 ret = gen_after(*bucket_gen(ca, PTR_BUCKET_NR(ca, ptr)), ptr->gen); in ptr_stale()
197 static inline struct bch_dev_usage bch2_dev_usage_read(struct bch_dev *ca) in bch2_dev_usage_read() argument
201 bch2_dev_usage_read_fast(ca, &ret); in bch2_dev_usage_read()
208 static inline u64 bch2_dev_buckets_reserved(struct bch_dev *ca, enum bch_watermark watermark) in bch2_dev_buckets_reserved() argument
216 reserved += ca->mi.nbuckets >> 6; in bch2_dev_buckets_reserved()
219 reserved += ca->mi.nbuckets >> 6; in bch2_dev_buckets_reserved()
222 reserved += ca->nr_btree_reserve; in bch2_dev_buckets_reserved()
225 reserved += ca->nr_btree_reserve; in bch2_dev_buckets_reserved()
235 static inline u64 dev_buckets_free(struct bch_dev *ca, in dev_buckets_free() argument
241 ca->nr_open_buckets - in dev_buckets_free()
242 bch2_dev_buckets_reserved(ca, watermark)); in dev_buckets_free()
245 static inline u64 __dev_buckets_available(struct bch_dev *ca, in __dev_buckets_available() argument
254 - ca->nr_open_buckets in __dev_buckets_available()
255 - bch2_dev_buckets_reserved(ca, watermark)); in __dev_buckets_available()
258 static inline u64 dev_buckets_available(struct bch_dev *ca, in dev_buckets_available() argument
261 return __dev_buckets_available(ca, bch2_dev_usage_read(ca), watermark); in dev_buckets_available()
369 static inline bool is_superblock_bucket(struct bch_dev *ca, u64 b) in is_superblock_bucket() argument
371 struct bch_sb_layout *layout = &ca->disk_sb.sb->layout; in is_superblock_bucket()
372 u64 b_offset = bucket_to_sector(ca, b); in is_superblock_bucket()
373 u64 b_end = bucket_to_sector(ca, b + 1); in is_superblock_bucket()