Lines Matching full:run
61 struct runs_tree *run, const CLST *vcn) in attr_load_runs() argument
69 if (svcn >= evcn + 1 || run_is_mapped_full(run, svcn, evcn)) in attr_load_runs()
81 err = run_unpack_ex(run, ni->mi.sbi, ni->mi.rno, svcn, evcn, in attr_load_runs()
93 static int run_deallocate_ex(struct ntfs_sb_info *sbi, struct runs_tree *run, in run_deallocate_ex() argument
104 if (!run_lookup_entry(run, vcn, &lcn, &clen, &idx)) { in run_deallocate_ex()
106 run_truncate(run, vcn0); in run_deallocate_ex()
143 if (!run_get_entry(run, ++idx, &vcn, &lcn, &clen) || in run_deallocate_ex()
145 /* Save memory - don't load entire run. */ in run_deallocate_ex()
158 * attr_allocate_clusters - Find free space, mark it as used and store in @run.
160 int attr_allocate_clusters(struct ntfs_sb_info *sbi, struct runs_tree *run, in attr_allocate_clusters() argument
168 size_t cnt = run->count; in attr_allocate_clusters()
198 /* Add new fragment into run storage. */ in attr_allocate_clusters()
199 if (!run_add_entry(run, vcn, lcn, flen, opt & ALLOCATE_MFT)) { in attr_allocate_clusters()
229 (opt & ALLOCATE_ONE_FR) || (fr && run->count - cnt >= fr)) { in attr_allocate_clusters()
240 run_deallocate_ex(sbi, run, vcn0, vcn - vcn0, NULL, false, in attr_allocate_clusters()
242 run_truncate(run, vcn0); in attr_allocate_clusters()
256 u64 new_size, struct runs_tree *run, in attr_make_nonresident() argument
291 run_init(run); in attr_make_nonresident()
306 err = attr_allocate_clusters(sbi, run, NULL, 0, 0, len, NULL, in attr_make_nonresident()
315 err = ntfs_sb_write_run(sbi, run, 0, data, rsize, 0); in attr_make_nonresident()
346 attr_s->name_len, run, 0, alen, in attr_make_nonresident()
371 run_deallocate(sbi, run, false); in attr_make_nonresident()
372 run_close(run); in attr_make_nonresident()
384 u64 new_size, struct runs_tree *run, in attr_set_size_res() argument
402 run, ins_attr, NULL); in attr_set_size_res()
431 const __le16 *name, u8 name_len, struct runs_tree *run, in attr_set_size_ex() argument
450 struct runs_tree *run_da = run == &ni->file.run ? &ni->file.run_da : in attr_set_size_ex()
467 err = attr_set_size_res(ni, attr_b, le_b, mi_b, new_size, run, in attr_set_size_ex()
527 /* Try to remove fragment from delay allocated run. */ in attr_set_size_ex()
569 err = attr_load_runs(attr, ni, run, NULL); in attr_set_size_ex()
586 * - update packed run in 'mi' in attr_set_size_ex()
611 !run_lookup_entry(run, vcn, &lcn, NULL, NULL)) { in attr_set_size_ex()
633 if (!run_add_entry(run, vcn, SPARSE_LCN, to_allocate, in attr_set_size_ex()
642 sbi, run, run_da, vcn, lcn, to_allocate, in attr_set_size_ex()
663 err = mi_pack_runs(mi, attr, run, vcn - svcn); in attr_set_size_ex()
721 err = ni_insert_nonresident(ni, type, name, name_len, run, in attr_set_size_ex()
745 run_truncate_head(run, evcn + 1); in attr_set_size_ex()
765 * - update packed run in 'mi' in attr_set_size_ex()
776 err = mi_pack_runs(mi, attr, run, vcn - svcn); in attr_set_size_ex()
821 err = run_deallocate_ex(sbi, run, vcn, evcn - vcn + 1, &dlen, in attr_set_size_ex()
832 run_truncate(run, vcn); in attr_set_size_ex()
927 if (mi_pack_runs(mi, attr, run, evcn - svcn + 1)) in attr_set_size_ex()
931 run_deallocate_ex(sbi, run, vcn, alen, NULL, false, run_da); in attr_set_size_ex()
933 run_truncate(run, vcn); in attr_set_size_ex()
965 if (run_lookup_entry_da(&ni->file.run, !no_da ? &ni->file.run_da : NULL, in attr_data_get_block()
997 struct runs_tree *run = &ni->file.run; in attr_data_get_block_locked() local
1011 if (run_lookup_entry_da(run, da ? &ni->file.run_da : NULL, vcn, lcn, in attr_data_get_block_locked()
1086 err = attr_load_runs(attr, ni, run, NULL); in attr_data_get_block_locked()
1092 &hint, run); in attr_data_get_block_locked()
1106 if (run_lookup_entry_da(run, da ? run_da : NULL, vcn, lcn, in attr_data_get_block_locked()
1156 err = attr_load_runs(attr2, ni, run, NULL); in attr_data_get_block_locked()
1171 err = attr_load_runs(attr2, ni, run, NULL); in attr_data_get_block_locked()
1212 if (!run_add_entry(run, evcn1, SPARSE_LCN, vcn - evcn1, in attr_data_get_block_locked()
1217 } else if (vcn && !run_lookup_entry(run, vcn - 1, &hint, NULL, NULL)) { in attr_data_get_block_locked()
1222 err = attr_allocate_clusters(sbi, run, run_da, vcn, hint + 1, to_alloc, in attr_data_get_block_locked()
1237 if (!run_lookup_entry(run, vcn0, lcn, len, NULL)) { in attr_data_get_block_locked()
1253 err = mi_pack_runs(mi, attr, run, max(end, evcn1) - svcn); in attr_data_get_block_locked()
1358 err = attr_load_runs(attr, ni, run, &end); in attr_data_get_block_locked()
1364 err = mi_pack_runs(mi, attr, run, evcn1 - next_svcn); in attr_data_get_block_locked()
1376 ni->file.ads.len, run, next_svcn, in attr_data_get_block_locked()
1383 run_truncate_around(run, vcn); in attr_data_get_block_locked()
1397 if (run_deallocate_ex(sbi, run, vcn, *len, NULL, false, run_da) || in attr_data_get_block_locked()
1398 !run_add_entry(run, vcn, SPARSE_LCN, *len, false) || in attr_data_get_block_locked()
1399 mi_pack_runs(mi, attr, run, max(end, evcn1) - svcn)) { in attr_data_get_block_locked()
1440 const __le16 *name, u8 name_len, struct runs_tree *run, in attr_load_runs_vcn() argument
1472 err = run_unpack_ex(run, ni->mi.sbi, ni->mi.rno, svcn, evcn, svcn, in attr_load_runs_vcn()
1483 const __le16 *name, u8 name_len, struct runs_tree *run, in attr_load_runs_range() argument
1495 if (run_lookup_entry(run, vcn, &lcn, &clen, NULL)) { in attr_load_runs_range()
1503 err = attr_load_runs_vcn(ni, type, name, name_len, run, vcn); in attr_load_runs_range()
1521 struct runs_tree *run, u64 frame, u64 frames, in attr_wof_frame_info() argument
1612 ARRAY_SIZE(WOF_NAME), run, in attr_wof_frame_info()
1617 err = ntfs_read_run(sbi, run, addr, from, to - from); in attr_wof_frame_info()
1671 * run - run to use, usually == &ni->file.run.
1675 CLST frame, CLST *clst_data, struct runs_tree *run) in attr_is_frame_compressed() argument
1693 if (!run_lookup_entry(run, vcn, &lcn, &clen, &idx)) { in attr_is_frame_compressed()
1695 attr->name_len, run, vcn); in attr_is_frame_compressed()
1699 if (!run_lookup_entry(run, vcn, &lcn, &clen, &idx)) in attr_is_frame_compressed()
1728 if (!run_get_entry(run, ++idx, &vcn, &lcn, &clen) || in attr_is_frame_compressed()
1732 attr->name_len, run, vcn_next); in attr_is_frame_compressed()
1737 if (!run_lookup_entry(run, vcn, &lcn, &clen, &idx)) in attr_is_frame_compressed()
1780 struct runs_tree *run = &ni->file.run; in attr_allocate_frame() local
1825 err = attr_load_runs(attr, ni, run, NULL); in attr_allocate_frame()
1829 err = attr_is_frame_compressed(ni, attr_b, frame, &clst_data, run); in attr_allocate_frame()
1841 err = run_deallocate_ex(sbi, run, vcn + len, clst_data - len, in attr_allocate_frame()
1846 if (!run_add_entry(run, vcn + len, SPARSE_LCN, clst_data - len, in attr_allocate_frame()
1852 /* Run contains updated range [vcn + len : end). */ in attr_allocate_frame()
1857 !run_lookup_entry(run, vcn + clst_data - 1, &hint, NULL, in attr_allocate_frame()
1862 err = attr_allocate_clusters(sbi, run, NULL, vcn + clst_data, in attr_allocate_frame()
1870 /* Run contains updated range [vcn + clst_data : end). */ in attr_allocate_frame()
1876 err = mi_pack_runs(mi, attr, run, max(end, evcn1) - svcn); in attr_allocate_frame()
1964 err = attr_load_runs(attr, ni, run, &end); in attr_allocate_frame()
1970 err = mi_pack_runs(mi, attr, run, evcn1 - next_svcn); in attr_allocate_frame()
1983 ni->file.ads.len, run, next_svcn, in attr_allocate_frame()
1990 run_truncate_around(run, vcn); in attr_allocate_frame()
2012 struct runs_tree *run = &ni->file.run; in attr_collapse_range() local
2060 ni->file.ads.len, &ni->file.run, vbo, in attr_collapse_range()
2085 ni->file.ads.len, run, in attr_collapse_range()
2159 run_truncate(run, 0); in attr_collapse_range()
2160 err = attr_load_runs(attr, ni, run, &svcn); in attr_collapse_range()
2164 vcn1 = vcn + done; /* original vcn in attr/run. */ in attr_collapse_range()
2167 err = run_deallocate_ex(sbi, run, vcn1, eat, &dealloc, true, in attr_collapse_range()
2174 if (!run_collapse_range(run, vcn1, eat, done)) { in attr_collapse_range()
2188 err = mi_pack_runs(mi, attr, run, evcn1 - svcn - eat); in attr_collapse_range()
2196 ni->file.ads.len, run, next_svcn, in attr_collapse_range()
2207 run_truncate(run, 0); in attr_collapse_range()
2307 struct runs_tree *run = &ni->file.run; in attr_punch_hole() local
2370 run_truncate(run, 0); in attr_punch_hole()
2409 err = attr_load_runs(attr, ni, run, &svcn); in attr_punch_hole()
2420 err = run_deallocate_ex(NULL, run, vcn1, zero, &hole2, false, in attr_punch_hole()
2429 /* Make a clone of run to undo. */ in attr_punch_hole()
2430 err = run_clone(run, &run2); in attr_punch_hole()
2435 if (!run_add_entry(run, vcn1, SPARSE_LCN, zero, false)) { in attr_punch_hole()
2440 /* Update run in attribute segment. */ in attr_punch_hole()
2441 err = mi_pack_runs(mi, attr, run, evcn1 - svcn); in attr_punch_hole()
2449 ni->file.ads.len, run, next_svcn, in attr_punch_hole()
2464 run_truncate(run, 0); in attr_punch_hole()
2530 struct runs_tree *run = &ni->file.run; in attr_insert_range() local
2593 ni->file.ads.len, run, data_size + bytes, in attr_insert_range()
2651 run_truncate(run, 0); /* clear cached values. */ in attr_insert_range()
2652 err = attr_load_runs(attr, ni, run, NULL); in attr_insert_range()
2656 err = run_insert_range(run, vcn, len); in attr_insert_range()
2665 err = mi_pack_runs(mi, attr, run, evcn1 + len - svcn); in attr_insert_range()
2684 ni->file.ads.len, run, next_svcn, in attr_insert_range()
2725 run_truncate(run, 0); /* clear cached values. */ in attr_insert_range()
2758 if (attr_load_runs(attr, ni, run, NULL)) in attr_insert_range()
2761 if (!run_collapse_range(run, vcn, len, 0)) in attr_insert_range()
2764 if (mi_pack_runs(mi, attr, run, evcn1 + len - svcn)) in attr_insert_range()
2808 &ni->file.run, &attr, NULL); in attr_force_nonresident()