Lines Matching refs:rl

97 	runlist *rl;
144 rl = ntfs_mapping_pairs_decompress(vol, a, NULL);
145 if (!rl) {
161 for (i = 0, total = 0; rl[i].length; i++) {
162 if (total + (rl[i].length << vol->cluster_size_bits) >=
171 * rl[i].length << vol->cluster_size_bits, do the
179 intbuf = ntfs_malloc(rl[i].length <<
183 free(rl);
198 r = ntfs_pread(vol->u.dev, rl[i].lcn <<
199 vol->cluster_size_bits, rl[i].length <<
201 if (r != rl[i].length << vol->cluster_size_bits) {
207 } else if (r < rl[i].length <<
217 free(rl);
237 r = ntfs_pread(vol->u.dev, rl[i].lcn << vol->cluster_size_bits,
238 rl[i].length << vol->cluster_size_bits,
240 if (r != rl[i].length << vol->cluster_size_bits) {
246 } else if (r < rl[i].length << vol->cluster_size_bits) {
255 free(rl);
260 free(rl);
279 na->rl = NULL;
480 if (NAttrNonResident(na) && na->rl)
481 free(na->rl);
505 lcn = ntfs_rl_vcn_to_lcn(na->rl, vcn);
516 runlist_element *rl;
519 rl = ntfs_mapping_pairs_decompress(na->ni->vol, ctx->attr,
520 na->rl);
521 if (rl) {
522 na->rl = rl;
545 runlist *rl;
556 for (rl = na->rl; rl->vcn <= to_vcn;) {
558 if (rl->lcn >= 0 || rl->lcn == LCN_HOLE || (rl->vcn +
559 rl->length < from_vcn &&
560 rl->lcn == LCN_RL_NOT_MAPPED)) {
561 rl++;
566 if (rl->lcn == LCN_ENOENT)
570 if (rl->lcn < 0 && rl->lcn != LCN_RL_NOT_MAPPED) {
583 CASE_SENSITIVE, rl->vcn, NULL, 0,
588 rl = ntfs_mapping_pairs_decompress(na->ni->vol, ctx->attr,
589 na->rl);
590 if (!rl)
592 na->rl = rl;
635 runlist_element *rl;
638 if (ntfs_rl_vcn_to_lcn(na->rl, next_vcn) == LCN_RL_NOT_MAPPED)
649 rl = ntfs_mapping_pairs_decompress(na->ni->vol,
650 a, na->rl);
651 if (!rl)
653 na->rl = rl;
724 * cluster number (lcn) of a device using the runlist @na->rl to map vcns to
751 lcn = ntfs_rl_vcn_to_lcn(na->rl, vcn);
791 runlist_element *rl;
803 rl = na->rl;
804 if (!rl)
806 if (vcn < rl[0].vcn)
808 while (rl->length) {
809 if (vcn < rl[1].vcn) {
810 if (rl->lcn >= (LCN)LCN_HOLE)
811 return rl;
814 rl++;
816 switch (rl->lcn) {
870 runlist_element *rl;
941 rl = ntfs_attr_find_vcn(na, pos >> vol->cluster_size_bits);
942 if (!rl) {
957 ofs = pos - (rl->vcn << vol->cluster_size_bits);
958 for (; count; rl++, ofs = 0) {
959 if (rl->lcn == LCN_RL_NOT_MAPPED) {
960 rl = ntfs_attr_find_vcn(na, rl->vcn);
961 if (!rl) {
967 ofs = pos + total - (rl->vcn << vol->cluster_size_bits);
969 if (!rl->length)
971 if (rl->lcn < (LCN)0) {
972 if (rl->lcn != (LCN)LCN_HOLE)
975 to_read = min(count, (rl->length <<
985 to_read = min(count, (rl->length << vol->cluster_size_bits) -
989 "lcn 0x%llx, ofs 0x%llx.\n", to_read, rl->vcn,
990 rl->lcn, ofs);
991 br = ntfs_pread(vol->u.dev, (rl->lcn << vol->cluster_size_bits) +
1043 runlist_element *rl;
1141 na->rl, na->initialized_size,
1170 rl = ntfs_attr_find_vcn(na, pos >> vol->cluster_size_bits);
1171 if (!rl) {
1186 ofs = pos - (rl->vcn << vol->cluster_size_bits);
1187 for (; count; rl++, ofs = 0) {
1188 if (rl->lcn == LCN_RL_NOT_MAPPED) {
1189 rl = ntfs_attr_find_vcn(na, rl->vcn);
1190 if (!rl) {
1196 ofs = pos + total - (rl->vcn << vol->cluster_size_bits);
1198 if (!rl->length) {
1202 if (rl->lcn < (LCN)0) {
1207 if (rl->lcn != (LCN)LCN_HOLE) {
1212 to_write = min(count, (rl->length <<
1216 cur_vcn = rl->vcn;
1217 from_vcn = rl->vcn + (ofs >> vol->cluster_size_bits);
1227 * Restore @rl, it probably get lost during runlist
1230 rl = ntfs_attr_find_vcn(na, cur_vcn);
1231 if (!rl) {
1243 rlc = rl;
1254 rlc = rl;
1270 rl->vcn - from_vcn,
1280 rl = ntfs_runlists_merge(na->rl, rlc);
1281 if (!rl) {
1293 na->rl = rl;
1297 rl = ntfs_attr_find_vcn(na, cur_vcn);
1298 if (!rl) {
1311 if (rl->lcn < 0)
1312 rl++;
1314 if (rl->lcn < 0) {
1321 if (rl->vcn < cur_vcn) {
1326 ofs += (cur_vcn - rl->vcn) <<
1329 if (rl->vcn > cur_vcn) {
1334 ofs -= (rl->vcn - cur_vcn) <<
1338 * Clear region between start of @rl->vcn cluster and
1341 if (ofs && ntfs_rl_fill_zero(vol, na->rl, rl->vcn <<
1346 to_write = min(count, (rl->length << vol->cluster_size_bits) -
1350 " ofs 0x%llx.\n", to_write, rl->vcn, rl->lcn,
1353 s64 pos = (rl->lcn << vol->cluster_size_bits) + ofs;
3620 runlist *rl;
3655 rl = ntfs_cluster_alloc(vol, 0, new_allocated_size >>
3657 if (!rl) {
3665 rl = NULL;
3671 na->rl = rl;
3682 if (rl) {
3696 mp_size = ntfs_get_size_for_mapping_pairs(vol, rl, 0);
3753 rl, 0, NULL) < 0) {
3766 if (rl && ntfs_cluster_free(vol, na, 0, -1) < 0)
3771 na->rl = NULL;
3772 free(rl);
4146 bytes_read = ntfs_rl_pread(vol, na->rl, 0, na->initialized_size,
4176 free(na->rl);
4177 na->rl = NULL;
4197 * Build mapping pairs from @na->rl and write them to the disk. Also, this
4235 if (!na || !na->rl) {
4286 first_lcn = ntfs_rl_vcn_to_lcn(na->rl, stop_vcn);
4339 sparse = ntfs_rl_sparse(na->rl);
4362 sparse = ntfs_rl_sparse(na->rl);
4466 na->ni->vol, na->rl);
4507 mp_size = ntfs_get_size_for_mapping_pairs(na->ni->vol, na->rl,
4602 a->u.nonres.mapping_pairs_offset), mp_size, na->rl,
4664 na->rl, stop_vcn);
4705 le16_to_cpu(a->u.nonres.mapping_pairs_offset), mp_size, na->rl,
4795 if (ntfs_rl_truncate(&na->rl, first_free_vcn)) {
4801 free(na->rl);
4802 na->rl = NULL;
4890 runlist *rl, *rln;
4936 rl = ntfs_malloc(0x1000);
4937 if (!rl)
4940 rl[0].vcn = (na->allocated_size >>
4942 rl[0].lcn = LCN_HOLE;
4943 rl[0].length = first_free_vcn -
4945 rl[1].vcn = first_free_vcn;
4946 rl[1].lcn = LCN_ENOENT;
4947 rl[1].length = 0;
4959 if (na->rl->length) {
4961 for (rl = na->rl; (rl + 1)->length; rl++)
4967 while (rl->lcn < 0 && rl != na->rl)
4968 rl--;
4972 if (rl->lcn >= 0)
4973 lcn_seek_from = rl->lcn + rl->length;
4976 rl = ntfs_cluster_alloc(vol, na->allocated_size >>
4981 if (!rl) {
4988 rln = ntfs_runlists_merge(na->rl, rl);
4993 ntfs_cluster_free_from_rl(vol, rl);
4994 free(rl);
4998 na->rl = rln;
5055 if (ntfs_rl_truncate(&na->rl, org_alloc_size >>
5061 free(na->rl);
5062 na->rl = NULL;