Lines Matching refs:ni
406 (unsigned long long)ia_na->ni->mft_no);
411 ia_na->ni->mft_no, vcn)) {
658 ntfs_inode *ni;
692 ni = parent;
711 ni = ntfs_inode_open(vol, inum);
712 if (!ni) {
717 result = ni;
721 ni = ntfs_inode_open(vol, FILE_root);
722 if (!ni) {
767 inum = ntfs_inode_lookup_by_name(ni, unicode, len);
786 inum = ntfs_inode_lookup_by_name(ni, unicode, len);
795 if (ni != parent)
796 if (ntfs_inode_close(ni)) {
802 ni = ntfs_inode_open(vol, inum);
803 if (!ni) {
819 result = ni;
820 ni = NULL;
822 if (ni && (ni != parent))
823 if (ntfs_inode_close(ni) && !err)
866 u32 ntfs_interix_types(ntfs_inode *ni)
873 na = ntfs_attr_open(ni, AT_DATA, NULL, 0);
879 if (ni->mrec->flags & MFT_RECORD_IS_DIRECTORY)
884 if (!(ni->flags & FILE_ATTR_HIDDEN))
916 ntfs_inode *ni;
920 ni = ntfs_inode_open(dir_ni->vol, mref);
921 if (ni) {
923 dt_type = (ntfs_possible_symlink(ni)
928 dt_type = ntfs_interix_types(ni);
933 if (ntfs_inode_close(ni)) {
1028 * @ni: ntfs inode whose parent directory to find
1030 * Find the parent directory of the ntfs inode @ni. To do this, find the first
1031 * file name attribute in the mft record of @ni and return the parent mft
1044 static MFT_REF ntfs_mft_get_parent_ref(ntfs_inode *ni)
1053 if (!ni) {
1058 ctx = ntfs_attr_get_search_ctx(ni, NULL);
1063 (unsigned long long)ni->mft_no);
1068 "%lld)\n", (unsigned long long)ni->mft_no);
1355 ia_na->ni->mft_no, ia_start >> index_vcn_size_bits)) {
1473 ntfs_inode *ni;
1490 ni = ntfs_mft_record_alloc(dir_ni->vol, NULL);
1491 if (!ni)
1494 ntfs_inode_invalidate(dir_ni->vol, ni->mft_no);
1511 si->creation_time = ni->creation_time;
1512 si->last_data_change_time = ni->last_data_change_time;
1513 si->last_mft_change_time = ni->last_mft_change_time;
1514 si->last_access_time = ni->last_access_time;
1516 set_nino_flag(ni, v3_Extensions);
1517 ni->owner_id = si->owner_id = const_cpu_to_le32(0);
1518 ni->security_id = si->security_id = securid;
1519 ni->quota_charged = si->quota_charged = const_cpu_to_le64(0);
1520 ni->usn = si->usn = const_cpu_to_le64(0);
1522 clear_nino_flag(ni, v3_Extensions);
1529 ni->flags = FILE_ATTRIBUTE_RECALL_ON_OPEN;
1534 ni->flags = FILE_ATTR_SYSTEM;
1538 ni->flags |= FILE_ATTR_ARCHIVE;
1543 ni->flags |= FILE_ATTR_HIDDEN;
1554 ni->flags |= FILE_ATTR_COMPRESSED;
1556 if (ntfs_attr_add(ni, AT_STANDARD_INFORMATION, AT_UNNAMED, 0,
1565 if (ntfs_sd_add_everyone(ni)) {
1587 ir->index_block_size = cpu_to_le32(ni->vol->indx_record_size);
1588 if (ni->vol->cluster_size <= ni->vol->indx_record_size)
1590 ni->vol->indx_record_size >>
1591 ni->vol->cluster_size_bits;
1594 ni->vol->indx_record_size >>
1604 if (ntfs_attr_add(ni, AT_INDEX_ROOT, NTFS_INDEX_I30, 4,
1678 if (ntfs_attr_add(ni, AT_DATA, AT_UNNAMED, 0, (u8*)data,
1705 fn->file_attributes |= ni->flags & FILE_ATTR_COMPRESSED;
1707 fn->file_attributes |= ni->flags & FILE_ATTR_HIDDEN;
1708 fn->creation_time = ni->creation_time;
1709 fn->last_data_change_time = ni->last_data_change_time;
1710 fn->last_mft_change_time = ni->last_mft_change_time;
1711 fn->last_access_time = ni->last_access_time;
1712 if (ni->mrec->flags & MFT_RECORD_IS_DIRECTORY)
1715 fn->data_size = cpu_to_sle64(ni->data_size);
1716 fn->allocated_size = cpu_to_sle64(ni->allocated_size);
1720 if (ntfs_attr_add(ni, AT_FILE_NAME, AT_UNNAMED, 0, (u8*)fn, fn_len)) {
1726 if (ntfs_index_add_filename(dir_ni, fn, MK_MREF(ni->mft_no,
1727 le16_to_cpu(ni->mrec->sequence_number)))) {
1734 ni->mrec->link_count = const_cpu_to_le16(1);
1736 ni->mrec->flags |= MFT_RECORD_IS_DIRECTORY;
1741 err = ntfs_reparse_set_wsl_symlink(ni, target,
1748 err = ntfs_reparse_set_wsl_not_symlink(ni,
1751 err = ntfs_ea_set_wsl_not_symlink(ni,
1754 ntfs_remove_ntfs_reparse_data(ni);
1766 ntfs_inode_mark_dirty(ni);
1771 return ni;
1776 ntfs_index_remove(dir_ni, ni, fn, fn_len);
1779 ntfs_attr_remove(ni, AT_SECURITY_DESCRIPTOR, AT_UNNAMED, 0);
1782 ntfs_attr_remove(ni, AT_DATA, AT_UNNAMED, 0);
1788 while (ni->nr_extents)
1789 if (ntfs_mft_record_free(ni->vol, *(ni->extent_nis))) {
1794 if (ntfs_mft_record_free(ni->vol, ni))
1841 int ntfs_check_empty_dir(ntfs_inode *ni)
1846 if (!(ni->mrec->flags & MFT_RECORD_IS_DIRECTORY))
1849 na = ntfs_attr_open(ni, AT_INDEX_ROOT, NTFS_INDEX_I30, 4);
1868 static int ntfs_check_unlinkable_dir(ntfs_inode *ni, FILE_NAME_ATTR *fn)
1870 int link_count = le16_to_cpu(ni->mrec->link_count);
1873 ret = ntfs_check_empty_dir(ni);
1894 * @ni: ntfs inode for object to delte
1899 * @ni is always closed after the call to this function (even if it failed),
1905 ntfs_inode *ni, ntfs_inode *dir_ni, const ntfschar *name,
1928 if (!ni || !dir_ni || !name || !name_len) {
1933 if (ni->nr_extents == -1)
1934 ni = ni->base_ni;
1943 actx = ntfs_attr_get_search_ctx(ni, NULL);
1987 && NVolCaseSensitive(ni->vol)))
1992 ni->vol->upcase, ni->vol->upcase_len)){
2017 if (ntfs_check_unlinkable_dir(ni, fn) < 0)
2020 if (ntfs_index_remove(dir_ni, ni, fn, le32_to_cpu(actx->attr->value_length)))
2028 if ((ni->mrec->link_count == const_cpu_to_le16(1)) && !actx->base_ntfs_ino) {
2036 ni->mrec->link_count = cpu_to_le16(le16_to_cpu(
2037 ni->mrec->link_count) - 1);
2039 ntfs_inode_mark_dirty(ni);
2056 lkitem.inum = ni->mft_no;
2062 inum = ni->mft_no;
2084 if (ni->mrec->link_count) {
2085 ntfs_inode_update_times(ni, NTFS_UPDATE_CTIME);
2088 if (ntfs_delete_reparse_index(ni)) {
2097 if (ntfs_delete_object_id_index(ni)) {
2109 rl = ntfs_mapping_pairs_decompress(ni->vol, actx->attr,
2117 if (ntfs_cluster_free_from_rl(ni->vol, rl)) {
2137 for (i=ni->nr_extents-1; i>=0; i--) {
2138 ni->extent_nis[i]->base_ni = (ntfs_inode*)NULL;
2139 ni->extent_nis[i]->nr_extents = 0;
2140 if (ntfs_mft_record_free(ni->vol, ni->extent_nis[i])) {
2146 free(ni->extent_nis);
2147 ni->nr_extents = 0;
2148 ni->extent_nis = (ntfs_inode**)NULL;
2150 while (ni->nr_extents)
2151 if (ntfs_mft_record_free(ni->vol, *(ni->extent_nis))) {
2157 debug_double_inode(ni->mft_no,0);
2158 if (ntfs_mft_record_free(ni->vol, ni)) {
2163 ni = NULL;
2171 if (ntfs_inode_close(ni) && !err)
2187 * @ni: ntfs inode for object to create hard link
2200 static int ntfs_link_i(ntfs_inode *ni, ntfs_inode *dir_ni, const ntfschar *name,
2208 if (!ni || !dir_ni || !name || !name_len ||
2209 ni->mft_no == dir_ni->mft_no) {
2220 ni->flags |= FILE_ATTR_HIDDEN;
2222 ni->flags &= ~FILE_ATTR_HIDDEN;
2236 fn->file_attributes = ni->flags;
2237 if (ni->mrec->flags & MFT_RECORD_IS_DIRECTORY) {
2241 fn->allocated_size = cpu_to_sle64(ni->allocated_size);
2242 fn->data_size = cpu_to_sle64(ni->data_size);
2244 fn->creation_time = ni->creation_time;
2245 fn->last_data_change_time = ni->last_data_change_time;
2246 fn->last_mft_change_time = ni->last_mft_change_time;
2247 fn->last_access_time = ni->last_access_time;
2250 if (ntfs_index_add_filename(dir_ni, fn, MK_MREF(ni->mft_no,
2251 le16_to_cpu(ni->mrec->sequence_number)))) {
2257 if (ntfs_attr_add(ni, AT_FILE_NAME, AT_UNNAMED, 0, (u8*)fn, fn_len)) {
2261 if (ntfs_index_remove(dir_ni, ni, fn, fn_len))
2266 ni->mrec->link_count = cpu_to_le16(le16_to_cpu(
2267 ni->mrec->link_count) + 1);
2269 ntfs_inode_mark_dirty(ni);
2281 int ntfs_link(ntfs_inode *ni, ntfs_inode *dir_ni, const ntfschar *name,
2284 return (ntfs_link_i(ni, dir_ni, name, name_len, FILE_NAME_POSIX));
2298 ntfs_inode *ntfs_dir_parent_inode(ntfs_inode *ni)
2305 if (ni->mft_no != FILE_root) {
2307 ctx = ntfs_attr_get_search_ctx(ni, NULL);
2318 dir_ni = ntfs_inode_open(ni->vol, MREF(inum));
2338 static int get_dos_name(ntfs_inode *ni, u64 dnum, ntfschar *dosname)
2346 ctx = ntfs_attr_get_search_ctx(ni, NULL);
2390 static int get_long_name(ntfs_inode *ni, u64 dnum, ntfschar *longname)
2398 ctx = ntfs_attr_get_search_ctx(ni, NULL);
2455 int ntfs_get_ntfs_dos_name(ntfs_inode *ni, ntfs_inode *dir_ni,
2465 doslen = get_dos_name(ni, dnum, dosname);
2473 ni->vol->upcase, ni->vol->upcase_len);
2501 static int set_namespace(ntfs_inode *ni, ntfs_inode *dir_ni,
2514 actx = ntfs_attr_get_search_ctx(ni, NULL);
2538 ntfs_inode_mark_dirty(ni);
2575 static int set_dos_name(ntfs_inode *ni, ntfs_inode *dir_ni,
2591 vol = ni->vol;
2593 fnum = ni->mft_no;
2595 linkcount = le16_to_cpu(ni->mrec->link_count);
2598 collapsible = ntfs_collapsible_chars(ni->vol, shortname, shortlen,
2604 oldnametype = set_namespace(ni, dir_ni, deletename,
2607 if (set_namespace(ni, dir_ni, longname, longlen,
2610 (const char*)NULL, ni, dir_ni,
2619 if (!done && (set_namespace(ni, dir_ni,
2623 ntfs_inode_update_times(ni, NTFS_UPDATE_CTIME);
2625 if (ntfs_inode_close_in_dir(ni,dir_ni) && !res)
2631 if (!ntfs_link_i(ni, dir_ni, shortname, shortlen,
2634 && (le16_to_cpu(ni->mrec->link_count) > linkcount)) {
2637 if (!ntfs_delete(vol, (char*)NULL, ni, dir_ni,
2642 ni = ntfs_inode_open(vol, fnum);
2643 if (ni) {
2644 if (!ntfs_link_i(ni, dir_ni,
2648 if (ntfs_inode_close_in_dir(ni,
2658 ntfs_inode_close_in_dir(ni,dir_ni);
2676 int ntfs_set_ntfs_dos_name(ntfs_inode *ni, ntfs_inode *dir_ni,
2705 || ntfs_forbidden_names(ni->vol,shortname,shortlen,TRUE)) {
2706 ntfs_inode_close_in_dir(ni,dir_ni);
2712 longlen = get_long_name(ni, dnum, longname);
2714 oldlen = get_dos_name(ni, dnum, oldname);
2716 && !ntfs_forbidden_names(ni->vol, longname, longlen,
2729 res = set_dos_name(ni, dir_ni,
2740 res = set_dos_name(ni, dir_ni,
2756 ntfs_inode_close_in_dir(ni,dir_ni);
2766 int ntfs_remove_ntfs_dos_name(ntfs_inode *ni, ntfs_inode *dir_ni)
2779 vol = ni->vol;
2781 longlen = get_long_name(ni, dnum, longname);
2783 shortlen = get_dos_name(ni, dnum, shortname);
2786 oldnametype = set_namespace(ni,dir_ni,longname,longlen,
2795 set_namespace(ni,dir_ni,longname,longlen,
2801 if (set_namespace(ni,dir_ni,shortname,shortlen,
2804 (const char*)NULL, ni,
2818 (long long)ni->mft_no);
2833 ntfs_inode_close_in_dir(ni,dir_ni);
2866 int ntfs_dir_link_cnt(ntfs_inode *ni)
2874 if (!ni) {
2879 if (ni->nr_extents == -1)
2880 ni = ni->base_ni;
2881 if (ni->mrec->flags & MFT_RECORD_IS_DIRECTORY) {
2889 err = ntfs_readdir(ni, &pos, &nlink, nlink_increment);
2897 actx = ntfs_attr_get_search_ctx(ni, NULL);
2913 (long long)ni->mft_no);