Lines Matching defs:vcn
21 CLST vcn; /* Virtual cluster number. */
27 * run_lookup - Lookup the index of a MCB entry that is first <= vcn.
34 static bool run_lookup(const struct runs_tree *run, CLST vcn, size_t *index)
49 if (vcn < r->vcn) {
54 if (vcn < r->vcn + r->len) {
60 if (vcn >= r->vcn + r->len) {
65 if (vcn >= r->vcn) {
74 if (vcn < r->vcn) {
78 } else if (vcn >= r->vcn + r->len) {
104 CLST end = r->vcn + r->len;
108 if (n->vcn > end)
111 dl = end - n->vcn;
123 n->vcn += dl;
180 next_vcn = r->vcn + r->len;
187 if (r->vcn != next_vcn)
192 bool run_lookup_entry(const struct runs_tree *run, CLST vcn, CLST *lcn,
203 if (!run_lookup(run, vcn, &idx))
208 if (vcn >= r->vcn + r->len)
211 gap = vcn - r->vcn;
226 * run_truncate_head - Decommit the range before vcn.
228 void run_truncate_head(struct runs_tree *run, CLST vcn)
233 if (run_lookup(run, vcn, &index)) {
236 if (vcn > r->vcn) {
237 CLST dlen = vcn - r->vcn;
239 r->vcn = vcn;
261 * run_truncate - Decommit the range after vcn.
263 void run_truncate(struct runs_tree *run, CLST vcn)
273 if (run_lookup(run, vcn, &index)) {
276 r->len = vcn - r->vcn;
300 void run_truncate_around(struct runs_tree *run, CLST vcn)
302 run_truncate_head(run, vcn);
305 run_truncate(run, (run->runs + (run->count >> 1))->vcn);
316 bool run_add_entry(struct runs_tree *run, CLST vcn, CLST lcn, CLST len,
331 inrange = run_lookup(run, vcn, &index);
343 if (t->vcn + t->len == vcn &&
414 r->vcn = vcn;
429 (lcn != SPARSE_LCN && lcn != r->lcn + (vcn - r->vcn))) {
430 CLST to_eat = vcn - r->vcn;
439 tail_vcn = r->vcn + Tovcn;
458 if (r->vcn + r->len < vcn + len)
459 r->len += len - ((r->vcn + r->len) - vcn);
489 bool run_collapse_range(struct runs_tree *run, CLST vcn, CLST len)
495 if (WARN_ON(!run_lookup(run, vcn, &index)))
500 end = vcn + len;
502 if (vcn > r->vcn) {
503 if (r->vcn + r->len <= end) {
505 r->len = vcn - r->vcn;
511 if (!run_add_entry(run, vcn, SPARSE_LCN, len, false))
513 return run_collapse_range(run, vcn, len);
525 if (r->vcn >= end) {
526 r->vcn -= len;
530 if (r->vcn + r->len <= end) {
536 d = end - r->vcn;
540 r->vcn -= len - d;
555 bool run_insert_range(struct runs_tree *run, CLST vcn, CLST len)
560 if (WARN_ON(!run_lookup(run, vcn, &index)))
566 if (vcn > r->vcn)
570 r->vcn += len;
574 if (vcn > r->vcn) {
576 CLST len1 = vcn - r->vcn;
582 if (!run_add_entry(run, vcn + len, lcn2, len2, false))
586 if (!run_add_entry(run, vcn, SPARSE_LCN, len, false))
595 bool run_get_entry(const struct runs_tree *run, size_t index, CLST *vcn,
608 if (vcn)
609 *vcn = r->vcn;
820 CLST next_vcn, vcn, lcn;
841 for (next_vcn = r->vcn + r->len; next_vcn < evcn1;
842 next_vcn = r->vcn + r->len) {
843 if (++r >= r_end || r->vcn != next_vcn)
849 len = svcn - r->vcn;
850 vcn = svcn;
855 next_vcn = vcn + len;
857 len = evcn1 - vcn;
902 vcn = r->vcn;
921 CLST svcn, CLST evcn, CLST vcn, const u8 *run_buf,
1000 "Volume contains 64 bits run: vcn %llx, lcn %llx, len %llx.\n"
1020 } else if (vcn64 >= vcn) {
1023 } else if (next_vcn > vcn) {
1024 u64 dlen = vcn - vcn64;
1026 if (!run_add_entry(run, vcn, lcn + dlen, len - dlen,
1051 CLST svcn, CLST evcn, CLST vcn, const u8 *run_buf,
1060 ret = run_unpack(run, sbi, ino, svcn, evcn, vcn, run_buf, run_buf_size);
1070 next_vcn = vcn = svcn;
1073 for (ok = run_lookup_entry(run, vcn, &lcn, &len, &index);
1075 ok = run_get_entry(run, ++index, &vcn, &lcn, &len)) {
1076 if (!ok || next_vcn != vcn)
1079 next_vcn = vcn + len;
1114 * Return the highest vcn from a mapping pairs array
1117 int run_get_highest_vcn(CLST vcn, const u8 *run_buf, u64 *highest_vcn)
1119 u64 vcn64 = vcn;