Lines Matching refs:na
452 static void ntfs_restore_rl(ntfs_attr *na, runlist_element *oldrl) in ntfs_restore_rl() argument
458 vol = na->ni->vol; in ntfs_restore_rl()
460 for (brl=na->rl; brl->length; brl++) { in ntfs_restore_rl()
479 free(na->rl); in ntfs_restore_rl()
480 na->rl = oldrl; in ntfs_restore_rl()
481 if (ntfs_attr_update_mapping_pairs(na, 0)) { in ntfs_restore_rl()
490 static int ntfs_inner_zero(ntfs_attr *na, runlist_element *rl) in ntfs_inner_zero() argument
501 vol = na->ni->vol; in ntfs_inner_zero()
509 && (pos < na->initialized_size)) { in ntfs_inner_zero()
540 static int ntfs_merge_allocation(ntfs_attr *na, runlist_element *rl, in ntfs_merge_allocation() argument
547 vol = na->ni->vol; in ntfs_merge_allocation()
549 if ((rl->vcn << vol->cluster_size_bits) < na->initialized_size) { in ntfs_merge_allocation()
550 err = ntfs_inner_zero(na, rl); in ntfs_merge_allocation()
553 if (na->data_flags & ATTR_IS_SPARSE) { in ntfs_merge_allocation()
554 na->compressed_size += size; in ntfs_merge_allocation()
555 if (na->compressed_size >= na->allocated_size) { in ntfs_merge_allocation()
556 na->data_flags &= ~ATTR_IS_SPARSE; in ntfs_merge_allocation()
557 if (na->compressed_size > na->allocated_size) { in ntfs_merge_allocation()
562 (long long)na->data_size, in ntfs_merge_allocation()
563 (long long)na->compressed_size, in ntfs_merge_allocation()
564 (long long)na->allocated_size); in ntfs_merge_allocation()
572 rl = ntfs_runlists_merge(na->rl, rl); in ntfs_merge_allocation()
577 na->rl = rl; in ntfs_merge_allocation()
579 if (ntfs_attr_update_mapping_pairs(na, 0)) { in ntfs_merge_allocation()
589 static int ntfs_inner_allocation(ntfs_attr *na, s64 alloc_offs, s64 alloc_len) in ntfs_inner_allocation() argument
605 vol = na->ni->vol; in ntfs_inner_allocation()
612 rl = na->rl; in ntfs_inner_allocation()
644 err = ntfs_merge_allocation(na, rlc, in ntfs_inner_allocation()
652 static int ntfs_full_allocation(ntfs_attr *na, ntfs_attr_search_ctx *ctx, in ntfs_full_allocation() argument
662 initialized_size = na->initialized_size; in ntfs_full_allocation()
663 data_size = na->data_size; in ntfs_full_allocation()
665 if (na->allocated_size <= alloc_offs) { in ntfs_full_allocation()
670 err = ntfs_attr_truncate(na, alloc_offs); in ntfs_full_allocation()
672 err = ntfs_attr_truncate_solid(na, in ntfs_full_allocation()
680 if ((alloc_offs + alloc_len) > na->allocated_size) in ntfs_full_allocation()
681 err = ntfs_attr_truncate(na, alloc_offs + alloc_len); in ntfs_full_allocation()
683 err = ntfs_inner_allocation(na, alloc_offs, alloc_len); in ntfs_full_allocation()
686 na->initialized_size = initialized_size; in ntfs_full_allocation()
690 na->data_size = data_size; in ntfs_full_allocation()
700 na->data_size = alloc_offs + alloc_len; in ntfs_full_allocation()
712 attr->data_size = cpu_to_sle64(na->data_size); in ntfs_full_allocation()
714 = cpu_to_sle64(na->initialized_size); in ntfs_full_allocation()
716 = cpu_to_sle64(na->allocated_size); in ntfs_full_allocation()
717 if (na->data_flags & ATTR_IS_SPARSE) in ntfs_full_allocation()
719 = cpu_to_sle64(na->compressed_size); in ntfs_full_allocation()
722 ni = na->ni; in ntfs_full_allocation()
723 ni->data_size = na->data_size; in ntfs_full_allocation()
724 if (na->data_flags & ATTR_IS_SPARSE) { in ntfs_full_allocation()
726 = na->compressed_size; in ntfs_full_allocation()
730 = na->allocated_size; in ntfs_full_allocation()
747 ntfs_attr *na; in ntfs_fallocate() local
755 na = ntfs_attr_open(ni, attr_type, attr_name, attr_name_len); in ntfs_fallocate()
756 if (!na) { in ntfs_fallocate()
762 if (na->data_flags & ATTR_IS_COMPRESSED) { in ntfs_fallocate()
776 allocated_size = na->allocated_size; in ntfs_fallocate()
778 if (na->rl) in ntfs_fallocate()
779 err = ntfs_attr_map_whole_runlist(na); in ntfs_fallocate()
781 if (na->rl) in ntfs_fallocate()
782 oldrl = ntfs_save_rl(na->rl); in ntfs_fallocate()
785 if (!na->rl || oldrl) { in ntfs_fallocate()
786 err = ntfs_full_allocation(na, ctx, in ntfs_fallocate()
793 ntfs_restore_rl(na, oldrl); in ntfs_fallocate()
807 ntfs_attr_close(na); in ntfs_fallocate()