Lines Matching full:len
23 CLST len; /* Length in clusters. */ member
55 if (vcn < r->vcn + r->len) { in run_lookup()
61 if (vcn >= r->vcn + r->len) { in run_lookup()
79 } else if (vcn >= r->vcn + r->len) { in run_lookup()
105 CLST end = r->vcn + r->len; in run_consolidate()
120 if (n->len <= dl) in run_consolidate()
123 n->len -= dl; in run_consolidate()
145 if (n->lcn != SPARSE_LCN && n->lcn != r->lcn + r->len) in run_consolidate()
152 r->len += n->len - dl; in run_consolidate()
181 next_vcn = r->vcn + r->len; in run_is_mapped_full()
194 CLST *len, size_t *index) in run_lookup_entry() argument
209 if (vcn >= r->vcn + r->len) in run_lookup_entry()
213 if (r->len <= gap) in run_lookup_entry()
218 if (len) in run_lookup_entry()
219 *len = r->len - gap; in run_lookup_entry()
229 * true if run overlaps with range [svcn, svcn + len)
231 static bool run_overlaps(const struct runs_tree *run, CLST svcn, CLST len, in run_overlaps() argument
236 CLST end = svcn + len; in run_overlaps()
239 /* Check if [r->vcn, r->vcn+r->len) overlaps [svcn, end). */ in run_overlaps()
240 if (r->vcn < end && svcn < r->vcn + r->len) { in run_overlaps()
244 *clen = r->len; in run_overlaps()
261 CLST *len) in run_lookup_entry_da() argument
265 if (run_da && run_lookup_entry(run_da, vcn, lcn, len, NULL)) { in run_lookup_entry_da()
270 if (!run_lookup_entry(run, vcn, lcn, len, NULL)) in run_lookup_entry_da()
273 if (run_da && run_overlaps(run_da, vcn, *len, &vcn1, &len1)) { in run_lookup_entry_da()
276 *len = vcn1 - vcn; in run_lookup_entry_da()
279 *len = len1; in run_lookup_entry_da()
301 r->len -= dlen; in run_truncate_head()
337 r->len = vcn - r->vcn; in run_truncate()
339 if (r->len > 0) in run_truncate()
377 bool run_add_entry(struct runs_tree *run, CLST vcn, CLST lcn, CLST len, in run_add_entry() argument
404 if (t->vcn + t->len == vcn && in run_add_entry()
406 (lcn == SPARSE_LCN || lcn == t->lcn + t->len)) { in run_add_entry()
477 r->len = len; in run_add_entry()
492 CLST Tovcn = to_eat + len; in run_add_entry()
494 should_add_tail = Tovcn < r->len; in run_add_entry()
501 tail_len = r->len - Tovcn; in run_add_entry()
505 r->len = to_eat; in run_add_entry()
519 if (r->vcn + r->len < vcn + len) in run_add_entry()
520 r->len += len - ((r->vcn + r->len) - vcn); in run_add_entry()
551 bool run_collapse_range(struct runs_tree *run, CLST vcn, CLST len, CLST sub) in run_collapse_range() argument
563 end = vcn + len; in run_collapse_range()
566 if (r->vcn + r->len <= end) { in run_collapse_range()
568 r->len = vcn - r->vcn; in run_collapse_range()
571 r->len -= len; in run_collapse_range()
574 if (!run_add_entry(run, vcn, SPARSE_LCN, len, false)) in run_collapse_range()
576 return run_collapse_range(run, vcn, len, sub); in run_collapse_range()
589 r->vcn -= len; in run_collapse_range()
593 if (r->vcn + r->len <= end) { in run_collapse_range()
602 r->len -= d; in run_collapse_range()
603 r->vcn -= len - d; in run_collapse_range()
625 int run_insert_range(struct runs_tree *run, CLST vcn, CLST len) in run_insert_range() argument
640 r->vcn += len; in run_insert_range()
647 CLST len2 = r->len - len1; in run_insert_range()
650 r->len = len1; in run_insert_range()
652 if (!run_add_entry(run, vcn + len, lcn2, len2, false)) in run_insert_range()
656 if (!run_add_entry(run, vcn, SPARSE_LCN, len, false)) in run_insert_range()
667 int run_insert_range_da(struct runs_tree *run, CLST vcn, CLST len) in run_insert_range_da() argument
673 CLST end = r->vcn + r->len; in run_insert_range_da()
681 r->vcn += len; in run_insert_range_da()
688 CLST len2 = r0->len - len1; in run_insert_range_da()
690 r0->len = len1; in run_insert_range_da()
691 if (!run_add_entry(run, vcn + len, SPARSE_LCN, len2, false)) in run_insert_range_da()
702 CLST *lcn, CLST *len) in run_get_entry() argument
711 if (!r->len) in run_get_entry()
718 if (len) in run_get_entry()
719 *len = r->len; in run_get_entry()
923 int run_pack(const struct runs_tree *run, CLST svcn, CLST len, u8 *run_buf, in run_pack() argument
928 CLST evcn1 = svcn + len; in run_pack()
937 if (!len) in run_pack()
947 for (next_vcn = r->vcn + r->len; next_vcn < evcn1; in run_pack()
948 next_vcn = r->vcn + r->len) { in run_pack()
955 len = svcn - r->vcn; in run_pack()
957 lcn = r->lcn == SPARSE_LCN ? SPARSE_LCN : (r->lcn + len); in run_pack()
958 len = r->len - len; in run_pack()
961 next_vcn = vcn + len; in run_pack()
963 len = evcn1 - vcn; in run_pack()
965 /* How much bytes required to pack len. */ in run_pack()
966 size_size = run_packed_size(len); in run_pack()
993 run_pack_s64(run_buf, size_size, len); in run_pack()
1002 *packed_vcns += len; in run_pack()
1010 len = r->len; in run_pack()
1050 /* size_size - How much bytes is packed len. */ in run_unpack()
1052 /* size_size - How much bytes is packed len. */ in run_unpack()
1056 u64 len; in run_unpack() local
1064 * "len" is unsigned value, "dlcn" is signed. in run_unpack()
1068 if (size_size > sizeof(len)) in run_unpack()
1074 len = run_unpack_s64(run_buf, size_size, 0); in run_unpack()
1078 if (!len) in run_unpack()
1110 if (check_add_overflow(vcn64, len, &next_vcn)) in run_unpack()
1118 if (next_vcn > 0x100000000ull || (lcn + len) > 0x100000000ull) { in run_unpack()
1122 "Volume contains 64 bits run: vcn %llx, lcn %llx, len %llx.\n" in run_unpack()
1124 vcn64, lcn, len); in run_unpack()
1131 if (check_add_overflow(lcn, len, &lcn_end)) in run_unpack()
1147 mark_as_free_ex(sbi, lcn, len, true); in run_unpack()
1149 if (!run_add_entry(run, vcn64, lcn, len, is_mft)) in run_unpack()
1154 if (!run_add_entry(run, vcn, lcn + dlen, len - dlen, in run_unpack()
1183 CLST next_vcn, lcn, len; in run_unpack_ex() local
1201 for (ok = run_lookup_entry(run, vcn, &lcn, &len, &index); in run_unpack_ex()
1203 ok = run_get_entry(run, ++index, &vcn, &lcn, &len)) { in run_unpack_ex()
1207 next_vcn = vcn + len; in run_unpack_ex()
1216 zone = max(wnd->zone_bit, lcn) < min(wnd->zone_end, lcn + len); in run_unpack_ex()
1218 ok = !zone && wnd_is_used(wnd, lcn, len); in run_unpack_ex()
1231 * Range [lcn, lcn + len) intersects with zone. in run_unpack_ex()
1237 /* Mark all zero bits as used in range [lcn, lcn+len). */ in run_unpack_ex()
1238 err = wnd_set_used_safe(wnd, lcn, len, &done); in run_unpack_ex()
1277 u64 len; in run_get_highest_vcn() local
1285 len = run_unpack_s64(run_buf, size_size, 0); in run_get_highest_vcn()
1286 if (!len) in run_get_highest_vcn()
1290 if (check_add_overflow(vcn64, len, &vcn64)) in run_get_highest_vcn()
1332 bool run_remove_range(struct runs_tree *run, CLST vcn, CLST len, CLST *done) in run_remove_range() argument
1351 end = vcn + len; in run_remove_range()
1354 CLST r_end = r->vcn + r->len; in run_remove_range()
1363 *done += len; in run_remove_range()
1364 r->len = d; in run_remove_range()
1369 *done += r->len - d; in run_remove_range()
1370 r->len = d; in run_remove_range()
1381 if (r->vcn + r->len <= end) { in run_remove_range()
1383 *done += r->len; in run_remove_range()
1392 r->len -= d; in run_remove_range()
1406 CLST len = 0; in run_len() local
1409 len += r->len; in run_len()
1412 return len; in run_len()
1422 return r->vcn + r->len; in run_get_max_vcn()