Lines Matching refs:na
650 static BOOL ntfs_is_cb_compressed(ntfs_attr *na, runlist_element *rl,
666 rl = ntfs_attr_find_vcn(na, rl->vcn);
690 * @na: ntfs attribute to read from
698 * compressed ntfs attribute @na into the data buffer @b.
709 s64 ntfs_compressed_attr_pread(ntfs_attr *na, s64 pos, s64 count, void *b)
724 (unsigned long long)na->ni->mft_no, le32_to_cpu(na->type),
726 data_flags = na->data_flags;
727 compression = na->ni->flags & FILE_ATTR_COMPRESSED;
728 if (!na || !na->ni || !na->ni->vol || !b
739 if (NAttrEncrypted(na)) {
746 if (pos + count > na->data_size) {
747 if (pos >= na->data_size) {
750 count = na->data_size - pos;
753 if (!NAttrNonResident(na))
754 return ntfs_attr_pread(na, pos, count, b);
755 if (na->compression_block_size < NTFS_SB_SIZE) {
757 (long)na->compression_block_size);
763 if (pos + count > na->initialized_size) {
764 if (pos >= na->initialized_size) {
768 total2 = pos + count - na->initialized_size;
772 vol = na->ni->vol;
773 cb_size = na->compression_block_size;
775 cb_clusters = na->compression_block_clusters;
803 na->compression_block_size_bits;
812 rl = ntfs_attr_find_vcn(na, vcn);
831 } else if (!ntfs_is_cb_compressed(na, rl, vcn, cb_clusters)) {
848 NAttrClearCompressed(na);
849 na->data_flags &= ~ATTR_COMPRESSION_MASK;
850 tdata_size = na->data_size;
851 tinitialized_size = na->initialized_size;
852 na->data_size = na->initialized_size = na->allocated_size;
854 br = ntfs_attr_pread(na, ofs, to_read, b);
860 (long long)na->ni->mft_no,
865 na->data_size = tdata_size;
866 na->initialized_size = tinitialized_size;
867 na->ni->flags |= compression;
868 na->data_flags = data_flags;
882 na->data_size = tdata_size;
883 na->initialized_size = tinitialized_size;
884 na->ni->flags |= compression;
885 na->data_flags = data_flags;
906 NAttrClearCompressed(na);
907 na->data_flags &= ~ATTR_COMPRESSION_MASK;
908 tdata_size = na->data_size;
909 tinitialized_size = na->initialized_size;
910 na->data_size = na->initialized_size = na->allocated_size;
912 br = ntfs_attr_pread(na,
920 (long long)na->ni->mft_no,
925 na->data_size = tdata_size;
926 na->initialized_size = tinitialized_size;
927 na->ni->flags |= compression;
928 na->data_flags = data_flags;
939 na->data_size = tdata_size;
940 na->initialized_size = tinitialized_size;
941 na->ni->flags |= compression;
942 na->data_flags = data_flags;
1068 static s32 ntfs_comp_set(ntfs_attr *na, runlist_element *rl,
1090 vol = na->ni->vol;
1094 outbuf = (char*)ntfs_malloc(na->compression_block_size
1095 + 2*(na->compression_block_size/NTFS_SB_SIZE)
1110 > na->compression_block_size))
1168 static BOOL valid_compressed_run(ntfs_attr *na, runlist_element *rl,
1176 while (xrl->vcn & (na->compression_block_clusters - 1))
1184 & (na->compression_block_clusters - 1)) {
1193 err, text, (long)(xrl - na->rl),
1194 (long long)na->ni->mft_no);
1232 static int ntfs_compress_overwr_free(ntfs_attr *na, runlist_element *rl,
1246 vol = na->ni->vol;
1314 na->compressed_size -= freed << vol->cluster_size_bits;
1427 na->compressed_size -= freed << vol->cluster_size_bits;
1444 static int ntfs_compress_free(ntfs_attr *na, runlist_element *rl,
1460 vol = na->ni->vol;
1482 & (na->compression_block_clusters - 1))) {
1484 res = ntfs_compress_overwr_free(na,rl,
1543 na->compressed_size -= freecnt
1573 NAttrSetRunlistDirty(na);
1582 static int ntfs_read_append(ntfs_attr *na, const runlist_element *rl,
1591 if (compsz == na->compression_block_size) {
1603 decompsz = na->compression_block_size;
1604 got = read_clusters(na->ni->vol, rl, offs,
1626 static s32 ntfs_flush(ntfs_attr *na, runlist_element *rl, s64 offs,
1635 written = ntfs_comp_set(na, rl, offs, count, outbuf);
1639 && ntfs_compress_free(na,rl,offs + written,
1640 offs + na->compression_block_size, appending,
1646 clsz = 1 << na->ni->vol->cluster_size_bits;
1650 written = write_clusters(na->ni->vol, rl,
1670 s64 ntfs_compressed_pwrite(ntfs_attr *na, runlist_element *wrl, s64 wpos,
1694 if (!valid_compressed_run(na,wrl,FALSE,"begin compressed write")) {
1699 || (compressed_part > (int)na->compression_block_clusters)) {
1706 if (na->unused_runs < 2) {
1711 if (na->compression_block_size < NTFS_SB_SIZE) {
1713 (long)na->compression_block_size);
1720 vol = na->ni->vol;
1721 compression_length = na->compression_block_clusters;
1732 | (na->compression_block_size - 1)) + 1;
1735 appending = endwrite >= na->initialized_size;
1778 outbuf = (char*)ntfs_malloc(na->compression_block_size);
1784 to_read = na->data_size
1786 if (to_read > na->compression_block_size)
1787 to_read = na->compression_block_size;
1790 if (!ntfs_read_append(na, brl, roffs, compsz,
1793 written = ntfs_flush(na, brl, roffs,
1809 inbuf = (char*)ntfs_malloc(na->compression_block_size);
1819 written = ntfs_comp_set(na, brl, roffs,
1827 && !ntfs_compress_free(na,brl,
1829 na->compression_block_size
1860 && !valid_compressed_run(na,wrl,TRUE,"end compressed write"))
1873 int ntfs_compressed_close(ntfs_attr *na, runlist_element *wrl, s64 offs,
1888 if (na->unused_runs < 2) {
1898 if (na->compression_block_size < NTFS_SB_SIZE) {
1900 (long)na->compression_block_size);
1906 vol = na->ni->vol;
1907 compression_length = na->compression_block_clusters;
1913 inbuf = (char*)ntfs_malloc(na->compression_block_size);
1939 written = ntfs_comp_set(na, brl, roffs,
1943 && !ntfs_compress_free(na,brl,
1945 na->compression_block_size + roffs,
1958 if (done && !valid_compressed_run(na,wrl,TRUE,"end compressed close"))