Lines Matching refs:rl

151 	runlist *rl;
198 rl = ntfs_mapping_pairs_decompress(vol, a, NULL);
199 if (!rl) {
215 for (i = 0, total = 0; rl[i].length; i++) {
216 if (total + (rl[i].length << vol->cluster_size_bits) >=
225 * rl[i].length << vol->cluster_size_bits, do the
233 intbuf = ntfs_malloc(rl[i].length << vol->cluster_size_bits);
235 free(rl);
249 r = ntfs_pread(vol->dev, rl[i].lcn <<
250 vol->cluster_size_bits, rl[i].length <<
252 if (r != rl[i].length << vol->cluster_size_bits) {
256 else if (r < rl[i].length <<
265 free(rl);
285 r = ntfs_pread(vol->dev, rl[i].lcn << vol->cluster_size_bits,
286 rl[i].length << vol->cluster_size_bits,
288 if (r != rl[i].length << vol->cluster_size_bits) {
292 else if (r < rl[i].length << vol->cluster_size_bits) {
300 free(rl);
305 free(rl);
324 na->rl = NULL;
539 if (NAttrNonResident(na) && na->rl)
540 free(na->rl);
565 lcn = ntfs_rl_vcn_to_lcn(na->rl, vcn);
576 runlist_element *rl;
579 rl = ntfs_mapping_pairs_decompress(na->ni->vol, ctx->attr,
580 na->rl);
581 if (rl) {
582 na->rl = rl;
608 runlist_element *rl;
613 lcn = ntfs_rl_vcn_to_lcn(na->rl, vcn);
617 existing_vcn = (na->rl ? na->rl->vcn : -1);
636 rl = ntfs_mapping_pairs_decompress(na->ni->vol, a,
637 na->rl);
638 if (rl) {
639 na->rl = rl;
645 rl = (runlist_element*)NULL;
657 rl = (runlist_element*)NULL;
658 } while (rl && (needed < last_vcn));
661 if (rl && startseen)
663 return (rl ? 0 : -1);
704 runlist_element *rl;
707 if (ntfs_rl_vcn_to_lcn(na->rl, next_vcn) == LCN_RL_NOT_MAPPED)
718 rl = ntfs_mapping_pairs_decompress(na->ni->vol,
719 a, na->rl);
720 if (!rl)
722 na->rl = rl;
786 * cluster number (lcn) of a device using the runlist @na->rl to map vcns to
813 lcn = ntfs_rl_vcn_to_lcn(na->rl, vcn);
853 runlist_element *rl;
865 rl = na->rl;
866 if (!rl)
868 if (vcn < rl[0].vcn)
870 while (rl->length) {
871 if (vcn < rl[1].vcn) {
872 if (rl->lcn >= (LCN)LCN_HOLE)
873 return rl;
876 rl++;
878 switch (rl->lcn) {
916 runlist_element *rl;
1031 rl = ntfs_attr_find_vcn(na, pos >> vol->cluster_size_bits);
1032 if (!rl) {
1049 ofs = pos - (rl->vcn << vol->cluster_size_bits);
1050 for (; count; rl++, ofs = 0) {
1051 if (rl->lcn == LCN_RL_NOT_MAPPED) {
1052 rl = ntfs_attr_find_vcn(na, rl->vcn);
1053 if (!rl) {
1062 ofs = pos + total - (rl->vcn << vol->cluster_size_bits);
1064 if (!rl->length) {
1069 if (rl->lcn < (LCN)0) {
1070 if (rl->lcn != (LCN)LCN_HOLE) {
1073 (long long)rl->lcn);
1077 to_read = min(count, (rl->length <<
1087 to_read = min(count, (rl->length << vol->cluster_size_bits) -
1091 " %lld.\n", (long long)to_read, (long long)rl->vcn,
1092 (long long )rl->lcn, (long long)ofs);
1093 br = ntfs_pread(vol->dev, (rl->lcn << vol->cluster_size_bits) +
1184 rli = na->rl;
1225 runlist_element **rl, VCN *update_from)
1235 to_write = min(count, ((*rl)->length << vol->cluster_size_bits) - *ofs);
1237 cur_vcn = (*rl)->vcn;
1238 from_vcn = (*rl)->vcn + (*ofs >> vol->cluster_size_bits);
1246 if ((!na->rl
1252 rlc = *rl;
1254 if (((*rl)->lcn == LCN_HOLE)
1266 /* Restore @*rl, it probably get lost during runlist mapping. */
1267 *rl = ntfs_attr_find_vcn(na, cur_vcn);
1268 if (!*rl) {
1276 rlc = *rl;
1295 rlc = *rl;
1308 + 1 + (*rl)->vcn - from_vcn;
1320 if ((from_vcn & -na->compression_block_clusters) <= (*rl)->vcn)
1321 alloc_vcn = (*rl)->vcn;
1326 if (need > (*rl)->length) {
1330 (long long)(*rl)->length);
1344 *rl = ntfs_runlists_merge(na->rl, rlc);
1349 if (*rl && (na->data_flags & ATTR_COMPRESSION_MASK)) {
1350 runlist_element *oldrl = na->rl;
1351 na->rl = *rl;
1352 *rl = ntfs_rl_extend(na,*rl,2);
1353 if (!*rl) na->rl = oldrl; /* restore to original if failed */
1355 if (!*rl) {
1366 na->rl = *rl;
1369 *rl = ntfs_attr_find_vcn(na, cur_vcn);
1370 if (!*rl) {
1381 if ((*rl)->lcn < 0)
1382 (*rl)++;
1384 if ((*rl)->lcn < 0) {
1396 if ((*rl)->vcn < cur_vcn) {
1401 *ofs += (cur_vcn - (*rl)->vcn) << vol->cluster_size_bits;
1403 if ((*rl)->vcn > cur_vcn) {
1407 *ofs -= ((*rl)->vcn - cur_vcn) << vol->cluster_size_bits;
1437 runlist_element *rl = *prl;
1442 if (rl->length > na->compression_block_clusters) {
1447 rl = *prl;
1451 if (*prl && (rl->length > na->compression_block_clusters)) {
1456 int beginwrite = (pos >> cluster_size_bits) - rl->vcn;
1458 | (na->compression_block_clusters - 1)) + 1 - rl->vcn;
1461 - (rl->length & (na->compression_block_clusters - 1));
1468 if (endblock < rl[0].length) {
1483 xrl = rl;
1492 } while (xrl != rl);
1493 rl[1].length = na->compression_block_clusters;
1494 rl[2].length = rl[0].length - endblock;
1495 rl[0].length = endblock
1497 rl[1].lcn = LCN_HOLE;
1498 rl[2].lcn = LCN_HOLE;
1499 rl[1].vcn = rl[0].vcn + rl[0].length;
1500 rl[2].vcn = rl[1].vcn
1502 rl = ++(*prl);
1512 xrl = rl;
1521 } while (xrl != rl);
1524 rl[1].length = rl[0].length - endblock;
1525 rl[0].length = endblock;
1526 rl[1].vcn = rl[0].vcn + rl[0].length;
1527 rl[1].lcn = LCN_HOLE;
1531 rl[1].length = rl[0].length - endblock;
1532 rl[0].length = endblock;
1533 rl[1].vcn = rl[0].vcn + rl[0].length;
1534 rl[1].lcn = LCN_HOLE;
1535 rl = ++(*prl);
1539 if (rl[1].length) {
1551 xrl = rl;
1560 } while (xrl != rl);
1562 rl[2].lcn = rl[1].lcn;
1563 rl[2].vcn = rl[1].vcn;
1564 rl[2].length = rl[1].length;
1566 rl[1].vcn -= na->compression_block_clusters;
1567 rl[1].lcn = LCN_HOLE;
1568 rl[1].length = na->compression_block_clusters;
1569 rl[0].length -= na->compression_block_clusters;
1570 if (pos >= (rl[1].vcn << cluster_size_bits)) {
1571 rl = ++(*prl);
1598 runlist_element *rl = *prl;
1607 endblock = (((pos + count - 1) >> cluster_size_bits) | (na->compression_block_clusters - 1)) + 1 - rl->vcn;
1609 zrl = rl;
1621 runlist_element *orl = na->rl;
1631 irl = *prl - na->rl;
1644 rl = (runlist_element*)NULL;
1653 if ((na->rl != orl) || ((*prl)->lcn != olcn)) {
1654 zrl = &na->rl[irl];
1664 rl = (runlist_element*)NULL;
1666 rl = ntfs_rl_extend(na,*prl,2);
1670 *prl = rl;
1671 if (rl && undecided) {
1673 zrl = rl;
1687 if (rl && (allocated < endblock) && (zrl->lcn == LCN_HOLE)) {
1698 /* beware : rl was reallocated */
1699 rl = *prl;
1700 zrl = &rl[irl];
1768 runlist_element *rl;
1948 na->rl = ntfs_rl_extend(na,na->rl,2);
1949 if (!na->rl)
2010 rl = ntfs_attr_find_vcn(na, pos >> vol->cluster_size_bits);
2011 if (!rl) {
2040 if ((rl->lcn == (LCN)LCN_HOLE)
2042 if (rl->length < na->compression_block_clusters)
2050 - rl->length;
2058 &rl, pos, count, &update_from);
2061 if (rl->lcn >= 0) {
2068 &rl, pos, count, &update_from,
2081 ofs = pos - (rl->vcn << vol->cluster_size_bits);
2087 for (hole_end = 0; count; rl++, ofs = 0) {
2088 if (rl->lcn == LCN_RL_NOT_MAPPED) {
2089 rl = ntfs_attr_find_vcn(na, rl->vcn);
2090 if (!rl) {
2099 ofs = pos + total - (rl->vcn << vol->cluster_size_bits);
2101 if (!rl->length) {
2106 if (rl->lcn < (LCN)0) {
2107 hole_end = rl->vcn + rl->length;
2109 if (rl->lcn != (LCN)LCN_HOLE) {
2113 (long long)rl->lcn);
2116 if (ntfs_attr_fill_hole(na, fullcount, &ofs, &rl,
2121 while (rl->length
2122 && (ofs >= (rl->length << vol->cluster_size_bits))) {
2123 ofs -= rl->length << vol->cluster_size_bits;
2124 rl++;
2129 to_write = min(count, (rl->length << vol->cluster_size_bits) - ofs);
2132 "%lld.\n", (long long)to_write, (long long)rl->vcn,
2133 (long long)rl->lcn, (long long)ofs);
2136 s64 wpos = (rl->lcn << vol->cluster_size_bits) + ofs;
2137 s64 wend = (rl->vcn << vol->cluster_size_bits) + ofs + to_write;
2167 rl, wpos, ofs, to_write,
2181 rl, wpos, ofs, to_write,
2315 runlist_element *rl;
2360 na->rl = ntfs_rl_extend(na,na->rl,2);
2361 if (!na->rl)
2365 rl = ntfs_attr_find_vcn(na, (na->initialized_size - 1) >> vol->cluster_size_bits);
2366 if (!rl) {
2384 if (rl->lcn >= 0) {
2387 xrl = rl;
2394 if (rl->lcn == (LCN)LCN_HOLE) {
2395 if (rl->length < na->compression_block_clusters)
2398 - rl->length;
2407 ofs = na->initialized_size - (rl->vcn << vol->cluster_size_bits);
2409 if (rl->lcn == LCN_RL_NOT_MAPPED) {
2410 rl = ntfs_attr_find_vcn(na, rl->vcn);
2411 if (!rl) {
2420 ofs = na->initialized_size - (rl->vcn << vol->cluster_size_bits);
2422 if (!rl->length) {
2427 if (rl->lcn < (LCN)0) {
2428 if (rl->lcn != (LCN)LCN_HOLE) {
2432 (long long)rl->lcn);
2436 if (ntfs_attr_fill_hole(na, (s64)0, &ofs, &rl, &update_from))
2439 while (rl->length
2440 && (ofs >= (rl->length << vol->cluster_size_bits))) {
2441 ofs -= rl->length << vol->cluster_size_bits;
2442 rl++;
2449 failed = ntfs_compressed_close(na, rl, ofs, &update_from);
4734 runlist *rl;
4764 rl = ntfs_cluster_alloc(vol, 0, new_allocated_size >>
4766 if (!rl)
4769 rl = NULL;
4776 na->rl = rl;
4792 if (rl) {
4807 mp_size = ntfs_get_size_for_mapping_pairs(vol, rl, 0, INT_MAX);
4877 rl, 0, NULL) < 0) {
4890 if (rl && ntfs_cluster_free(vol, na, 0, -1) < 0)
4896 na->rl = NULL;
4897 free(rl);
5341 bytes_read = ntfs_rl_pread(vol, na->rl, 0, na->initialized_size,
5372 free(na->rl);
5373 na->rl = NULL;
5408 sparse = ntfs_rl_sparse(na->rl);
5490 new_compr_size = ntfs_rl_get_compressed_size(na->ni->vol, na->rl);
5533 if (!na || !na->rl) {
5570 xrl = na->rl;
5612 stop_rl = na->rl;
5636 first_lcn = ntfs_rl_vcn_to_lcn(na->rl, stop_vcn);
5751 a->mapping_pairs_offset), mp_size, na->rl,
5829 na->rl, stop_vcn, INT_MAX);
5869 le16_to_cpu(a->mapping_pairs_offset), mp_size, na->rl,
5905 * Build mapping pairs from @na->rl and write them to the disk. Also, this
6007 if (ntfs_rl_truncate(&na->rl, first_free_vcn)) {
6012 free(na->rl);
6013 na->rl = NULL;
6107 runlist *rl, *rln;
6167 rl = ntfs_malloc(0x1000);
6168 if (!rl)
6171 rl[0].vcn = (na->allocated_size >>
6173 rl[0].lcn = LCN_HOLE;
6174 rl[0].length = first_free_vcn -
6176 rl[1].vcn = first_free_vcn;
6177 rl[1].lcn = LCN_ENOENT;
6178 rl[1].length = 0;
6188 if (na->rl->length) {
6190 for (rl = na->rl; (rl + 1)->length; rl++)
6196 while (rl->lcn < 0 && rl != na->rl)
6197 rl--;
6201 if (rl->lcn >= 0)
6202 lcn_seek_from = rl->lcn + rl->length;
6205 rl = ntfs_cluster_alloc(vol, na->allocated_size >>
6210 if (!rl) {
6221 rln = ntfs_runlists_merge(na->rl, rl);
6226 ntfs_cluster_free_from_rl(vol, rl);
6227 free(rl);
6231 na->rl = rln;
6299 if (ntfs_rl_truncate(&na->rl, org_alloc_size >>
6305 free(na->rl);
6306 na->rl = NULL;