Lines Matching defs:ptr

55 	struct bch_dev_io_failures *f = dev_io_failures(failed, p->ptr.dev);
61 f->dev = p->ptr.dev;
82 struct bch_dev *dev1 = bch_dev_bkey_exists(c, p1.ptr.dev);
83 struct bch_dev *dev2 = bch_dev_bkey_exists(c, p2.ptr.dev);
123 if (p.ptr.unwritten)
126 ca = bch_dev_bkey_exists(c, p.ptr.dev);
132 if (!ret && !p.ptr.cached)
135 if (p.ptr.cached && ptr_stale(ca, &p.ptr))
138 f = failed ? dev_io_failures(failed, p.ptr.dev) : NULL;
272 if (lp.ptr.offset + lp.crc.offset + lp.crc.live_size !=
273 rp.ptr.offset + rp.crc.offset ||
274 lp.ptr.dev != rp.ptr.dev ||
275 lp.ptr.gen != rp.ptr.gen ||
276 lp.ptr.unwritten != rp.ptr.unwritten ||
281 ca = bch_dev_bkey_exists(c, lp.ptr.dev);
282 if (PTR_BUCKET_NR(ca, &lp.ptr) != PTR_BUCKET_NR(ca, &rp.ptr))
345 en_l->ptr = en_r->ptr;
505 bch2_bkey_drop_ptr_noerror(bkey_i_to_s(k), &i->ptr);
506 p.ptr.offset += p.crc.offset;
605 ret += !p.ptr.cached && !crc_is_compressed(p.crc);
619 if (!p.ptr.cached && crc_is_compressed(p.crc))
645 if (p.ptr.cached)
660 if (p->ptr.cached)
670 struct bch_dev *ca = bch_dev_bkey_exists(c, p->ptr.dev);
677 struct bch_dev *ca = bch_dev_bkey_exists(c, p->ptr.dev);
706 if (p.ptr.dev < c->sb.nr_devices && c->devs[p.ptr.dev])
743 p->ptr.type = 1 << BCH_EXTENT_ENTRY_ptr;
744 __extent_entry_insert(k, pos, to_entry(&p->ptr));
769 struct bch_extent_ptr *ptr)
772 union bch_extent_entry *entry = to_entry(ptr), *next;
776 EBUG_ON(ptr < &ptrs.start->ptr ||
777 ptr >= &ptrs.end->ptr);
778 EBUG_ON(ptr->type != 1 << BCH_EXTENT_ENTRY_ptr);
808 struct bch_extent_ptr *ptr)
812 bch2_bkey_drop_ptr_noerror(k, ptr);
836 struct bch_extent_ptr *ptr;
838 bch2_bkey_drop_ptrs(k, ptr, ptr->dev == dev);
843 struct bch_extent_ptr *ptr = bch2_bkey_has_device(k, dev);
845 if (ptr)
846 bch2_bkey_drop_ptr_noerror(k, ptr);
853 bkey_for_each_ptr(ptrs, ptr)
854 if (ptr->dev == dev)
855 return ptr;
864 bkey_for_each_ptr(ptrs, ptr)
865 if (bch2_dev_in_target(c, ptr->dev, target) &&
866 (!ptr->cached ||
867 !ptr_stale(bch_dev_bkey_exists(c, ptr->dev), ptr)))
881 if (p.ptr.dev == m.dev &&
882 p.ptr.gen == m.gen &&
883 (s64) p.ptr.offset + p.crc.offset - bkey_start_offset(k.k) ==
909 if (p1.ptr.dev == p2.ptr.dev &&
910 p1.ptr.gen == p2.ptr.gen &&
911 (s64) p1.ptr.offset + p1.crc.offset - bkey_start_offset(k1.k) ==
912 (s64) p2.ptr.offset + p2.crc.offset - bkey_start_offset(k2.k))
930 if (p1.ptr.dev == p2.ptr.dev &&
931 p1.ptr.gen == p2.ptr.gen &&
932 (s64) p1.ptr.offset + p1.crc.offset - bkey_start_offset(k1.k) ==
933 (s64) p2.ptr.offset + p2.crc.offset - bkey_start_offset(k2.k))
934 return &entry2->ptr;
939 void bch2_extent_ptr_set_cached(struct bkey_s k, struct bch_extent_ptr *ptr)
946 if (&entry->ptr == ptr) {
947 ptr->cached = true;
972 struct bch_extent_ptr *ptr;
974 bch2_bkey_drop_ptrs(k, ptr,
975 ptr->cached &&
976 ptr_stale(bch_dev_bkey_exists(c, ptr->dev), ptr));
981 void bch2_extent_ptr_to_text(struct printbuf *out, struct bch_fs *c, const struct bch_extent_ptr *ptr)
983 struct bch_dev *ca = c && ptr->dev < c->sb.nr_devices && c->devs[ptr->dev]
984 ? bch_dev_bkey_exists(c, ptr->dev)
988 prt_printf(out, "ptr: %u:%llu gen %u%s", ptr->dev,
989 (u64) ptr->offset, ptr->gen,
990 ptr->cached ? " cached" : "");
993 u64 b = sector_to_bucket_and_offset(ca, ptr->offset, &offset);
995 prt_printf(out, "ptr: %u:%llu:%u gen %u",
996 ptr->dev, b, offset, ptr->gen);
997 if (ptr->cached)
999 if (ptr->unwritten)
1003 ptr_stale(ca, ptr))
1073 const struct bch_extent_ptr *ptr,
1084 if (!bch2_dev_exists2(c, ptr->dev)) {
1094 "pointer to invalid device (%u)", ptr->dev);
1097 ca = bch_dev_bkey_exists(c, ptr->dev);
1099 bkey_fsck_err_on(ptr != ptr2 && ptr->dev == ptr2->dev, c, err,
1101 "multiple pointers to same device (%u)", ptr->dev);
1103 bucket = sector_to_bucket_and_offset(ca, ptr->offset, &bucket_offset);
1108 bkey_fsck_err_on(ptr->offset < bucket_to_sector(ca, ca->mi.first_bucket), c, err,
1144 "has non ptr field");
1148 ret = extent_ptr_invalid(c, k, flags, &entry->ptr,
1153 bkey_fsck_err_on(entry->ptr.cached && have_ec, c, err,
1155 "cached, erasure coded ptr");
1157 if (!entry->ptr.unwritten)
1308 p.ptr.unwritten) {
1313 if (!p.ptr.cached && p.crc.compression_type != compression_type)
1322 bkey_for_each_ptr(ptrs, ptr) {
1323 if (!ptr->cached && !bch2_dev_in_target(c, ptr->dev, target))
1436 entry->ptr.offset += sub;