mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00
bcachefs: Fix ec + durability calculation
Durability of an erasure coded pointer doesn't add the device durability; durability is the same for any extent in that stripe so the calculation only comes from the stripe. Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
parent
7d9f8468ff
commit
e4f72bb46a
1 changed files with 12 additions and 18 deletions
|
@ -649,37 +649,31 @@ unsigned bch2_bkey_replicas(struct bch_fs *c, struct bkey_s_c k)
|
|||
return replicas;
|
||||
}
|
||||
|
||||
unsigned bch2_extent_ptr_desired_durability(struct bch_fs *c, struct extent_ptr_decoded *p)
|
||||
static inline unsigned __extent_ptr_durability(struct bch_dev *ca, struct extent_ptr_decoded *p)
|
||||
{
|
||||
struct bch_dev *ca;
|
||||
|
||||
if (p->ptr.cached)
|
||||
return 0;
|
||||
|
||||
ca = bch_dev_bkey_exists(c, p->ptr.dev);
|
||||
return p->has_ec
|
||||
? p->ec.redundancy + 1
|
||||
: ca->mi.durability;
|
||||
}
|
||||
|
||||
return ca->mi.durability +
|
||||
(p->has_ec
|
||||
? p->ec.redundancy
|
||||
: 0);
|
||||
unsigned bch2_extent_ptr_desired_durability(struct bch_fs *c, struct extent_ptr_decoded *p)
|
||||
{
|
||||
struct bch_dev *ca = bch_dev_bkey_exists(c, p->ptr.dev);
|
||||
|
||||
return __extent_ptr_durability(ca, p);
|
||||
}
|
||||
|
||||
unsigned bch2_extent_ptr_durability(struct bch_fs *c, struct extent_ptr_decoded *p)
|
||||
{
|
||||
struct bch_dev *ca;
|
||||
|
||||
if (p->ptr.cached)
|
||||
return 0;
|
||||
|
||||
ca = bch_dev_bkey_exists(c, p->ptr.dev);
|
||||
struct bch_dev *ca = bch_dev_bkey_exists(c, p->ptr.dev);
|
||||
|
||||
if (ca->mi.state == BCH_MEMBER_STATE_failed)
|
||||
return 0;
|
||||
|
||||
return ca->mi.durability +
|
||||
(p->has_ec
|
||||
? p->ec.redundancy
|
||||
: 0);
|
||||
return __extent_ptr_durability(ca, p);
|
||||
}
|
||||
|
||||
unsigned bch2_bkey_durability(struct bch_fs *c, struct bkey_s_c k)
|
||||
|
|
Loading…
Add table
Reference in a new issue