Lines Matching refs:vcn
61 struct runs_tree *run, const CLST *vcn)
72 if (vcn && (evcn < *vcn || *vcn < svcn))
82 vcn ? *vcn : svcn, Add2Ptr(attr, run_off),
94 CLST vcn, CLST len, CLST *done, bool trim)
97 CLST vcn_next, vcn0 = vcn, lcn, clen, dn = 0;
103 if (!run_lookup_entry(run, vcn, &lcn, &clen, &idx)) {
131 vcn_next = vcn + clen;
132 if (!run_get_entry(run, ++idx, &vcn, &lcn, &clen) ||
133 vcn != vcn_next) {
150 CLST vcn, CLST lcn, CLST len, CLST *pre_alloc,
155 CLST flen, vcn0 = vcn, pre = pre_alloc ? *pre_alloc : 0;
172 if (vcn == vcn0) {
181 if (!run_add_entry(run, vcn, lcn, flen, opt & ALLOCATE_MFT)) {
199 vcn += flen;
203 *alen = vcn - vcn0;
212 if (vcn - vcn0) {
213 run_deallocate_ex(sbi, run, vcn0, vcn - vcn0, NULL, false);
414 CLST alen, vcn, lcn, new_alen, old_alen, svcn, evcn;
468 vcn = old_alen - 1;
473 if (svcn <= vcn && vcn <= evcn) {
482 attr = ni_find_attr(ni, attr_b, &le, type, name, name_len, &vcn,
495 * attr,mi,le - last attribute segment (containing 'vcn').
516 * - allocate space (vcn, lcn, len)
542 !run_lookup_entry(run, vcn, &lcn, NULL, NULL)) {
561 vcn = old_alen;
564 if (!run_add_entry(run, vcn, SPARSE_LCN, to_allocate,
573 sbi, run, vcn, lcn, to_allocate, &pre_alloc,
586 vcn += alen;
593 err = mi_pack_runs(mi, attr, run, vcn - svcn);
602 if (next_svcn >= vcn && !to_allocate) {
609 if (is_mft && next_svcn == vcn &&
630 if (next_svcn < vcn)
645 if (next_svcn >= vcn) {
652 next_svcn, vcn - next_svcn,
683 old_valid = old_size = old_alloc = (u64)vcn << cluster_bits;
697 * - mark and trim clusters as free (vcn, lcn, len)
701 vcn = max(svcn, new_alen);
702 new_alloc_tmp = (u64)vcn << cluster_bits;
704 if (vcn > svcn) {
705 err = mi_pack_runs(mi, attr, run, vcn - svcn);
708 } else if (le && le->vcn) {
713 * the same size. We deal with last entry (vcn==0)
727 attr->nres.evcn = cpu_to_le64((u64)vcn - 1);
733 if (vcn == new_alen) {
750 err = run_deallocate_ex(sbi, run, vcn, evcn - vcn + 1, &dlen,
761 run_truncate(run, vcn);
767 vcn = svcn - 1;
830 vcn -= alen;
860 run_deallocate_ex(sbi, run, vcn, alen, NULL, false);
862 run_truncate(run, vcn);
872 * attr_data_get_block - Returns 'lcn' and 'len' for given 'vcn'.
874 * @new == NULL means just to get current mapping for 'vcn'
875 * @new != NULL means allocate real cluster if 'vcn' maps to hole
882 int attr_data_get_block(struct ntfs_inode *ni, CLST vcn, CLST clen, CLST *lcn,
903 if (!run_lookup_entry(run, vcn, lcn, len, NULL))
918 if (!run_lookup_entry(run, vcn, lcn, len, NULL))
942 if (vcn >= asize) {
959 if (le_b && (vcn < svcn || evcn1 <= vcn)) {
960 attr = ni_find_attr(ni, attr_b, &le, ATTR_DATA, NULL, 0, &vcn,
976 if (run_lookup_entry(run, vcn, lcn, len, NULL)) {
995 vcn0 = vcn;
1005 /* Get frame aligned vcn and to_alloc. */
1006 vcn = vcn0 & cmask;
1007 to_alloc = ((vcn0 + clen + clst_per_frame - 1) & cmask) - vcn;
1012 /* Check if 'vcn' and 'vcn0' in different attribute segments. */
1013 if (vcn < svcn || evcn1 <= vcn) {
1014 /* Load attribute for truncated vcn. */
1016 &vcn, &mi);
1029 if (vcn + to_alloc > asize)
1030 to_alloc = asize - vcn;
1035 if (vcn > evcn1) {
1036 if (!run_add_entry(run, evcn1, SPARSE_LCN, vcn - evcn1,
1041 } else if (vcn && !run_lookup_entry(run, vcn - 1, &hint, NULL, NULL)) {
1046 err = attr_allocate_clusters(sbi, run, vcn, hint + 1, to_alloc, NULL,
1054 end = vcn + alen;
1059 if (vcn != vcn0) {
1087 /* Stored [vcn : next_svcn) from [vcn : end). */
1188 le->vcn = cpu_to_le64(next_svcn);
1202 run_truncate_around(run, vcn);
1218 if (run_deallocate_ex(sbi, run, vcn, alen, NULL, false) ||
1219 !run_add_entry(run, vcn, SPARSE_LCN, alen, false) ||
1301 CLST vcn)
1313 attr = ni_find_attr(ni, NULL, NULL, type, name, name_len, &vcn, NULL);
1322 if (evcn < vcn || vcn < svcn) {
1348 CLST vcn;
1353 for (vcn = from >> cluster_bits; vcn <= vcn_last; vcn += clen) {
1354 if (!run_lookup_entry(run, vcn, &lcn, &clen, NULL)) {
1356 vcn);
1359 clen = 0; /* Next run_lookup_entry(vcn) must be success. */
1522 CLST clen, lcn, vcn, alen, slen, vcn_next;
1535 vcn = frame * clst_frame;
1538 if (!run_lookup_entry(run, vcn, &lcn, &clen, &idx)) {
1540 attr->name_len, run, vcn);
1544 if (!run_lookup_entry(run, vcn, &lcn, &clen, &idx))
1570 while ((vcn += clen) < alen) {
1571 vcn_next = vcn;
1573 if (!run_get_entry(run, ++idx, &vcn, &lcn, &clen) ||
1574 vcn_next != vcn) {
1580 vcn = vcn_next;
1582 if (!run_lookup_entry(run, vcn, &lcn, &clen, &idx))
1631 CLST vcn, end, clst_data;
1642 vcn = frame << NTFS_LZNT_CUNIT;
1649 if (svcn <= vcn && vcn < evcn1) {
1658 attr = ni_find_attr(ni, attr_b, &le, ATTR_DATA, NULL, 0, &vcn,
1684 err = run_deallocate_ex(sbi, run, vcn + len, clst_data - len,
1689 if (!run_add_entry(run, vcn + len, SPARSE_LCN, clst_data - len,
1694 end = vcn + clst_data;
1695 /* Run contains updated range [vcn + len : end). */
1699 if (vcn + clst_data &&
1700 !run_lookup_entry(run, vcn + clst_data - 1, &hint, NULL,
1705 err = attr_allocate_clusters(sbi, run, vcn + clst_data,
1712 end = vcn + len;
1713 /* Run contains updated range [vcn + clst_data : end). */
1729 /* Stored [vcn : next_svcn) from [vcn : end). */
1813 le->vcn = cpu_to_le64(next_svcn);
1828 run_truncate_around(run, vcn);
1856 CLST vcn, end;
1914 vcn = vbo >> sbi->cluster_bits;
1916 end = vcn + len;
1922 if (svcn <= vcn && vcn < evcn1) {
1931 attr = ni_find_attr(ni, attr_b, &le, ATTR_DATA, NULL, 0, &vcn,
1948 le->vcn = attr->nres.svcn;
1952 } else if (svcn < vcn || end < evcn1) {
1959 vcn1 = max(vcn, svcn);
1972 if (svcn >= vcn) {
1974 attr->nres.svcn = cpu_to_le64(vcn);
1976 le->vcn = attr->nres.svcn;
2113 CLST svcn, evcn1, vcn, len, end, alen, hole, next_svcn;
2176 vcn = vbo >> sbi->cluster_bits;
2178 end = vcn + len;
2185 if (svcn <= vcn && vcn < evcn1) {
2194 attr = ni_find_attr(ni, attr_b, &le, ATTR_DATA, NULL, 0, &vcn,
2211 vcn1 = max(vcn, svcn);
2331 CLST vcn, svcn, evcn1, len, next_svcn;
2376 vcn = vbo >> sbi->cluster_bits;
2412 * Enumerate all attribute segments and shift start vcn.
2418 if (svcn <= vcn && vcn < evcn1) {
2427 attr = ni_find_attr(ni, attr_b, &le, ATTR_DATA, NULL, 0, &vcn,
2443 if (!run_insert_range(run, vcn, len)) {
2460 le->vcn = attr->nres.svcn;
2521 if (svcn <= vcn && vcn < evcn1) {
2529 attr = ni_find_attr(ni, attr_b, &le, ATTR_DATA, NULL, 0, &vcn,
2542 if (!run_collapse_range(run, vcn, len))
2553 le->vcn = attr->nres.svcn;