Lines Matching refs:ni

42 	struct ntfs_inode *ni = NTFS_I(vi);  in ntfs_test_inode()  local
48 if (likely(!NInoAttr(ni))) { in ntfs_test_inode()
54 if (ni->type != na->type) in ntfs_test_inode()
56 if (ni->name_len != na->name_len) in ntfs_test_inode()
58 if (na->name_len && memcmp(ni->name, na->name, in ntfs_test_inode()
61 if (!ni->ext.base_ntfs_ino) in ntfs_test_inode()
90 struct ntfs_inode *ni = NTFS_I(vi); in ntfs_init_locked_inode() local
95 NInoSetMstProtected(ni); in ntfs_init_locked_inode()
97 ni->type = na->type; in ntfs_init_locked_inode()
99 ni->name = na->name; in ntfs_init_locked_inode()
100 ni->name_len = na->name_len; in ntfs_init_locked_inode()
101 ni->folio = NULL; in ntfs_init_locked_inode()
102 atomic_set(&ni->count, 1); in ntfs_init_locked_inode()
109 NInoSetAttr(ni); in ntfs_init_locked_inode()
122 ni->name = kmalloc(i + sizeof(__le16), GFP_ATOMIC); in ntfs_init_locked_inode()
123 if (!ni->name) in ntfs_init_locked_inode()
125 memcpy(ni->name, na->name, i); in ntfs_init_locked_inode()
126 ni->name[na->name_len] = 0; in ntfs_init_locked_inode()
304 struct ntfs_inode *ni; in ntfs_alloc_big_inode() local
307 ni = alloc_inode_sb(sb, ntfs_big_inode_cache, GFP_NOFS); in ntfs_alloc_big_inode()
308 if (likely(ni != NULL)) { in ntfs_alloc_big_inode()
309 ni->state = 0; in ntfs_alloc_big_inode()
310 ni->type = 0; in ntfs_alloc_big_inode()
311 ni->mft_no = 0; in ntfs_alloc_big_inode()
312 return VFS_I(ni); in ntfs_alloc_big_inode()
323 static int ntfs_non_resident_dealloc_clusters(struct ntfs_inode *ni) in ntfs_non_resident_dealloc_clusters() argument
325 struct super_block *sb = ni->vol->sb; in ntfs_non_resident_dealloc_clusters()
329 actx = ntfs_attr_get_search_ctx(ni, NULL); in ntfs_non_resident_dealloc_clusters()
339 if (NInoRunlistDirty(ni)) { in ntfs_non_resident_dealloc_clusters()
340 err = ntfs_cluster_free_from_rl(ni->vol, ni->runlist.rl); in ntfs_non_resident_dealloc_clusters()
348 (!NInoRunlistDirty(ni) || actx->attr->type != AT_DATA)) { in ntfs_non_resident_dealloc_clusters()
352 rl = ntfs_mapping_pairs_decompress(ni->vol, actx->attr, NULL, in ntfs_non_resident_dealloc_clusters()
361 err = ntfs_cluster_free_from_rl(ni->vol, rl); in ntfs_non_resident_dealloc_clusters()
369 ntfs_release_dirty_clusters(ni->vol, ni->i_dealloc_clusters); in ntfs_non_resident_dealloc_clusters()
376 struct ntfs_inode *ni = NTFS_I(inode); in ntfs_drop_big_inode() local
379 if (ni->type == AT_DATA || ni->type == AT_INDEX_ALLOCATION) { in ntfs_drop_big_inode()
381 struct ntfs_inode *ni = NTFS_I(inode); in ntfs_drop_big_inode() local
383 if (ni->data_size == 0) in ntfs_drop_big_inode()
390 truncate_setsize(VFS_I(ni), 0); in ntfs_drop_big_inode()
391 ntfs_truncate_vfs(VFS_I(ni), 0, 1); in ntfs_drop_big_inode()
395 ni->allocated_size = ni->initialized_size = ni->data_size = 0; in ntfs_drop_big_inode()
412 struct ntfs_inode *ni; in ntfs_alloc_extent_inode() local
415 ni = kmem_cache_alloc(ntfs_inode_cache, GFP_NOFS); in ntfs_alloc_extent_inode()
416 if (likely(ni != NULL)) { in ntfs_alloc_extent_inode()
417 ni->state = 0; in ntfs_alloc_extent_inode()
418 return ni; in ntfs_alloc_extent_inode()
424 static void ntfs_destroy_extent_inode(struct ntfs_inode *ni) in ntfs_destroy_extent_inode() argument
428 if (!atomic_dec_and_test(&ni->count)) in ntfs_destroy_extent_inode()
430 if (ni->folio) in ntfs_destroy_extent_inode()
431 folio_put(ni->folio); in ntfs_destroy_extent_inode()
432 kfree(ni->mrec); in ntfs_destroy_extent_inode()
433 kmem_cache_free(ntfs_inode_cache, ni); in ntfs_destroy_extent_inode()
455 void __ntfs_init_inode(struct super_block *sb, struct ntfs_inode *ni) in __ntfs_init_inode() argument
458 rwlock_init(&ni->size_lock); in __ntfs_init_inode()
459 ni->initialized_size = ni->allocated_size = 0; in __ntfs_init_inode()
460 ni->seq_no = 0; in __ntfs_init_inode()
461 atomic_set(&ni->count, 1); in __ntfs_init_inode()
462 ni->vol = NTFS_SB(sb); in __ntfs_init_inode()
463 ntfs_init_runlist(&ni->runlist); in __ntfs_init_inode()
464 mutex_init(&ni->mrec_lock); in __ntfs_init_inode()
465 if (ni->type == AT_ATTRIBUTE_LIST) { in __ntfs_init_inode()
466 lockdep_set_class(&ni->mrec_lock, in __ntfs_init_inode()
468 lockdep_set_class(&ni->runlist.lock, in __ntfs_init_inode()
470 } else if (NInoAttr(ni)) { in __ntfs_init_inode()
471 lockdep_set_class(&ni->mrec_lock, in __ntfs_init_inode()
475 ni->folio = NULL; in __ntfs_init_inode()
476 ni->folio_ofs = 0; in __ntfs_init_inode()
477 ni->mrec = NULL; in __ntfs_init_inode()
478 ni->attr_list_size = 0; in __ntfs_init_inode()
479 ni->attr_list = NULL; in __ntfs_init_inode()
480 ni->itype.index.block_size = 0; in __ntfs_init_inode()
481 ni->itype.index.vcn_size = 0; in __ntfs_init_inode()
482 ni->itype.index.collation_rule = 0; in __ntfs_init_inode()
483 ni->itype.index.block_size_bits = 0; in __ntfs_init_inode()
484 ni->itype.index.vcn_size_bits = 0; in __ntfs_init_inode()
485 mutex_init(&ni->extent_lock); in __ntfs_init_inode()
486 ni->nr_extents = 0; in __ntfs_init_inode()
487 ni->ext.base_ntfs_ino = NULL; in __ntfs_init_inode()
488 ni->flags = 0; in __ntfs_init_inode()
489 ni->mft_lcn[0] = LCN_RL_NOT_MAPPED; in __ntfs_init_inode()
490 ni->mft_lcn_count = 0; in __ntfs_init_inode()
491 ni->target = NULL; in __ntfs_init_inode()
492 ni->i_dealloc_clusters = 0; in __ntfs_init_inode()
505 struct ntfs_inode *ni = ntfs_alloc_extent_inode(); in ntfs_new_extent_inode() local
508 if (likely(ni != NULL)) { in ntfs_new_extent_inode()
509 __ntfs_init_inode(sb, ni); in ntfs_new_extent_inode()
510 lockdep_set_class(&ni->mrec_lock, &extent_inode_mrec_lock_key); in ntfs_new_extent_inode()
511 ni->mft_no = mft_no; in ntfs_new_extent_inode()
512 ni->type = AT_UNUSED; in ntfs_new_extent_inode()
513 ni->name = NULL; in ntfs_new_extent_inode()
514 ni->name_len = 0; in ntfs_new_extent_inode()
516 return ni; in ntfs_new_extent_inode()
673 struct ntfs_inode *ni = NTFS_I(vi); in ntfs_read_locked_inode() local
685 ntfs_debug("Entering for i_ino 0x%llx.", ni->mft_no); in ntfs_read_locked_inode()
708 m = map_mft_record(ni); in ntfs_read_locked_inode()
714 ctx = ntfs_attr_get_search_ctx(ni, m); in ntfs_read_locked_inode()
732 vi->i_generation = ni->seq_no = le16_to_cpu(m->sequence_number); in ntfs_read_locked_inode()
773 ni->i_crtime = ntfs2utc(si->creation_time); in ntfs_read_locked_inode()
787 ni->flags = si->file_attributes; in ntfs_read_locked_inode()
800 ntfs_debug("Attribute list found in inode 0x%llx.", ni->mft_no); in ntfs_read_locked_inode()
801 NInoSetAttrList(ni); in ntfs_read_locked_inode()
817 ni->mft_no); in ntfs_read_locked_inode()
820 ni->attr_list_size = (u32)ntfs_attr_size(a); in ntfs_read_locked_inode()
821 if (!ni->attr_list_size) { in ntfs_read_locked_inode()
825 ni->attr_list = kvzalloc(ni->attr_list_size, GFP_NOFS); in ntfs_read_locked_inode()
826 if (!ni->attr_list) { in ntfs_read_locked_inode()
833 NInoSetAttrListNonResident(ni); in ntfs_read_locked_inode()
840 err = load_attribute_list(ni, ni->attr_list, ni->attr_list_size); in ntfs_read_locked_inode()
847 memcpy(ni->attr_list, (u8 *)a + le16_to_cpu( in ntfs_read_locked_inode()
856 NInoSetHasEA(ni); in ntfs_read_locked_inode()
871 if (ni->flags & FILE_ATTR_REPARSE_POINT) { in ntfs_read_locked_inode()
874 mode = ntfs_make_symlink(ni); in ntfs_read_locked_inode()
926 NInoSetCompressed(ni); in ntfs_read_locked_inode()
927 ni->flags |= FILE_ATTR_COMPRESSED; in ntfs_read_locked_inode()
934 NInoSetEncrypted(ni); in ntfs_read_locked_inode()
935 ni->flags |= FILE_ATTR_ENCRYPTED; in ntfs_read_locked_inode()
938 NInoSetSparse(ni); in ntfs_read_locked_inode()
939 ni->flags |= FILE_ATTR_SPARSE_FILE; in ntfs_read_locked_inode()
969 ni->itype.index.collation_rule = ir->collation_rule; in ntfs_read_locked_inode()
970 ni->itype.index.block_size = le32_to_cpu(ir->index_block_size); in ntfs_read_locked_inode()
971 if (ni->itype.index.block_size & in ntfs_read_locked_inode()
972 (ni->itype.index.block_size - 1)) { in ntfs_read_locked_inode()
974 ni->itype.index.block_size); in ntfs_read_locked_inode()
977 if (ni->itype.index.block_size > PAGE_SIZE) { in ntfs_read_locked_inode()
980 ni->itype.index.block_size, in ntfs_read_locked_inode()
985 if (ni->itype.index.block_size < NTFS_BLOCK_SIZE) { in ntfs_read_locked_inode()
988 ni->itype.index.block_size, in ntfs_read_locked_inode()
993 ni->itype.index.block_size_bits = in ntfs_read_locked_inode()
994 ffs(ni->itype.index.block_size) - 1; in ntfs_read_locked_inode()
996 if (vol->cluster_size <= ni->itype.index.block_size) { in ntfs_read_locked_inode()
997 ni->itype.index.vcn_size = vol->cluster_size; in ntfs_read_locked_inode()
998 ni->itype.index.vcn_size_bits = vol->cluster_size_bits; in ntfs_read_locked_inode()
1000 ni->itype.index.vcn_size = vol->sector_size; in ntfs_read_locked_inode()
1001 ni->itype.index.vcn_size_bits = vol->sector_size_bits; in ntfs_read_locked_inode()
1005 ni->type = AT_INDEX_ROOT; in ntfs_read_locked_inode()
1006 ni->name = name; in ntfs_read_locked_inode()
1007 ni->name_len = name_len; in ntfs_read_locked_inode()
1008 vi->i_size = ni->initialized_size = ni->data_size = in ntfs_read_locked_inode()
1010 ni->allocated_size = (ni->data_size + 7) & ~7; in ntfs_read_locked_inode()
1013 unmap_mft_record(ni); in ntfs_read_locked_inode()
1019 NInoSetIndexAllocPresent(ni); in ntfs_read_locked_inode()
1025 ni->type = AT_DATA; in ntfs_read_locked_inode()
1026 ni->name = AT_UNNAMED; in ntfs_read_locked_inode()
1027 ni->name_len = 0; in ntfs_read_locked_inode()
1032 vi->i_size = ni->initialized_size = in ntfs_read_locked_inode()
1033 ni->allocated_size = 0; in ntfs_read_locked_inode()
1077 NInoSetCompressed(ni); in ntfs_read_locked_inode()
1078 ni->flags |= FILE_ATTR_COMPRESSED; in ntfs_read_locked_inode()
1093 NInoSetSparse(ni); in ntfs_read_locked_inode()
1094 ni->flags |= FILE_ATTR_SPARSE_FILE; in ntfs_read_locked_inode()
1098 if (NInoCompressed(ni)) { in ntfs_read_locked_inode()
1102 NInoSetEncrypted(ni); in ntfs_read_locked_inode()
1103 ni->flags |= FILE_ATTR_ENCRYPTED; in ntfs_read_locked_inode()
1106 NInoSetNonResident(ni); in ntfs_read_locked_inode()
1107 if (NInoCompressed(ni) || NInoSparse(ni)) { in ntfs_read_locked_inode()
1108 if (NInoCompressed(ni) && in ntfs_read_locked_inode()
1117 if (NInoSparse(ni) && in ntfs_read_locked_inode()
1131 ni->itype.compressed.block_size = 1U << in ntfs_read_locked_inode()
1134 ni->itype.compressed.block_size_bits = in ntfs_read_locked_inode()
1135 ffs(ni->itype.compressed.block_size) - 1; in ntfs_read_locked_inode()
1136 ni->itype.compressed.block_clusters = in ntfs_read_locked_inode()
1139 ni->itype.compressed.block_size = 0; in ntfs_read_locked_inode()
1140 ni->itype.compressed.block_size_bits = in ntfs_read_locked_inode()
1142 ni->itype.compressed.block_clusters = in ntfs_read_locked_inode()
1145 ni->itype.compressed.size = le64_to_cpu( in ntfs_read_locked_inode()
1153 vi->i_size = ni->data_size = le64_to_cpu(a->data.non_resident.data_size); in ntfs_read_locked_inode()
1154 ni->initialized_size = le64_to_cpu(a->data.non_resident.initialized_size); in ntfs_read_locked_inode()
1155 ni->allocated_size = le64_to_cpu(a->data.non_resident.allocated_size); in ntfs_read_locked_inode()
1157 vi->i_size = ni->data_size = ni->initialized_size = le32_to_cpu( in ntfs_read_locked_inode()
1159 ni->allocated_size = le32_to_cpu(a->length) - in ntfs_read_locked_inode()
1162 if (vi->i_size > ni->allocated_size) { in ntfs_read_locked_inode()
1171 unmap_mft_record(ni); in ntfs_read_locked_inode()
1178 if (NVolSysImmutable(vol) && (ni->flags & FILE_ATTR_SYSTEM) && in ntfs_read_locked_inode()
1193 if (S_ISREG(vi->i_mode) && (NInoCompressed(ni) || NInoSparse(ni))) in ntfs_read_locked_inode()
1194 vi->i_blocks = ni->itype.compressed.size >> 9; in ntfs_read_locked_inode()
1196 vi->i_blocks = ni->allocated_size >> 9; in ntfs_read_locked_inode()
1206 unmap_mft_record(ni); in ntfs_read_locked_inode()
1211 err, ni->mft_no); in ntfs_read_locked_inode()
1241 struct ntfs_inode *ni = NTFS_I(vi), *base_ni = NTFS_I(base_vi); in ntfs_read_locked_attr_inode() local
1247 ntfs_debug("Entering for i_ino 0x%llx.", ni->mft_no); in ntfs_read_locked_attr_inode()
1258 vi->i_generation = ni->seq_no = base_ni->seq_no; in ntfs_read_locked_attr_inode()
1274 err = ntfs_attr_lookup(ni->type, ni->name, ni->name_len, in ntfs_read_locked_attr_inode()
1281 NInoSetCompressed(ni); in ntfs_read_locked_attr_inode()
1282 ni->flags |= FILE_ATTR_COMPRESSED; in ntfs_read_locked_attr_inode()
1283 if ((ni->type != AT_DATA) || (ni->type == AT_DATA && in ntfs_read_locked_attr_inode()
1284 ni->name_len)) { in ntfs_read_locked_attr_inode()
1305 if (NInoMstProtected(ni) && ni->type != AT_INDEX_ROOT) { in ntfs_read_locked_attr_inode()
1308 NInoCompressed(ni) ? "compressed" : "sparse"); in ntfs_read_locked_attr_inode()
1312 NInoSetSparse(ni); in ntfs_read_locked_attr_inode()
1313 ni->flags |= FILE_ATTR_SPARSE_FILE; in ntfs_read_locked_attr_inode()
1317 if (NInoCompressed(ni)) { in ntfs_read_locked_attr_inode()
1325 if (NInoMstProtected(ni) && ni->type != AT_INDEX_ROOT) { in ntfs_read_locked_attr_inode()
1330 if (ni->type != AT_DATA) { in ntfs_read_locked_attr_inode()
1335 NInoSetEncrypted(ni); in ntfs_read_locked_attr_inode()
1336 ni->flags |= FILE_ATTR_ENCRYPTED; in ntfs_read_locked_attr_inode()
1346 if (NInoMstProtected(ni)) { in ntfs_read_locked_attr_inode()
1351 vi->i_size = ni->initialized_size = ni->data_size = le32_to_cpu( in ntfs_read_locked_attr_inode()
1353 ni->allocated_size = le32_to_cpu(a->length) - in ntfs_read_locked_attr_inode()
1355 if (vi->i_size > ni->allocated_size) { in ntfs_read_locked_attr_inode()
1361 NInoSetNonResident(ni); in ntfs_read_locked_attr_inode()
1373 if (NInoCompressed(ni) || NInoSparse(ni)) { in ntfs_read_locked_attr_inode()
1374 if (NInoCompressed(ni) && a->data.non_resident.compression_unit != 4) { in ntfs_read_locked_attr_inode()
1382 ni->itype.compressed.block_size = 1U << in ntfs_read_locked_attr_inode()
1385 ni->itype.compressed.block_size_bits = in ntfs_read_locked_attr_inode()
1386 ffs(ni->itype.compressed.block_size) - 1; in ntfs_read_locked_attr_inode()
1387 ni->itype.compressed.block_clusters = 1U << in ntfs_read_locked_attr_inode()
1390 ni->itype.compressed.block_size = 0; in ntfs_read_locked_attr_inode()
1391 ni->itype.compressed.block_size_bits = 0; in ntfs_read_locked_attr_inode()
1392 ni->itype.compressed.block_clusters = 0; in ntfs_read_locked_attr_inode()
1394 ni->itype.compressed.size = le64_to_cpu( in ntfs_read_locked_attr_inode()
1401 vi->i_size = ni->data_size = le64_to_cpu(a->data.non_resident.data_size); in ntfs_read_locked_attr_inode()
1402 ni->initialized_size = le64_to_cpu(a->data.non_resident.initialized_size); in ntfs_read_locked_attr_inode()
1403 ni->allocated_size = le64_to_cpu(a->data.non_resident.allocated_size); in ntfs_read_locked_attr_inode()
1406 if ((NInoCompressed(ni) || NInoSparse(ni)) && ni->type != AT_INDEX_ROOT) in ntfs_read_locked_attr_inode()
1407 vi->i_blocks = ni->itype.compressed.size >> 9; in ntfs_read_locked_attr_inode()
1409 vi->i_blocks = ni->allocated_size >> 9; in ntfs_read_locked_attr_inode()
1418 ni->ext.base_ntfs_ino = base_ni; in ntfs_read_locked_attr_inode()
1419 ni->nr_extents = -1; in ntfs_read_locked_attr_inode()
1437 err, ni->mft_no, ni->type, ni->name_len, in ntfs_read_locked_attr_inode()
1480 struct ntfs_inode *ni = NTFS_I(vi), *base_ni = NTFS_I(base_vi), *bni; in ntfs_read_locked_index_inode() local
1489 ntfs_debug("Entering for i_ino 0x%llx.", ni->mft_no); in ntfs_read_locked_index_inode()
1500 vi->i_generation = ni->seq_no = base_ni->seq_no; in ntfs_read_locked_index_inode()
1515 err = ntfs_attr_lookup(AT_INDEX_ROOT, ni->name, ni->name_len, in ntfs_read_locked_index_inode()
1544 ni->itype.index.collation_rule = ir->collation_rule; in ntfs_read_locked_index_inode()
1547 ni->itype.index.block_size = le32_to_cpu(ir->index_block_size); in ntfs_read_locked_index_inode()
1548 if (!is_power_of_2(ni->itype.index.block_size)) { in ntfs_read_locked_index_inode()
1550 ni->itype.index.block_size); in ntfs_read_locked_index_inode()
1553 if (ni->itype.index.block_size > PAGE_SIZE) { in ntfs_read_locked_index_inode()
1555 ni->itype.index.block_size, PAGE_SIZE); in ntfs_read_locked_index_inode()
1559 if (ni->itype.index.block_size < NTFS_BLOCK_SIZE) { in ntfs_read_locked_index_inode()
1562 ni->itype.index.block_size, NTFS_BLOCK_SIZE); in ntfs_read_locked_index_inode()
1566 ni->itype.index.block_size_bits = ffs(ni->itype.index.block_size) - 1; in ntfs_read_locked_index_inode()
1568 if (vol->cluster_size <= ni->itype.index.block_size) { in ntfs_read_locked_index_inode()
1569 ni->itype.index.vcn_size = vol->cluster_size; in ntfs_read_locked_index_inode()
1570 ni->itype.index.vcn_size_bits = vol->cluster_size_bits; in ntfs_read_locked_index_inode()
1572 ni->itype.index.vcn_size = vol->sector_size; in ntfs_read_locked_index_inode()
1573 ni->itype.index.vcn_size_bits = vol->sector_size_bits; in ntfs_read_locked_index_inode()
1578 err = ntfs_attr_lookup(AT_INDEX_ALLOCATION, ni->name, ni->name_len, in ntfs_read_locked_index_inode()
1583 vi->i_size = ni->initialized_size = ni->allocated_size = 0; in ntfs_read_locked_index_inode()
1594 NInoSetIndexAllocPresent(ni); in ntfs_read_locked_index_inode()
1595 NInoSetNonResident(ni); in ntfs_read_locked_index_inode()
1596 ni->type = AT_INDEX_ALLOCATION; in ntfs_read_locked_index_inode()
1630 vi->i_size = ni->data_size = le64_to_cpu(a->data.non_resident.data_size); in ntfs_read_locked_index_inode()
1631 ni->initialized_size = le64_to_cpu(a->data.non_resident.initialized_size); in ntfs_read_locked_index_inode()
1632 ni->allocated_size = le64_to_cpu(a->data.non_resident.allocated_size); in ntfs_read_locked_index_inode()
1642 bvi = ntfs_attr_iget(base_vi, AT_BITMAP, ni->name, ni->name_len); in ntfs_read_locked_index_inode()
1657 if ((bvi_size << 3) < (vi->i_size >> ni->itype.index.block_size_bits)) { in ntfs_read_locked_index_inode()
1667 vi->i_blocks = ni->allocated_size >> 9; in ntfs_read_locked_index_inode()
1674 ni->ext.base_ntfs_ino = base_ni; in ntfs_read_locked_index_inode()
1675 ni->nr_extents = -1; in ntfs_read_locked_index_inode()
1691 err, ni->mft_no, ni->name_len); in ntfs_read_locked_index_inode()
1816 struct ntfs_inode *ni = NTFS_I(vi); in ntfs_read_inode_mount() local
1831 NInoSetNonResident(ni); in ntfs_read_inode_mount()
1832 NInoSetMstProtected(ni); in ntfs_read_inode_mount()
1833 NInoSetSparseDisabled(ni); in ntfs_read_inode_mount()
1834 ni->type = AT_DATA; in ntfs_read_inode_mount()
1835 ni->name = AT_UNNAMED; in ntfs_read_inode_mount()
1836 ni->name_len = 0; in ntfs_read_inode_mount()
1841 ni->itype.index.block_size = vol->mft_record_size; in ntfs_read_inode_mount()
1842 ni->itype.index.block_size_bits = vol->mft_record_size_bits; in ntfs_read_inode_mount()
1895 vi->i_generation = ni->seq_no = le16_to_cpu(m->sequence_number); in ntfs_read_inode_mount()
1900 ctx = ntfs_attr_get_search_ctx(ni, m); in ntfs_read_inode_mount()
1920 NInoSetAttrList(ni); in ntfs_read_inode_mount()
1940 ni->attr_list_size = (u32)ntfs_attr_size(a); in ntfs_read_inode_mount()
1941 if (!ni->attr_list_size) { in ntfs_read_inode_mount()
1945 ni->attr_list = kvzalloc(round_up(ni->attr_list_size, SECTOR_SIZE), in ntfs_read_inode_mount()
1947 if (!ni->attr_list) { in ntfs_read_inode_mount()
1955 NInoSetAttrListNonResident(ni); in ntfs_read_inode_mount()
1971 err = load_attribute_list_mount(vol, rl, ni->attr_list, ni->attr_list_size, in ntfs_read_inode_mount()
1982 memcpy(ni->attr_list, (u8 *)a + le16_to_cpu( in ntfs_read_inode_mount()
1987 al_entry = (struct attr_list_entry *)ni->attr_list; in ntfs_read_inode_mount()
1988 al_end = (u8 *)al_entry + ni->attr_list_size; in ntfs_read_inode_mount()
1991 if ((u8 *)al_entry < ni->attr_list || in ntfs_read_inode_mount()
2023 ni->seq_no) in ntfs_read_inode_mount()
2062 nrl = ntfs_mapping_pairs_decompress(vol, a, &ni->runlist, in ntfs_read_inode_mount()
2070 ni->runlist.rl = nrl; in ntfs_read_inode_mount()
2071 ni->runlist.count = new_rl_count; in ntfs_read_inode_mount()
2085 ni->initialized_size = le64_to_cpu(a->data.non_resident.initialized_size); in ntfs_read_inode_mount()
2086 ni->allocated_size = le64_to_cpu(a->data.non_resident.allocated_size); in ntfs_read_inode_mount()
2174 lockdep_set_class(&ni->runlist.lock, &mft_ni_runlist_lock_key); in ntfs_read_inode_mount()
2175 lockdep_set_class(&ni->mrec_lock, &mft_ni_mrec_lock_key); in ntfs_read_inode_mount()
2190 static void __ntfs_clear_inode(struct ntfs_inode *ni) in __ntfs_clear_inode() argument
2193 if (NInoNonResident(ni) && ni->runlist.rl) { in __ntfs_clear_inode()
2194 kvfree(ni->runlist.rl); in __ntfs_clear_inode()
2195 ni->runlist.rl = NULL; in __ntfs_clear_inode()
2198 if (ni->attr_list) { in __ntfs_clear_inode()
2199 kvfree(ni->attr_list); in __ntfs_clear_inode()
2200 ni->attr_list = NULL; in __ntfs_clear_inode()
2203 if (ni->name_len && ni->name != I30 && in __ntfs_clear_inode()
2204 ni->name != reparse_index_name && in __ntfs_clear_inode()
2205 ni->name != objid_index_name) { in __ntfs_clear_inode()
2206 WARN_ON(!ni->name); in __ntfs_clear_inode()
2207 kfree(ni->name); in __ntfs_clear_inode()
2211 void ntfs_clear_extent_inode(struct ntfs_inode *ni) in ntfs_clear_extent_inode() argument
2213 ntfs_debug("Entering for inode 0x%llx.", ni->mft_no); in ntfs_clear_extent_inode()
2215 WARN_ON(NInoAttr(ni)); in ntfs_clear_extent_inode()
2216 WARN_ON(ni->nr_extents != -1); in ntfs_clear_extent_inode()
2218 __ntfs_clear_inode(ni); in ntfs_clear_extent_inode()
2219 ntfs_destroy_extent_inode(ni); in ntfs_clear_extent_inode()
2222 static int ntfs_delete_base_inode(struct ntfs_inode *ni) in ntfs_delete_base_inode() argument
2224 struct super_block *sb = ni->vol->sb; in ntfs_delete_base_inode()
2227 if (NInoAttr(ni) || ni->nr_extents == -1) in ntfs_delete_base_inode()
2230 err = ntfs_non_resident_dealloc_clusters(ni); in ntfs_delete_base_inode()
2236 while (ni->nr_extents) { in ntfs_delete_base_inode()
2237 err = ntfs_mft_record_free(ni->vol, *(ni->ext.extent_ntfs_inos)); in ntfs_delete_base_inode()
2241 ntfs_inode_close(*(ni->ext.extent_ntfs_inos)); in ntfs_delete_base_inode()
2245 err = ntfs_mft_record_free(ni->vol, ni); in ntfs_delete_base_inode()
2263 struct ntfs_inode *ni = NTFS_I(vi); in ntfs_evict_big_inode() local
2268 if (!NInoAttr(ni)) { in ntfs_evict_big_inode()
2270 WARN_ON(ni->nr_extents == -1); in ntfs_evict_big_inode()
2271 ntfs_delete_base_inode(ni); in ntfs_evict_big_inode()
2276 if (NInoDirty(ni)) { in ntfs_evict_big_inode()
2280 if (NInoDirty(ni)) { in ntfs_evict_big_inode()
2282 ni->mft_no); in ntfs_evict_big_inode()
2283 NInoClearAttrListDirty(ni); in ntfs_evict_big_inode()
2284 NInoClearDirty(ni); in ntfs_evict_big_inode()
2289 if (ni->nr_extents > 0) { in ntfs_evict_big_inode()
2292 for (i = 0; i < ni->nr_extents; i++) { in ntfs_evict_big_inode()
2293 if (ni->ext.extent_ntfs_inos[i]) in ntfs_evict_big_inode()
2294 ntfs_clear_extent_inode(ni->ext.extent_ntfs_inos[i]); in ntfs_evict_big_inode()
2296 ni->nr_extents = 0; in ntfs_evict_big_inode()
2297 kvfree(ni->ext.extent_ntfs_inos); in ntfs_evict_big_inode()
2302 __ntfs_clear_inode(ni); in ntfs_evict_big_inode()
2304 if (NInoAttr(ni)) { in ntfs_evict_big_inode()
2306 if (ni->nr_extents == -1) { in ntfs_evict_big_inode()
2307 iput(VFS_I(ni->ext.base_ntfs_ino)); in ntfs_evict_big_inode()
2308 ni->nr_extents = 0; in ntfs_evict_big_inode()
2309 ni->ext.base_ntfs_ino = NULL; in ntfs_evict_big_inode()
2313 if (!atomic_dec_and_test(&ni->count)) in ntfs_evict_big_inode()
2315 if (ni->folio) in ntfs_evict_big_inode()
2316 folio_put(ni->folio); in ntfs_evict_big_inode()
2317 kfree(ni->mrec); in ntfs_evict_big_inode()
2318 kvfree(ni->target); in ntfs_evict_big_inode()
2378 struct ntfs_inode *ni = NTFS_I(vi); in ntfs_extend_initialized_size() local
2383 read_lock_irqsave(&ni->size_lock, flags); in ntfs_extend_initialized_size()
2384 old_init_size = ni->initialized_size; in ntfs_extend_initialized_size()
2385 read_unlock_irqrestore(&ni->size_lock, flags); in ntfs_extend_initialized_size()
2387 if (!NInoNonResident(ni)) in ntfs_extend_initialized_size()
2392 err = ntfs_attr_map_whole_runlist(ni); in ntfs_extend_initialized_size()
2396 if (!NInoCompressed(ni) && old_init_size < offset) { in ntfs_extend_initialized_size()
2410 mutex_lock(&ni->mrec_lock); in ntfs_extend_initialized_size()
2411 err = ntfs_attr_set_initialized_size(ni, new_size); in ntfs_extend_initialized_size()
2412 mutex_unlock(&ni->mrec_lock); in ntfs_extend_initialized_size()
2420 struct ntfs_inode *ni = NTFS_I(vi); in ntfs_truncate_vfs() local
2423 mutex_lock(&ni->mrec_lock); in ntfs_truncate_vfs()
2424 err = __ntfs_attr_truncate_vfs(ni, new_size, i_size); in ntfs_truncate_vfs()
2425 mutex_unlock(&ni->mrec_lock); in ntfs_truncate_vfs()
2442 struct ntfs_inode *ni = NTFS_I(vi); in ntfs_inode_sync_standard_information() local
2450 ctx = ntfs_attr_get_search_ctx(ni, m); in ntfs_inode_sync_standard_information()
2461 if (si->file_attributes != ni->flags) { in ntfs_inode_sync_standard_information()
2462 si->file_attributes = ni->flags; in ntfs_inode_sync_standard_information()
2467 nt = utc2ntfs(ni->i_crtime); in ntfs_inode_sync_standard_information()
2470 ni->mft_no, le64_to_cpu(si->creation_time), in ntfs_inode_sync_standard_information()
2480 ni->mft_no, le64_to_cpu(si->last_data_change_time), in ntfs_inode_sync_standard_information()
2489 ni->mft_no, le64_to_cpu(si->last_mft_change_time), in ntfs_inode_sync_standard_information()
2497 ni->mft_no, in ntfs_inode_sync_standard_information()
2535 int ntfs_inode_sync_filename(struct ntfs_inode *ni) in ntfs_inode_sync_filename() argument
2538 struct super_block *sb = VFS_I(ni)->i_sb; in ntfs_inode_sync_filename()
2549 ntfs_debug("Entering for inode %llu\n", ni->mft_no); in ntfs_inode_sync_filename()
2551 ctx = ntfs_attr_get_search_ctx(ni, NULL); in ntfs_inode_sync_filename()
2557 if (ni->flags & FILE_ATTR_REPARSE_POINT) { in ntfs_inode_sync_filename()
2571 if (MREF_LE(fn->parent_directory) == ni->mft_no) in ntfs_inode_sync_filename()
2584 if (NInoBeingDeleted(ni)) { in ntfs_inode_sync_filename()
2612 (ni->flags & FILE_ATTR_VALID_FLAGS); in ntfs_inode_sync_filename()
2616 read_lock_irqsave(&ni->size_lock, flags); in ntfs_inode_sync_filename()
2617 if (NInoSparse(ni) || NInoCompressed(ni)) in ntfs_inode_sync_filename()
2618 fnx->allocated_size = cpu_to_le64(ni->itype.compressed.size); in ntfs_inode_sync_filename()
2620 fnx->allocated_size = cpu_to_le64(ni->allocated_size); in ntfs_inode_sync_filename()
2621 fnx->data_size = cpu_to_le64(ni->data_size); in ntfs_inode_sync_filename()
2630 read_unlock_irqrestore(&ni->size_lock, flags); in ntfs_inode_sync_filename()
2649 ni->mft_no); in ntfs_inode_sync_filename()
2657 int ntfs_get_block_mft_record(struct ntfs_inode *mft_ni, struct ntfs_inode *ni) in ntfs_get_block_mft_record() argument
2662 if (ni->mft_lcn[0] != LCN_RL_NOT_MAPPED) in ntfs_get_block_mft_record()
2665 vcn = (s64)ni->mft_no << mft_ni->vol->mft_record_size_bits >> in ntfs_get_block_mft_record()
2677 ni->mft_lcn[0] = ntfs_rl_vcn_to_lcn(rl, vcn); in ntfs_get_block_mft_record()
2678 ni->mft_lcn_count = 1; in ntfs_get_block_mft_record()
2683 ni->mft_lcn[1] = ntfs_rl_vcn_to_lcn(rl, vcn + 1); in ntfs_get_block_mft_record()
2684 ni->mft_lcn_count++; in ntfs_get_block_mft_record()
2706 struct ntfs_inode *ni = NTFS_I(vi); in __ntfs_write_inode() local
2707 struct ntfs_inode *mft_ni = NTFS_I(ni->vol->mft_ino); in __ntfs_write_inode()
2712 ntfs_debug("Entering for %sinode 0x%llx.", NInoAttr(ni) ? "attr " : "", in __ntfs_write_inode()
2713 ni->mft_no); in __ntfs_write_inode()
2715 if (NVolShutdown(ni->vol)) in __ntfs_write_inode()
2723 if (NInoAttr(ni) || ni->nr_extents == -1) { in __ntfs_write_inode()
2724 NInoClearDirty(ni); in __ntfs_write_inode()
2733 mutex_lock_nested(&ni->mrec_lock, NTFS_INODE_MUTEX_NORMAL); in __ntfs_write_inode()
2735 m = map_mft_record(ni); in __ntfs_write_inode()
2737 mutex_unlock(&ni->mrec_lock); in __ntfs_write_inode()
2742 if (NInoNonResident(ni) && NInoRunlistDirty(ni)) { in __ntfs_write_inode()
2743 down_write(&ni->runlist.lock); in __ntfs_write_inode()
2744 err = ntfs_attr_update_mapping_pairs(ni, 0); in __ntfs_write_inode()
2746 NInoClearRunlistDirty(ni); in __ntfs_write_inode()
2747 up_write(&ni->runlist.lock); in __ntfs_write_inode()
2762 if ((vi->i_sb->s_flags & SB_ACTIVE) && NInoTestClearFileNameDirty(ni)) in __ntfs_write_inode()
2763 ntfs_inode_sync_filename(ni); in __ntfs_write_inode()
2766 if (NInoDirty(ni)) { in __ntfs_write_inode()
2768 err = ntfs_get_block_mft_record(mft_ni, ni); in __ntfs_write_inode()
2773 err = write_mft_record(ni, m, sync); in __ntfs_write_inode()
2777 unmap_mft_record(ni); in __ntfs_write_inode()
2781 mutex_lock(&ni->extent_lock); in __ntfs_write_inode()
2782 if (ni->nr_extents > 0) { in __ntfs_write_inode()
2785 for (i = 0; i < ni->nr_extents; i++) { in __ntfs_write_inode()
2787 ni->ext.extent_ntfs_inos[i]); in __ntfs_write_inode()
2789 mutex_unlock(&ni->extent_lock); in __ntfs_write_inode()
2791 mutex_unlock(&ni->mrec_lock); in __ntfs_write_inode()
2796 mutex_unlock(&ni->extent_lock); in __ntfs_write_inode()
2800 mutex_lock(&ni->extent_lock); in __ntfs_write_inode()
2801 if (ni->nr_extents > 0) { in __ntfs_write_inode()
2802 struct ntfs_inode **extent_nis = ni->ext.extent_ntfs_inos; in __ntfs_write_inode()
2805 ntfs_debug("Writing %i extent inodes.", ni->nr_extents); in __ntfs_write_inode()
2806 for (i = 0; i < ni->nr_extents; i++) { in __ntfs_write_inode()
2833 mutex_unlock(&ni->extent_lock); in __ntfs_write_inode()
2834 mutex_unlock(&ni->mrec_lock); in __ntfs_write_inode()
2843 unmap_mft_record(ni); in __ntfs_write_inode()
2844 mutex_unlock(&ni->mrec_lock); in __ntfs_write_inode()
2850 NVolSetErrors(ni->vol); in __ntfs_write_inode()
2886 struct ntfs_inode *ni = NULL; in ntfs_extent_inode_open() local
2905 ni = extent_nis[i]; in ntfs_extent_inode_open()
2906 if (mft_no != ni->mft_no) in ntfs_extent_inode_open()
2908 ni_mrec = map_mft_record(ni); in ntfs_extent_inode_open()
2911 ni->mft_no); in ntfs_extent_inode_open()
2919 ni->mft_no); in ntfs_extent_inode_open()
2920 unmap_mft_record(ni); in ntfs_extent_inode_open()
2923 unmap_mft_record(ni); in ntfs_extent_inode_open()
2928 ni = ntfs_new_extent_inode(base_ni->vol->sb, mft_no); in ntfs_extent_inode_open()
2929 if (!ni) in ntfs_extent_inode_open()
2932 ni->seq_no = (u16)MSEQNO_LE(mref); in ntfs_extent_inode_open()
2933 ni->nr_extents = -1; in ntfs_extent_inode_open()
2934 ni->ext.base_ntfs_ino = base_ni; in ntfs_extent_inode_open()
2949 base_ni->ext.extent_ntfs_inos[base_ni->nr_extents++] = ni; in ntfs_extent_inode_open()
2953 return ni; in ntfs_extent_inode_open()
2955 ntfs_destroy_ext_inode(ni); in ntfs_extent_inode_open()
2956 ni = NULL; in ntfs_extent_inode_open()
2966 int ntfs_inode_attach_all_extents(struct ntfs_inode *ni) in ntfs_inode_attach_all_extents() argument
2971 if (!ni) { in ntfs_inode_attach_all_extents()
2976 if (NInoAttr(ni)) in ntfs_inode_attach_all_extents()
2977 ni = ni->ext.base_ntfs_ino; in ntfs_inode_attach_all_extents()
2979 ntfs_debug("Entering for inode 0x%llx.\n", ni->mft_no); in ntfs_inode_attach_all_extents()
2982 if (!NInoAttrList(ni)) in ntfs_inode_attach_all_extents()
2985 if (!ni->attr_list) { in ntfs_inode_attach_all_extents()
2991 ale = (struct attr_list_entry *)ni->attr_list; in ntfs_inode_attach_all_extents()
2992 while ((u8 *)ale < ni->attr_list + ni->attr_list_size) { in ntfs_inode_attach_all_extents()
2993 if (ni->mft_no != MREF_LE(ale->mft_reference) && in ntfs_inode_attach_all_extents()
2995 if (!ntfs_extent_inode_open(ni, ale->mft_reference)) { in ntfs_inode_attach_all_extents()
3012 int ntfs_inode_add_attrlist(struct ntfs_inode *ni) in ntfs_inode_add_attrlist() argument
3022 if (!ni) in ntfs_inode_add_attrlist()
3025 ntfs_debug("inode %llu\n", ni->mft_no); in ntfs_inode_add_attrlist()
3027 if (NInoAttrList(ni) || ni->nr_extents) { in ntfs_inode_add_attrlist()
3028 ntfs_error(ni->vol->sb, "Inode already has attribute list"); in ntfs_inode_add_attrlist()
3032 ni_mrec = map_mft_record(ni); in ntfs_inode_add_attrlist()
3037 ctx = ntfs_attr_get_search_ctx(ni, ni_mrec); in ntfs_inode_add_attrlist()
3049 ntfs_error(ni->vol->sb, "Attribute list already present"); in ntfs_inode_add_attrlist()
3060 ntfs_error(ni->vol->sb, "Failed to realloc %d bytes", al_len); in ntfs_inode_add_attrlist()
3079 ale->mft_reference = MK_LE_MREF(ni->mft_no, in ntfs_inode_add_attrlist()
3090 ntfs_error(ni->vol->sb, "%s: Attribute lookup failed, inode %llu", in ntfs_inode_add_attrlist()
3091 __func__, ni->mft_no); in ntfs_inode_add_attrlist()
3096 ni->attr_list = al; in ntfs_inode_add_attrlist()
3097 ni->attr_list_size = al_len; in ntfs_inode_add_attrlist()
3098 NInoSetAttrList(ni); in ntfs_inode_add_attrlist()
3105 if (ntfs_inode_free_space(ni, (int)attr_al_len)) { in ntfs_inode_add_attrlist()
3108 ntfs_error(ni->vol->sb, "Failed to free space for attrlist"); in ntfs_inode_add_attrlist()
3114 err = ntfs_resident_attr_record_add(ni, AT_ATTRIBUTE_LIST, AT_UNNAMED, 0, in ntfs_inode_add_attrlist()
3117 ntfs_error(ni->vol->sb, "Couldn't add $ATTRIBUTE_LIST to MFT"); in ntfs_inode_add_attrlist()
3121 err = ntfs_attrlist_update(ni); in ntfs_inode_add_attrlist()
3126 unmap_mft_record(ni); in ntfs_inode_add_attrlist()
3131 ni->attr_list = NULL; in ntfs_inode_add_attrlist()
3132 NInoClearAttrList(ni); in ntfs_inode_add_attrlist()
3138 ntfs_error(ni->vol->sb, "Rollback failed to remove attrlist"); in ntfs_inode_add_attrlist()
3140 ntfs_error(ni->vol->sb, "Rollback failed to find attrlist"); in ntfs_inode_add_attrlist()
3144 ni->attr_list = al; in ntfs_inode_add_attrlist()
3145 ni->attr_list_size = al_len; in ntfs_inode_add_attrlist()
3146 NInoSetAttrList(ni); in ntfs_inode_add_attrlist()
3155 if (MREF_LE(ale->mft_reference) != ni->mft_no) { in ntfs_inode_add_attrlist()
3161 if (ntfs_attr_record_move_to(ctx, ni)) in ntfs_inode_add_attrlist()
3162 ntfs_error(ni->vol->sb, in ntfs_inode_add_attrlist()
3165 ntfs_error(ni->vol->sb, "Rollback failed to find attr"); in ntfs_inode_add_attrlist()
3173 ni->attr_list = NULL; in ntfs_inode_add_attrlist()
3174 ni->attr_list_size = 0; in ntfs_inode_add_attrlist()
3175 NInoClearAttrList(ni); in ntfs_inode_add_attrlist()
3176 NInoClearAttrListDirty(ni); in ntfs_inode_add_attrlist()
3181 unmap_mft_record(ni); in ntfs_inode_add_attrlist()
3202 int ntfs_inode_close(struct ntfs_inode *ni) in ntfs_inode_close() argument
3209 if (!ni) in ntfs_inode_close()
3212 ntfs_debug("Entering for inode %llu\n", ni->mft_no); in ntfs_inode_close()
3219 base_ni = ni->ext.base_ntfs_ino; in ntfs_inode_close()
3224 if (tmp_nis[i] != ni) in ntfs_inode_close()
3252 if (NInoDirty(ni)) in ntfs_inode_close()
3253 ntfs_error(ni->vol->sb, "Releasing dirty inode %llu!\n", in ntfs_inode_close()
3254 ni->mft_no); in ntfs_inode_close()
3255 if (NInoAttrList(ni) && ni->attr_list) in ntfs_inode_close()
3256 kvfree(ni->attr_list); in ntfs_inode_close()
3257 ntfs_destroy_ext_inode(ni); in ntfs_inode_close()
3263 void ntfs_destroy_ext_inode(struct ntfs_inode *ni) in ntfs_destroy_ext_inode() argument
3266 if (ni == NULL) in ntfs_destroy_ext_inode()
3269 ntfs_attr_close(ni); in ntfs_destroy_ext_inode()
3271 if (NInoDirty(ni)) in ntfs_destroy_ext_inode()
3272 ntfs_error(ni->vol->sb, "Releasing dirty ext inode %llu!\n", in ntfs_destroy_ext_inode()
3273 ni->mft_no); in ntfs_destroy_ext_inode()
3274 if (NInoAttrList(ni) && ni->attr_list) in ntfs_destroy_ext_inode()
3275 kvfree(ni->attr_list); in ntfs_destroy_ext_inode()
3276 kfree(ni->mrec); in ntfs_destroy_ext_inode()
3277 kmem_cache_free(ntfs_inode_cache, ni); in ntfs_destroy_ext_inode()
3280 static struct ntfs_inode *ntfs_inode_base(struct ntfs_inode *ni) in ntfs_inode_base() argument
3282 if (ni->nr_extents == -1) in ntfs_inode_base()
3283 return ni->ext.base_ntfs_ino; in ntfs_inode_base()
3284 return ni; in ntfs_inode_base()
3328 int ntfs_inode_free_space(struct ntfs_inode *ni, int size) in ntfs_inode_free_space() argument
3335 if (!ni || size < 0) in ntfs_inode_free_space()
3337 ntfs_debug("Entering for inode %llu, size %d\n", ni->mft_no, size); in ntfs_inode_free_space()
3339 sb = ni->vol->sb; in ntfs_inode_free_space()
3340 ni_mrec = map_mft_record(ni); in ntfs_inode_free_space()
3347 unmap_mft_record(ni); in ntfs_inode_free_space()
3352 ctx = ntfs_attr_get_search_ctx(ni, NULL); in ntfs_inode_free_space()
3382 while (ctx->ntfs_ino->mft_no != ni->mft_no) { in ntfs_inode_free_space()
3442 struct ntfs_inode *ni = NTFS_I(vi); in ntfs_inode_attr_pread() local
3448 WARN_ON(!NInoAttr(ni)); in ntfs_inode_attr_pread()
3452 mutex_lock(&ni->mrec_lock); in ntfs_inode_attr_pread()
3455 mutex_unlock(&ni->mrec_lock); in ntfs_inode_attr_pread()
3461 if (!NInoNonResident(ni)) { in ntfs_inode_attr_pread()
3465 ctx = ntfs_attr_get_search_ctx(ni->ext.base_ntfs_ino, NULL); in ntfs_inode_attr_pread()
3469 mutex_unlock(&ni->mrec_lock); in ntfs_inode_attr_pread()
3473 err = ntfs_attr_lookup(ni->type, ni->name, ni->name_len, CASE_SENSITIVE, in ntfs_inode_attr_pread()
3476 ntfs_error(vi->i_sb, "Failed to look up attr %#x", ni->type); in ntfs_inode_attr_pread()
3478 mutex_unlock(&ni->mrec_lock); in ntfs_inode_attr_pread()
3485 mutex_unlock(&ni->mrec_lock); in ntfs_inode_attr_pread()
3488 mutex_unlock(&ni->mrec_lock); in ntfs_inode_attr_pread()
3518 struct ntfs_inode *ni = NTFS_I(vi); in ntfs_enlarge_attribute() local
3522 if (pos + count <= ni->initialized_size) in ntfs_enlarge_attribute()
3525 if (NInoEncrypted(ni) && NInoNonResident(ni)) in ntfs_enlarge_attribute()
3528 if (NInoCompressed(ni)) in ntfs_enlarge_attribute()
3531 if (pos + count > ni->data_size) { in ntfs_enlarge_attribute()
3532 if (ntfs_attr_truncate(ni, pos + count)) { in ntfs_enlarge_attribute()
3538 ret = ntfs_attr_lookup(ni->type, in ntfs_enlarge_attribute()
3539 ni->name, ni->name_len, CASE_SENSITIVE, in ntfs_enlarge_attribute()
3542 ntfs_error(sb, "Failed to look up attr %#x", ni->type); in ntfs_enlarge_attribute()
3547 if (!NInoNonResident(ni)) { in ntfs_enlarge_attribute()
3548 if (likely(i_size_read(vi) < ni->data_size)) in ntfs_enlarge_attribute()
3549 i_size_write(vi, ni->data_size); in ntfs_enlarge_attribute()
3553 if (pos + count > ni->initialized_size) { in ntfs_enlarge_attribute()
3556 ni->initialized_size = pos + count; in ntfs_enlarge_attribute()
3557 if (i_size_read(vi) < ni->initialized_size) in ntfs_enlarge_attribute()
3558 i_size_write(vi, ni->initialized_size); in ntfs_enlarge_attribute()
3567 struct ntfs_inode *ni = NTFS_I(vi); in __ntfs_inode_resident_attr_pwrite() local
3573 WARN_ON(NInoNonResident(ni)); in __ntfs_inode_resident_attr_pwrite()
3575 ntfs_error(vi->i_sb, "Out of write into resident attr %#x", ni->type); in __ntfs_inode_resident_attr_pwrite()
3590 ni->type, err); in __ntfs_inode_resident_attr_pwrite()
3610 struct ntfs_inode *ni = NTFS_I(vi); in __ntfs_inode_non_resident_attr_pwrite() local
3618 WARN_ON(!NInoNonResident(ni)); in __ntfs_inode_non_resident_attr_pwrite()
3635 index, ni->type, PTR_ERR(folio)); in __ntfs_inode_non_resident_attr_pwrite()
3652 struct ntfs_volume *vol = ni->vol; in __ntfs_inode_non_resident_attr_pwrite()
3664 down_write(&ni->runlist.lock); in __ntfs_inode_non_resident_attr_pwrite()
3665 rl = ntfs_attr_vcn_to_rl(ni, vcn, &lcn); in __ntfs_inode_non_resident_attr_pwrite()
3668 up_write(&ni->runlist.lock); in __ntfs_inode_non_resident_attr_pwrite()
3679 up_write(&ni->runlist.lock); in __ntfs_inode_non_resident_attr_pwrite()
3734 struct ntfs_inode *ni = NTFS_I(vi); in ntfs_inode_attr_pwrite() local
3738 WARN_ON(!NInoAttr(ni)); in ntfs_inode_attr_pwrite()
3740 ctx = ntfs_attr_get_search_ctx(ni->ext.base_ntfs_ino, NULL); in ntfs_inode_attr_pwrite()
3746 ret = ntfs_attr_lookup(ni->type, ni->name, ni->name_len, CASE_SENSITIVE, in ntfs_inode_attr_pwrite()
3750 ntfs_error(vi->i_sb, "Failed to look up attr %#x", ni->type); in ntfs_inode_attr_pwrite()
3754 mutex_lock(&ni->mrec_lock); in ntfs_inode_attr_pwrite()
3756 mutex_unlock(&ni->mrec_lock); in ntfs_inode_attr_pwrite()
3760 if (NInoNonResident(ni)) in ntfs_inode_attr_pwrite()