Lines Matching refs:ni

108 	ntfs_inode *ni;
113 ni = NTFS_I(buf_vnode(cbp));
115 if (size & (ni->block_size - 1))
120 ntfs_error(ni->vol->mp, "Failed to map buffer (error %d).",
125 if (NInoMstProtected(ni)) {
127 u32 rec_size = ni->block_size;
131 if (ni->type == AT_INDEX_ALLOCATION)
137 (unsigned long long)ni->mft_no,
138 (unsigned)le32_to_cpu(ni->type),
139 (unsigned)ni->name_len);
143 lck_spin_lock(&ni->size_lock);
144 data_size = ni->data_size;
145 init_size = ni->initialized_size;
146 lck_spin_unlock(&ni->size_lock);
154 ntfs_error(ni->vol->mp, "Buffer begins past "
157 (unsigned long long)ni->mft_no);
165 (unsigned long long)ni->mft_no);
186 } else if (NInoEncrypted(ni)) {
198 ntfs_error(ni->vol->mp, "Failed to unmap buffer (error %d).",
231 ntfs_inode *ni;
237 ni = NTFS_I(vn);
239 (unsigned long long)ni->mft_no,
241 if (!NInoMstProtected(ni) || ni->mft_no || NInoAttr(ni))
245 if (size != ni->block_size)
246 panic("%s(): size != ni->block_size\n", __FUNCTION__);
247 ofs = (s64)buf_lblkno(buf) << ni->block_size_shift;
248 lck_spin_lock(&ni->size_lock);
249 data_size = ni->data_size;
250 init_size = ni->initialized_size;
251 lck_spin_unlock(&ni->size_lock);
263 (unsigned long long)ni->mft_no);
271 (unsigned long long)ni->mft_no);
295 (unsigned long long)ni->mft_no,
341 ntfs_inode *ni;
353 ni = NTFS_I(vn);
354 if (!ni) {
360 "logical block 0x%llx.", (unsigned long long)ni->mft_no,
361 le32_to_cpu(ni->type), (unsigned)ni->name_len,
363 if (S_ISDIR(ni->mode))
365 vol = ni->vol;
381 if (ni->mft_no == FILE_MFTMirr && !NInoAttr(ni))
387 if (ni->mft_no != FILE_MFT || NInoAttr(ni))
400 ofs = lblkno << ni->block_size_shift;
401 lck_spin_lock(&ni->size_lock);
402 max_end_io = ni->initialized_size;
406 if (max_end_io > ni->data_size)
409 if (ofs < ni->data_size) {
410 lck_spin_unlock(&ni->size_lock);
418 max_end_io = ni->data_size;
421 lck_spin_unlock(&ni->size_lock);
454 if (ni->type == AT_INDEX_ALLOCATION)
456 else if (ni == mft_ni || ni == vol->mftmirr_ni) {
458 if (ni == mft_ni)
463 (unsigned long long)ni->mft_no,
464 (unsigned)le32_to_cpu(ni->type),
465 (unsigned)ni->name_len);
481 err = ntfs_mst_fixup_pre_write(rec, ni->block_size);
487 (unsigned long long)ni->mft_no,
488 (unsigned)le32_to_cpu(ni->type),
601 ntfs_inode *ni, *dir_ni = NTFS_I(a->a_dvp);
667 ni = NTFS_I(vn);
668 lck_rw_lock_shared(&ni->lock);
673 if (!NInoDeleted(ni)) {
674 lck_rw_unlock_shared(&ni->lock);
680 lck_rw_unlock_shared(&ni->lock);
751 &ni, NULL, NULL);
761 if (MSEQNO(mref) != ni->seq_no) {
762 lck_rw_unlock_shared(&ni->lock);
763 (void)vnode_put(ni->vn);
770 if (!S_ISDIR(ni->mode)) {
771 lck_rw_unlock_shared(&ni->lock);
772 (void)vnode_put(ni->vn);
782 *a->a_vpp = ni->vn;
783 lck_rw_unlock_shared(&ni->lock);
927 err = ntfs_inode_get(vol, mft_no, FALSE, LCK_RW_TYPE_SHARED, &ni,
939 if (MSEQNO(mref) != ni->seq_no && mft_no != FILE_MFT) {
940 lck_rw_unlock_shared(&ni->lock);
941 (void)vnode_put(ni->vn);
956 if (cn->cn_flags & ISLASTCN || S_ISDIR(ni->mode) ||
957 S_ISLNK(ni->mode)) {
963 *a->a_vpp = ni->vn;
966 lck_rw_unlock_shared(&ni->lock);
975 lck_rw_unlock_shared(&ni->lock);
976 (void)vnode_put(ni->vn);
999 vn = ni->vn;
1005 * At present @ni is guaranteed to be a base inode.
1007 err = ntfs_mft_record_map(ni, &m);
1013 ctx = ntfs_attr_search_ctx_get(ni, m);
1055 ntfs_mft_record_unmap(ni);
1065 if (!old_name || (ni->link_count > 1 && ((long)strlen(old_name) !=
1085 *a->a_vpp = ni->vn;
1086 lck_rw_unlock_shared(&ni->lock);
1095 ntfs_mft_record_unmap(ni);
1097 lck_rw_unlock_shared(&ni->lock);
1134 ntfs_inode *ni, *dir_ni = NTFS_I(dir_vn);
1255 err = ntfs_mft_record_alloc(vol, va, cn, dir_ni, &ni, &m, &a);
1274 if (lock || S_ISLNK(ni->mode))
1275 lck_rw_lock_exclusive(&ni->lock);
1291 fn->file_attributes = ni->file_attributes;
1296 * attribute which is why it is not set in @ni->file_attributes.
1305 fn->data_size = ni->data_size;
1316 ni->link_count = 1;
1322 * ntfs_inode @ni and its mft record @m.
1324 NInoSetMrecNeedsDirtying(ni);
1330 ntfs_mft_record_unmap(ni);
1335 if (S_ISLNK(ni->mode)) {
1336 err = ntfs_inode_afpinfo_write(ni);
1342 lck_rw_unlock_exclusive(&ni->lock);
1347 (unsigned long long)ni->mft_no, err);
1353 MK_LE_MREF(ni->mft_no, ni->seq_no));
1372 cache_enter(dir_ni->vn, ni->vn, cn);
1379 ntfs_inode_unlock_alloc(ni);
1381 (unsigned long long)ni->mft_no);
1382 *vn = ni->vn;
1401 lck_rw_unlock_exclusive(&ni->lock);
1402 err2 = ntfs_mft_record_map(ni, &m);
1410 NInoSetMrecNeedsDirtying(ni);
1411 ntfs_mft_record_unmap(ni);
1413 ni->link_count = 0;
1415 ntfs_inode_unlock_alloc(ni);
1416 cache_purge(ni->vn);
1417 (void)vnode_put(ni->vn);
1543 ntfs_inode *ni = NTFS_I(a->a_dvp);
1545 if (ni)
1549 (unsigned long long)ni->mft_no);
1587 ntfs_inode *ni = NTFS_I(a->a_dvp);
1589 if (ni)
1594 (unsigned long long)ni->mft_no);
1622 ntfs_inode *base_ni, *ni = NTFS_I(a->a_vp);
1625 if (!ni) {
1630 (unsigned long long)ni->mft_no, (unsigned)a->a_mode);
1631 base_ni = ni;
1632 if (NInoAttr(ni))
1633 base_ni = ni->base_ni;
1641 if (ni->mft_no < FILE_first_user && ni != ni->vol->root_ni)
1644 lck_rw_lock_shared(&ni->lock);
1646 if (NInoDeleted(ni)) {
1647 lck_rw_unlock_shared(&ni->lock);
1649 cache_purge(ni->vn);
1651 "ENOENT.", (unsigned long long)ni->mft_no);
1658 if (NInoEncrypted(ni)) {
1659 lck_rw_unlock_shared(&ni->lock);
1661 "EACCES.", (unsigned long long)ni->mft_no);
1664 lck_rw_unlock_shared(&ni->lock);
1691 ntfs_inode *base_ni, *ni = NTFS_I(vn);
1693 if (!ni) {
1698 (unsigned long long)ni->mft_no, a->a_fflag);
1699 base_ni = ni;
1700 if (NInoAttr(ni))
1701 base_ni = ni->base_ni;
1718 if (ni != base_ni && ni->type == AT_INDEX_ALLOCATION &&
1719 ni->nr_dirhints) {
1722 busy = vnode_isinuse(vn, ni->nr_refs + 1);
1723 lck_rw_lock_exclusive(&ni->lock);
1724 ntfs_dirhints_put(ni, busy);
1725 lck_rw_unlock_exclusive(&ni->lock);
1774 ntfs_inode *ni, *base_ni;
1783 ni = NTFS_I(a->a_vp);
1784 if (!ni) {
1788 vol = ni->vol;
1789 mft_no = ni->mft_no;
1792 base_ni = ni;
1793 if (NInoAttr(ni)) {
1794 base_ni = ni->base_ni;
1797 lck_rw_lock_shared(&ni->lock);
1800 if (NInoDeleted(ni)) {
1802 cache_purge(ni->vn);
1814 if (!S_ISDIR(ni->mode))
1815 va->va_nlink = ni->link_count;
1817 switch (ni->mode & S_IFMT) {
1824 va->va_rdev = ni->rdev;
1835 lck_spin_lock(&ni->size_lock);
1841 va->va_total_size = va->va_data_size = ni->data_size;
1853 if (NInoNonResident(ni)) {
1854 if (ni->type == AT_DATA && (NInoCompressed(ni) ||
1855 NInoSparse(ni)))
1856 on_disk_size = ni->compressed_size;
1858 on_disk_size = ni->allocated_size;
1861 lck_spin_unlock(&ni->size_lock);
1864 va->va_uid = ni->uid;
1865 va->va_gid = ni->gid;
1866 va->va_mode = ni->mode;
1882 * if (NInoCompressed(ni))
1973 if (is_root && base_ni == ni)
1975 else if ((parent_vn = vnode_getparent(ni->vn))) {
1982 } else if (ni != base_ni) {
1987 } else /* if (ni == base_ni) */ {
2036 if (!name_is_done && VATTR_IS_ACTIVE(va, va_name) && ni == base_ni) {
2076 if (ni != base_ni)
2077 lck_rw_unlock_shared(&ni->lock);
2117 lck_rw_unlock_shared(&ni->lock);
2118 if (ni != base_ni)
2147 ntfs_inode *base_ni, *ni = NTFS_I(a->a_vp);
2153 if (!ni) {
2157 vol = ni->vol;
2159 (unsigned long long)ni->mft_no);
2160 base_ni = ni;
2161 if (NInoAttr(ni)) {
2162 base_ni = ni->base_ni;
2165 lck_rw_lock_exclusive(&ni->lock);
2167 if (NInoDeleted(ni)) {
2169 cache_purge(ni->vn);
2175 (unsigned long long)ni->mft_no,
2178 if (NInoSparse(ni)) {
2191 if (vnode_vtype(ni->vn) != VREG ||
2192 (!ni->mft_no && !NInoAttr(ni)))
2195 err = ntfs_attr_resize(ni, va->va_data_size,
2208 if (ni != base_ni)
2209 lck_rw_unlock_exclusive(&ni->lock);
2251 * if (((flags & SF_COMPRESSED) && !NInoCompressed(ni)) ||
2253 * NInoCompressed(ni))) {
2254 * if (ni != base_ni) {
2401 if (ni != base_ni)
2402 lck_rw_unlock_exclusive(&ni->lock);
2411 * @ni: ntfs inode describing the compressed attribute to read
2432 static inline int ntfs_vnop_read_compressed(ntfs_inode *ni, uio_t uio,
2438 vnode_t vn = ni->vn;
2450 (unsigned long long)ni->mft_no,
2458 if (ni->type != AT_DATA || !NInoCompressed(ni) ||
2459 !NInoNonResident(ni) || NInoEncrypted(ni) ||
2460 NInoRaw(ni))
2467 err = ntfs_raw_inode_get(ni, LCK_RW_TYPE_SHARED, &raw_ni);
2469 ntfs_error(ni->vol->mp, "Failed to get raw inode (error %d).",
2498 align_mask = ni->compression_block_size - 1;
2541 ntfs_error(ni->vol->mp,
2584 ntfs_error(ni->vol->mp, "Failed to map page list "
2595 err = ntfs_read_compressed(ni, raw_ni, ofs, count, kaddr, pl,
2598 ntfs_error(ni->vol->mp, "Failed to decompress data "
2616 ntfs_error(ni->vol->mp, "uiomove() failed (error %d).",
2622 ntfs_error(ni->vol->mp, "ubc_upl_unmap() failed "
2690 ntfs_error(ni->vol->mp, "ubc_upl_unmap() failed (error %d).",
2719 * @ni: ntfs inode whose data to read into memory
2724 * Read uio_resid(@uio) bytes from the ntfs inode @ni, starting at byte offset
2759 * Note it is up to the caller to verify that reading from the inode @ni makes
2767 static errno_t ntfs_read(ntfs_inode *ni, uio_t uio, const int ioflags,
2773 vnode_t vn = ni->vn;
2782 base_ni = ni;
2783 if (NInoAttr(ni))
2784 base_ni = ni->base_ni;
2787 (unsigned long long)ni->mft_no,
2796 lck_rw_lock_shared(&ni->lock);
2798 if (NInoDeleted(ni)) {
2800 lck_rw_unlock_shared(&ni->lock);
2802 cache_purge(ni->vn);
2811 lck_spin_lock(&ni->size_lock);
2813 if (size > ni->data_size)
2814 size = ni->data_size;
2815 lck_spin_unlock(&ni->size_lock);
2830 if (NInoEncrypted(ni)) {
2831 ntfs_warning(ni->vol->mp, "Denying access to encrypted "
2836 if (NInoNonResident(ni)) {
2839 if (NInoCompressed(ni) && !NInoRaw(ni)) {
2840 err = ntfs_vnop_read_compressed(ni, uio, size, ioflags);
2845 ntfs_error(ni->vol->mp, "Failed ("
2851 if (NInoMstProtected(ni) || NInoEncrypted(ni))
2857 ntfs_error(ni->vol->mp, "Failed for file inode "
2862 (unsigned long long)ni->mft_no,
2869 } /* else if (!NInoNonResident(ni)) */
2883 ntfs_warning(ni->vol->mp, "Unexpected count 0x%llx > PAGE_SIZE "
2892 ntfs_error(ni->vol->mp, "cluster_copy_ubc_data() failed "
2916 ntfs_warning(ni->vol->mp, "Unexpected partial transfer from "
2931 err = ntfs_page_map(ni, 0, &upl, &pl, &kaddr, FALSE);
2933 ntfs_error(ni->vol->mp, "Failed to map page (error %d).", err);
2937 ntfs_page_unmap(ni, upl, pl, FALSE);
2943 ntfs_error(ni->vol->mp, "uiomove() failed (error %d).", err);
2955 if (uio_resid(uio) < start_count && !NVolReadOnly(ni->vol) &&
2956 !(vfs_flags(ni->vol->mp) & MNT_NOATIME) &&
2958 (ni == base_ni || ni->type == AT_DATA)) {
2962 if (ni->vol->major_ver > 1) {
2964 base_ni != ni->vol->root_ni)
2968 base_ni != ni->vol->root_ni)
2977 lck_rw_unlock_shared(&ni->lock);
3029 ntfs_inode *ni = NTFS_I(vn);
3031 if (!ni) {
3041 if (vnode_issystem(vn) || NInoMstProtected(ni) ||
3042 (!S_ISREG(ni->mode) && !(NInoAttr(ni) &&
3043 ni->type == AT_DATA))) {
3044 if (S_ISDIR(ni->mode))
3048 return (int)ntfs_read(ni, a->a_uio, a->a_ioflag, FALSE);
3054 * @ni: ntfs inode to write to
3060 * ntfs inode @ni, starting at byte offset uio_offset(@uio) into the inode.
3089 * Note it is up to the caller to verify that writing to the inode @ni makes
3096 static errno_t ntfs_write(ntfs_inode *ni, uio_t uio, int ioflags,
3102 vnode_t vn = ni->vn;
3112 if (NVolReadOnly(ni->vol))
3119 (unsigned long long)ni->mft_no,
3130 if (NInoEncrypted(ni)) {
3131 ntfs_warning(ni->vol->mp, "Denying write to encrypted "
3136 if (NInoCompressed(ni)) {
3137 ntfs_error(ni->vol->mp, "Writing to compressed files is not "
3142 if (NInoSparse(ni))
3145 base_ni = ni;
3146 if (NInoAttr(ni))
3147 base_ni = ni->base_ni;
3163 lck_rw_lock_exclusive(&ni->lock);
3170 if (NInoDeleted(ni)) {
3172 lck_rw_unlock_exclusive(&ni->lock);
3174 cache_purge(ni->vn);
3177 lck_spin_lock(&ni->size_lock);
3178 ofs = ni->data_size;
3179 lck_spin_unlock(&ni->size_lock);
3183 (unsigned long long)ni->mft_no,
3189 if (NInoSparse(ni)) {
3190 lck_rw_lock_exclusive(&ni->lock);
3193 lck_rw_lock_shared(&ni->lock);
3202 if (NInoDeleted(ni)) {
3205 lck_rw_unlock_exclusive(&ni->lock);
3207 lck_rw_unlock_shared(&ni->lock);
3210 cache_purge(ni->vn);
3213 lck_spin_lock(&ni->size_lock);
3214 size = ni->initialized_size;
3215 lck_spin_unlock(&ni->size_lock);
3218 if (!lck_rw_lock_shared_to_exclusive(&ni->lock))
3219 lck_rw_lock_exclusive(&ni->lock);
3224 (unsigned long long)ni->mft_no,
3243 lck_spin_lock(&ni->size_lock);
3244 old_size = ni->data_size;
3245 size = ni->allocated_size;
3246 lck_spin_unlock(&ni->size_lock);
3256 if (NInoSparse(ni) && NInoNonResident(ni) &&
3257 (ofs & ~ni->vol->cluster_size_mask) < size) {
3262 aligned_end = (end + ni->vol->cluster_size_mask) &
3263 ~ni->vol->cluster_size_mask;
3271 err = ntfs_attr_instantiate_holes(ni,
3272 ofs & ~ni->vol->cluster_size_mask, aligned_end,
3275 ntfs_error(ni->vol->mp, "Cannot perform write to "
3278 (unsigned long long)ni->mft_no, err);
3282 lck_rw_unlock_exclusive(&ni->lock);
3296 (unsigned long long)ni->mft_no);
3317 err = ntfs_attr_extend_allocation(ni, end, -1, ofs, NULL,
3333 (unsigned long long)ni->mft_no);
3344 lck_spin_lock(&ni->size_lock);
3345 size = ni->allocated_size;
3346 lck_spin_unlock(&ni->size_lock);
3354 (unsigned long long)ni->mft_no,
3365 ntfs_error(ni->vol->mp, "Cannot perform write "
3369 (unsigned long long)ni->mft_no,
3382 lck_spin_lock(&ni->size_lock);
3383 size = ni->initialized_size;
3384 lck_spin_unlock(&ni->size_lock);
3388 err = ntfs_attr_extend_initialized(ni, ofs);
3390 ntfs_error(ni->vol->mp, "Cannot perform write to "
3393 (unsigned long long)ni->mft_no, err);
3398 if (NInoNonResident(ni)) {
3401 if (NInoCompressed(ni) && !NInoRaw(ni)) {
3403 err = ntfs_vnop_write_compressed(ni, uio, size,
3409 ntfs_error(ni->vol->mp, "Failed ("
3418 panic("%s(): NInoCompressed(ni) && !NInoRaw(ni)\n",
3422 if (NInoEncrypted(ni)) {
3429 panic("%s(): NInoEncrypted(ni)\n", __FUNCTION__);
3446 ntfs_error(ni->vol->mp, "Failed (cluster_write_ext(), "
3466 ntfs_warning(ni->vol->mp, "Unexpected count (0x%llx) > "
3481 ntfs_error(ni->vol->mp, "cluster_copy_ubc_data() failed "
3499 ntfs_warning(ni->vol->mp, "Unexpected partial transfer to "
3518 err = ntfs_page_map_ext(ni, 0, &upl, &pl, &kaddr, need_uptodate, TRUE);
3520 ntfs_error(ni->vol->mp, "Failed to map page (error %d).", err);
3533 ntfs_page_unmap(ni, upl, pl, FALSE);
3535 ntfs_page_dump(ni, upl, pl);
3540 ntfs_error(ni->vol->mp, "uiomove() failed (error %d).", err);
3563 ntfs_page_unmap(ni, upl, pl, TRUE);
3574 lck_spin_lock(&ni->size_lock);
3575 if (size > ni->initialized_size) {
3576 lck_spin_unlock(&ni->size_lock);
3579 err = ntfs_attr_set_initialized_size(ni, size);
3581 ntfs_error(ni->vol->mp, "Failed to update the "
3584 (unsigned long long)ni->mft_no, err);
3591 lck_spin_lock(&ni->size_lock);
3592 size = ni->initialized_size;
3593 lck_spin_unlock(&ni->size_lock);
3607 lck_spin_unlock(&ni->size_lock);
3618 if (ni == base_ni)
3627 if (ni->vol->major_ver >= 2) {
3628 if (ni->mft_no <= FILE_Extend)
3631 if (ni->mft_no <= FILE_UpCase)
3701 err2 = ntfs_attr_resize(ni, truncate_size, rflags, NULL);
3719 lck_spin_lock(&ni->size_lock);
3720 if (truncate_size == ni->data_size)
3722 lck_spin_unlock(&ni->size_lock);
3724 ntfs_error(ni->vol->mp, "Truncate failed (error %d).%s",
3729 NVolSetErrors(ni->vol);
3735 lck_rw_unlock_shared(&ni->lock);
3737 lck_rw_unlock_exclusive(&ni->lock);
3752 err = ntfs_inode_sync(ni, ioflags, FALSE);
3802 ntfs_inode *ni = NTFS_I(vn);
3804 if (!ni) {
3814 if (vnode_issystem(vn) || NInoMstProtected(ni) ||
3815 (!S_ISREG(ni->mode) && !(NInoAttr(ni) &&
3816 ni->type == AT_DATA))) {
3817 if (S_ISDIR(ni->mode))
3821 return (int)ntfs_write(ni, a->a_uio, a->a_ioflag, FALSE);
3915 ntfs_inode *ni = NTFS_I(a->a_vp);
3917 if (ni)
3920 (unsigned long long)ni->mft_no,
3921 le32_to_cpu(ni->type), (unsigned)ni->name_len,
3952 ntfs_inode *ni = NTFS_I(a->a_vp);
3954 if (ni)
3956 "0x%x.", (unsigned long long)ni->mft_no,
3957 le32_to_cpu(ni->type), (unsigned)ni->name_len);
3984 ntfs_inode *ni = NTFS_I(vn);
3987 if (!ni) {
3992 if (NVolReadOnly(ni->vol))
3996 (unsigned long long)ni->mft_no, a->a_waitfor,
4002 err = ntfs_inode_sync(ni, sync, FALSE);
4012 * @ni: base ntfs inode to unlink
4018 * Unlink an inode with the ntfs inode @ni and name @name with length @name_len
4023 * link count of the inode to unlink @ni will be one higher than the link count
4043 static errno_t ntfs_unlink_internal(ntfs_inode *dir_ni, ntfs_inode *ni,
4061 vol = ni->vol;
4064 "name type 0x%x.", (unsigned long long)ni->mft_no,
4067 if (NInoAttr(ni))
4071 cache_purge(ni->vn);
4110 err = ntfs_mft_record_map(ni, &m);
4113 "%d).", (unsigned long long)ni->mft_no, err);
4120 if ((!is_rename && ni->link_count != le16_to_cpu(m->link_count)) ||
4121 (is_rename && ni->link_count !=
4123 panic("%s(): ni->link_count != le16_to_cpu(m->link_count)\n",
4125 actx = ntfs_attr_search_ctx_get(ni, m);
4173 if (objid_o_ni && ni->link_count <= 1) {
4181 (unsigned long long)ni->mft_no,
4192 (unsigned long long)ni->mft_no);
4200 (unsigned long long)ni->mft_no);
4213 ntfs_mft_record_unmap(ni);
4245 ni->mft_no);
4258 ni->mft_no, err);
4276 (unsigned long long)ni->mft_no,
4291 err = ntfs_mft_record_map(ni, &m);
4297 (unsigned long long)ni->mft_no,
4302 actx = ntfs_attr_search_ctx_get(ni, m);
4309 (unsigned long long)ni->mft_no,
4323 (unsigned long long)ni->mft_no,
4325 NVolSetErrors(ni->vol);
4333 err = ntfs_attr_record_delete(ni, actx);
4339 (unsigned long long)ni->mft_no,
4366 (unsigned long long)ni->mft_no);
4373 (unsigned long long)ni->mft_no, err);
4402 NInoSetMrecNeedsDirtying(actx->ni);
4484 ntfs_mft_record_unmap(ni);
4493 err = ntfs_dir_entry_delete(dir_ni, ni, tfn, tfn_alloc);
4510 err = ntfs_mft_record_map(ni, &m);
4514 "Run chkdsk.", (unsigned long long)ni->mft_no,
4519 actx = ntfs_attr_search_ctx_get(ni, m);
4524 (unsigned long long)ni->mft_no, err);
4534 if (fn_type == FILENAME_DOS || ni->link_count > 1) {
4544 (unsigned long long)ni->mft_no, err);
4558 err = ntfs_attr_record_delete(ni, actx);
4562 "%d).", (unsigned long long)ni->mft_no,
4573 m->link_count = cpu_to_le16(ni->link_count - 1 -
4575 } else /* if (fn_type != FILENAME_DOS && ni->link_count <= 1) */ {
4587 NInoSetMrecNeedsDirtying(ni);
4596 ni->link_count--;
4597 ni->last_mft_change_time = dir_ni->last_mft_change_time;
4598 NInoSetDirtyTimes(ni);
4624 if (ni->link_count > 0 && !is_rename)
4625 vnode_update_identity(ni->vn, NULL, NULL, 0, 0,
4631 ntfs_mft_record_unmap(ni);
4645 * @ni: base ntfs inode to unlink
4650 * Unlink an inode with the ntfs inode @ni and name as specified in @cn from
4679 static errno_t ntfs_unlink(ntfs_inode *dir_ni, ntfs_inode *ni,
4693 vol = ni->vol;
4698 cn->cn_nameptr, (unsigned long long)ni->mft_no,
4704 if (NInoAttr(ni)) {
4707 cn->cn_nameptr, (unsigned long long)ni->mft_no,
4708 NInoAttr(ni) ? "n attribute" : " raw");
4719 if (ni == dir_ni) {
4723 (unsigned long long)ni->mft_no);
4728 lck_rw_lock_exclusive(&ni->lock);
4743 if (!ni->link_count) {
4746 cn->cn_nameptr, (unsigned long long)ni->mft_no);
4751 cache_purge(ni->vn);
4765 err = ntfs_dir_is_empty(ni);
4773 (unsigned long long)ni->mft_no);
4781 (unsigned long long)ni->mft_no,
4787 if (S_ISDIR(ni->mode)) {
4791 (unsigned long long)ni->mft_no);
4816 if (ni->file_attributes & FILE_ATTR_SYSTEM) {
4819 if (ni->mft_no < FILE_Extend)
4822 if (ni->mft_no <= FILE_Extend)
4825 if (ni == vol->objid_ni ||
4826 ni == vol->quota_ni)
4834 (unsigned long long)ni->mft_no,
4845 if (!S_ISDIR(ni->mode) && ni->file_attributes & FILE_ATTR_READONLY) {
4849 (unsigned long long)ni->mft_no);
4857 if (ni->file_attributes & (FILE_ATTR_REPARSE_POINT |
4863 (unsigned long long)ni->mft_no,
4864 ni->file_attributes & FILE_ATTR_REPARSE_POINT ?
4876 if (flags & VNODE_REMOVE_NODELETEBUSY && ni->nr_opens) {
4881 (unsigned long long)ni->mft_no,
4882 (unsigned)ni->nr_opens);
4925 (unsigned long long)ni->mft_no);
4930 cache_purge(ni->vn);
4940 if (mref != MK_MREF(ni->mft_no, ni->seq_no))
4963 err = ntfs_unlink_internal(dir_ni, ni, ntfs_name, ntfs_name_len,
4969 (unsigned long long)ni->mft_no,
4976 lck_rw_unlock_exclusive(&ni->lock);
5020 ntfs_inode *ni = NTFS_I(a->a_vp);
5023 if (!dir_ni || !ni) {
5036 * @ni: base ntfs inode to create hard link to
5043 * Create a hard link to the ntfs inode @ni with name as specified in @cn in
5058 static errno_t ntfs_link_internal(ntfs_inode *ni, ntfs_inode *dir_ni,
5073 vol = ni->vol;
5076 (unsigned long long)ni->mft_no, (int)cn->cn_namelen,
5078 if (NInoAttr(ni))
5081 is_dir = S_ISDIR(ni->mode);
5134 fn->creation_time = utc2ntfs(ni->creation_time);
5135 fn->last_data_change_time = utc2ntfs(ni->last_data_change_time);
5136 fn->last_mft_change_time = utc2ntfs(ni->last_mft_change_time);
5137 fn->last_access_time = utc2ntfs(ni->last_access_time);
5139 lck_spin_lock(&ni->size_lock);
5140 fn->allocated_size = cpu_to_sle64(NInoNonResident(ni) &&
5141 (NInoSparse(ni) || NInoCompressed(ni)) ?
5142 ni->compressed_size : ni->allocated_size);
5143 fn->data_size = cpu_to_sle64(ni->data_size);
5144 lck_spin_unlock(&ni->size_lock);
5156 fn->file_attributes = ni->file_attributes;
5157 if (!is_dir || NInoEncrypted(ni)) {
5160 if (ni->mft_no <= FILE_Extend)
5163 if (ni->mft_no <= FILE_UpCase)
5167 ni->file_attributes |= FILE_ATTR_ARCHIVE;
5168 fn->file_attributes = ni->file_attributes;
5169 NInoSetDirtyFileAttributes(ni);
5176 * attribute which is why it is not set in @ni->file_attributes.
5191 if (ni->ea_length) {
5192 fn->ea_length = cpu_to_le16(ni->ea_length);
5194 } else if (ni->file_attributes & FILE_ATTR_REPARSE_POINT) {
5210 * We know @ni is the base inode since we bailed out for attribute
5214 MK_LE_MREF(ni->mft_no, ni->seq_no));
5226 * Again, we know @ni is the base inode.
5228 err = ntfs_mft_record_map(ni, &m);
5231 "%d).", (unsigned long long)ni->mft_no, err);
5234 ctx = ntfs_attr_search_ctx_get(ni, m);
5250 (unsigned long long)ni->mft_no, err);
5257 if (ni != ctx->ni)
5258 panic("%s(): ni != ctx->ni\n", __FUNCTION__);
5269 err = ntfs_resident_attr_record_insert(ni, ctx, AT_FILENAME, NULL, 0,
5275 (unsigned long long)ni->mft_no, err);
5283 ni->link_count++;
5284 m->link_count = cpu_to_le16(ni->link_count - (is_rename ? 1 : 0));
5290 ni->last_mft_change_time = dir_ni->last_mft_change_time;
5291 NInoSetDirtyTimes(ni);
5328 vnode_update_identity(ni->vn, dir_ni->vn, cn->cn_nameptr,
5331 cache_enter(dir_ni->vn, ni->vn, cn);
5339 * ntfs_inode @ni and its mft record @m.
5348 NInoSetMrecNeedsDirtying(ni);
5351 ntfs_mft_record_unmap(ni);
5359 ntfs_mft_record_unmap(ni);
5362 if (ni->ea_length) {
5363 fn->ea_length = cpu_to_le16(ni->ea_length);
5365 } else if (ni->file_attributes & FILE_ATTR_REPARSE_POINT) {
5378 err2 = ntfs_dir_entry_delete(dir_ni, ni, fn, fn_size);
5415 ntfs_inode *ni, *dir_ni;
5420 ni = NTFS_I(a->a_vp);
5421 vol = ni->vol;
5423 if (!dir_ni || !ni) {
5430 (unsigned long long)ni->mft_no, (int)cn->cn_namelen,
5433 if (NInoAttr(ni)) {
5435 (unsigned long long)ni->mft_no,
5436 NInoRaw(ni) ? " raw" : "n attribute");
5449 if (S_ISDIR(ni->mode)) {
5453 "EPERM.", (unsigned long long)ni->mft_no,
5458 lck_rw_lock_exclusive(&ni->lock);
5479 if (!ni->link_count) {
5482 cn->cn_nameptr, (unsigned long long)ni->mft_no);
5487 cache_purge(ni->vn);
5495 if (S_ISDIR(ni->mode)) {
5498 "EPERM.", (unsigned long long)ni->mft_no,
5515 if (ni->file_attributes & FILE_ATTR_SYSTEM) {
5518 if (ni->mft_no < FILE_Extend)
5521 if (ni->mft_no <= FILE_Extend)
5523 if (ni == vol->objid_ni || ni == vol->quota_ni ||
5524 ni == vol->usnjrnl_ni)
5530 (unsigned long long)ni->mft_no,
5531 (ni->mft_no > FILE_Extend) ?
5539 * that @ni is not a directory).
5541 if (ni->file_attributes & FILE_ATTR_READONLY) {
5543 "EPERM.", (unsigned long long)ni->mft_no);
5557 if (ni->file_attributes & (FILE_ATTR_REPARSE_POINT |
5561 (unsigned long long)ni->mft_no,
5562 (ni->file_attributes &
5569 if (ni->link_count >= NTFS_MAX_HARD_LINKS) {
5572 (unsigned long long)ni->mft_no);
5577 err = ntfs_link_internal(ni, dir_ni, cn, FALSE, NULL, 0);
5583 (unsigned long long)ni->mft_no,
5591 (unsigned long long)ni->mft_no,
5598 lck_rw_unlock_exclusive(&ni->lock);
6504 ntfs_inode *ni = NTFS_I(a->a_dvp);
6506 if (ni)
6510 (unsigned long long)ni->mft_no);
6549 ntfs_inode *ni = NTFS_I(a->a_vp);
6553 if (!dir_ni || !ni) {
6557 err = ntfs_unlink(dir_ni, ni, a->a_cnp, 0, TRUE);
6595 ntfs_inode *dir_ni, *ni, *raw_ni;
6642 /* Note the ntfs inode @ni is locked for writing. */
6643 ni = NTFS_I(*a->a_vpp);
6645 if (NInoDeleted(ni)) {
6647 cache_purge(ni->vn);
6649 lck_rw_unlock_exclusive(&ni->lock);
6650 vnode_put(ni->vn);
6675 err = ntfs_raw_inode_get(ni, LCK_RW_TYPE_EXCLUSIVE, &raw_ni);
6677 ntfs_error(ni->vol->mp, "Failed to get raw inode (error %d).",
6697 lck_spin_lock(&ni->size_lock);
6698 ni->initialized_size = raw_ni->initialized_size;
6699 ni->data_size = raw_ni->data_size;
6700 ni->allocated_size = raw_ni->allocated_size;
6701 ni->compressed_size = raw_ni->compressed_size;
6702 lck_spin_unlock(&ni->size_lock);
6704 NInoSetNonResident(ni);
6713 lck_rw_unlock_exclusive(&ni->lock);
6721 lck_rw_unlock_exclusive(&ni->lock);
6722 err2 = ntfs_unlink(dir_ni, ni, a->a_cnp, 0, FALSE);
6729 vnode_put(ni->vn);
6898 ntfs_inode *ni, *raw_ni;
6902 ni = NTFS_I(a->a_vp);
6903 if (!ni) {
6908 (unsigned long long)ni->mft_no);
6913 lck_rw_lock_shared(&ni->lock);
6915 if (!ni->link_count || NInoDeleted(ni)) {
6917 cache_purge(ni->vn);
6921 if (!S_ISLNK(ni->mode)) {
6927 ntfs_error(ni->vol->mp, "uio_offset(uio) is not zero, "
6944 lck_spin_lock(&ni->size_lock);
6945 size = ni->data_size;
6946 lck_spin_unlock(&ni->size_lock);
6949 ntfs_error(ni->vol->mp, "Invalid symbolic link size %lld in "
6952 (unsigned long long)ni->mft_no);
6957 err = ntfs_raw_inode_get(ni, LCK_RW_TYPE_SHARED, &raw_ni);
6959 ntfs_error(ni->vol->mp, "Failed to get raw inode (error %d).",
6997 ntfs_error(ni->vol->mp, "Failed to read symbolic link "
7002 lck_rw_unlock_shared(&ni->lock);
7008 * @base_ni: base ntfs inode to which the (extent) inode @ni and @m belong
7009 * @ni: ntfs inode for which to free all clusters
7012 * For the ntfs inode @ni and its mft record @m, iterate over all attributes in
7014 * is the base ntfs inode to which @ni and @m belong.
7025 static void ntfs_mft_record_free_all(ntfs_inode *base_ni, ntfs_inode *ni,
7045 (unsigned long long)ni->mft_no);
7165 (unsigned long long)ni->mft_no,
7176 (unsigned long long)ni->mft_no, err);
7191 ni->seq_no = le16_to_cpu(m->sequence_number);
7192 NInoSetMrecNeedsDirtying(ni);
7218 ntfs_inode *base_ni, *mftbmp_ni, *ni = NTFS_I(vn);
7226 if (!ni) {
7230 is_delete = !ni->link_count;
7231 vol = ni->vol;
7233 (unsigned long long)ni->mft_no,
7234 (unsigned)le32_to_cpu(ni->type), (unsigned)ni->name_len,
7236 base_ni = ni;
7237 if (NInoAttr(ni))
7238 base_ni = ni->base_ni;
7247 if (ni != base_ni && ni->type == AT_INDEX_ALLOCATION &&
7248 ni->nr_dirhints) {
7249 lck_rw_lock_exclusive(&ni->lock);
7250 ntfs_dirhints_put(ni, 0);
7251 lck_rw_unlock_exclusive(&ni->lock);
7257 if (!is_delete || NInoRaw(ni)) {
7272 err = ntfs_inode_sync(ni, IO_SYNC | IO_CLOSE, FALSE);
7278 (unsigned long long)ni->mft_no,
7279 (unsigned)le32_to_cpu(ni->type),
7280 (unsigned)ni->name_len, err);
7283 if (ni != base_ni)
7285 lck_rw_lock_exclusive(&ni->lock);
7287 if (NInoDeleted(ni)) {
7290 lck_rw_unlock_exclusive(&ni->lock);
7291 if (ni != base_ni)
7300 if (ni->link_count) {
7301 lck_rw_unlock_exclusive(&ni->lock);
7302 if (ni != base_ni)
7316 * since there are no directory entries pointing to the inode @ni any
7329 NInoSetDeleted(ni);
7334 ntfs_inode_hash_rm_nolock(ni);
7343 lck_rw_unlock_exclusive(&ni->lock);
7345 ntfs_inode_wakeup(ni);
7378 if (ni != base_ni) {
7381 if (ni->type != AT_DATA || !ni->name_len)
7382 panic("%s(): ni != base_ni && (ni->type != AT_DATA || "
7383 "!ni->name_len)\n", __FUNCTION__);
7393 if (NInoNonResident(ni)) {
7394 err = ntfs_attr_resize(ni, 0, 0, NULL);
7401 (unsigned long long)ni->mft_no,
7412 (unsigned long long)ni->mft_no, err);
7422 err = ntfs_attr_lookup(ni->type, ni->name, ni->name_len, 0,
7429 (unsigned long long)ni->mft_no, err);
7438 (unsigned long long)ctx->ni->mft_no,
7458 err = ntfs_mft_record_map(ni, &m);
7464 (unsigned long long)ni->mft_no, err);
7478 mref = MK_LE_MREF(ni->mft_no, ni->seq_no);
7483 ntfs_mft_record_free_all(ni, ni, m);
7506 if (NInoAttrList(ni)) {
7510 if (!ni->attr_list || ni->attr_list_size < sizeof(leMFT_REF) ||
7511 !ni->attr_list_alloc)
7512 panic("%s(): !ni->attr_list || !ni->attr_list_size || "
7513 "!ni->attr_list_alloc\n", __FUNCTION__);
7514 entry = (ATTR_LIST_ENTRY*)ni->attr_list;
7518 end = (ATTR_LIST_ENTRY*)(ni->attr_list + ni->attr_list_size);
7540 err = ntfs_extent_mft_record_map(ni, le64_to_cpu(mref),
7554 ntfs_mft_record_free_all(ni, eni, m);
7568 ni->mft_no);
7582 (unsigned long long)ni->mft_no,
7592 ntfs_mft_record_unmap(ni);
7669 ntfs_inode *ni = NTFS_I(vn);
7672 /* Do not dereference @ni if it is NULL. */
7674 if (ni)
7676 "0x%x.", (unsigned long long)ni->mft_no,
7677 le32_to_cpu(ni->type), (unsigned)ni->name_len);
7682 err = ntfs_inode_reclaim(ni);
7706 ntfs_inode *ni = NTFS_I(a->a_vp);
7711 if (ni) {
7712 lck_rw_lock_shared(&ni->lock);
7717 if (NInoDeleted(ni)) {
7719 cache_purge(ni->vn);
7720 lck_rw_unlock_shared(&ni->lock);
7734 if (!ni) {
7739 if (NInoAttr(ni) || S_ISDIR(ni->mode))
7815 if (ni)
7816 lck_rw_unlock_shared(&ni->lock);
7886 ntfs_inode *base_ni, *ni = NTFS_I(a->a_vp);
7889 if (!ni) {
7897 base_ni = ni;
7898 if (NInoAttr(ni))
7899 base_ni = ni->base_ni;
7902 (unsigned long long)ni->mft_no,
7906 err = ntfs_pagein(ni, a->a_f_offset, a->a_size, a->a_pl,
7918 if (!err && !NVolReadOnly(ni->vol) &&
7919 !(vfs_flags(ni->vol->mp) & MNT_NOATIME) &&
7921 (ni == base_ni || ni->type == AT_DATA)) {
7925 if (ni->vol->major_ver > 1) {
7927 base_ni != ni->vol->root_ni)
7931 base_ni != ni->vol->root_ni)
7943 static int ntfs_mst_pageout(ntfs_inode *ni, upl_t upl, upl_offset_t upl_ofs,
7946 ntfs_volume *vol = ni->vol;
7955 if (ni->type == AT_INDEX_ALLOCATION)
7960 (unsigned long long)ni->mft_no,
7961 (unsigned)le32_to_cpu(ni->type),
7962 (unsigned)ni->name_len);
7965 "0x%x.", (unsigned long long)ni->mft_no,
7974 if (!NInoMstProtected(ni))
7977 if (!NInoNonResident(ni))
7980 rec_size = ni->block_size;
7984 rec_shift = ni->block_size_shift;
8033 (unsigned long long)ni->mft_no,
8034 (unsigned)le32_to_cpu(ni->type),
8064 err = cluster_pageout_ext(ni->vn, upl, upl_ofs, attr_ofs, size,
8125 * lock (@ni->lock). Alternatively cluster_io() can be called from
8168 ntfs_inode *base_ni, *ni = NTFS_I(a->a_vp);
8179 if (!ni) {
8186 vol = ni->vol;
8188 base_ni = ni;
8189 if (NInoAttr(ni))
8190 base_ni = ni->base_ni;
8193 (unsigned long long)ni->mft_no,
8206 if (S_ISDIR(ni->mode)) {
8223 if (NInoSparse(ni) && (u64)attr_ofs + size > NTFS_MAX_ATTRIBUTE_SIZE) {
8228 if (NInoSparse(ni)) {
8243 * ntfs inode lock @ni->lock for exclusive access on the index vnode of
8266 if (NInoSparse(ni))
8268 if (!lck_rw_try_lock(&ni->lock, lock_type)) {
8269 ntfs_debug("Failed to take ni->lock for %s for mft_no "
8274 (unsigned long long)ni->mft_no,
8275 (unsigned)le32_to_cpu(ni->type));
8283 if (NInoSparse(ni))
8285 "NINoSparse(ni), need inode lock "
8291 if (NInoDeleted(ni)) {
8293 cache_purge(ni->vn);
8304 lck_spin_lock(&ni->size_lock);
8306 if (attr_size > ni->data_size)
8307 attr_size = ni->data_size;
8315 lck_spin_unlock(&ni->size_lock);
8337 if (attr_ofs + size > ni->initialized_size && ni->initialized_size !=
8338 ni->data_size) {
8339 lck_spin_unlock(&ni->size_lock);
8345 alloc_size = ni->allocated_size;
8346 lck_spin_unlock(&ni->size_lock);
8356 if (NInoSparse(ni) && NInoNonResident(ni) && ni->type == AT_DATA) {
8368 err = ntfs_attr_instantiate_holes(ni,
8375 (unsigned long long)ni->mft_no, err);
8389 if (ni->type != AT_INDEX_ALLOCATION) {
8391 if (NInoEncrypted(ni)) {
8392 if (ni->type != AT_DATA)
8401 if (NInoNonResident(ni) && NInoCompressed(ni) && !NInoRaw(ni)) {
8402 if (ni->type != AT_DATA)
8409 if (NInoNonResident(ni)) {
8410 if (NInoMstProtected(ni))
8411 err = ntfs_mst_pageout(ni, upl, upl_ofs, size,
8453 if (!NInoNonResident(ni)) {
8458 err = ntfs_resident_attr_write(ni, kaddr + upl_ofs, to_write,
8465 } else if (NInoCompressed(ni)) {
8478 err = ntfs_raw_inode_get(ni, LCK_RW_TYPE_EXCLUSIVE, &raw_ni);
8487 if (vnode_isnocache(ni->vn) ||
8490 if (vnode_isnoreadahead(ni->vn) ||
8493 err = ntfs_write_compressed(ni, raw_ni, attr_ofs, size,
8530 ntfs_debug("Done (%s).", !NInoNonResident(ni) ?
8600 lck_rw_unlock_shared(&ni->lock);
8602 lck_rw_unlock_exclusive(&ni->lock);
8671 ntfs_inode *ani, *ni = NTFS_I(a->a_vp);
8681 if (!ni) {
8685 vol = ni->vol;
8693 (unsigned long long)ni->mft_no, name, start_ofs,
8695 lck_rw_lock_shared(&ni->lock);
8697 if (NInoDeleted(ni)) {
8699 cache_purge(ni->vn);
8701 (unsigned long long)ni->mft_no);
8713 if (NInoAttr(ni)) {
8715 (unsigned long long)ni->mft_no);
8721 * special because we cache it in the base ntfs inode @ni and we only
8744 if (!NInoValidFinderInfo(ni)) {
8745 if (!lck_rw_lock_shared_to_exclusive(&ni->lock)) {
8746 lck_rw_lock_exclusive(&ni->lock);
8747 if (NInoDeleted(ni)) {
8748 cache_purge(ni->vn);
8749 lck_rw_unlock_exclusive(&ni->lock);
8752 ni->mft_no);
8761 err = ntfs_inode_afpinfo_read(ni);
8765 (unsigned long long)ni->mft_no,
8767 lck_rw_unlock_exclusive(&ni->lock);
8770 lck_rw_lock_exclusive_to_shared(&ni->lock);
8771 if (!NInoValidFinderInfo(ni))
8772 panic("%s(): !NInoValidFinderInfo(ni)\n",
8780 memcpy(&fi, &ni->finder_info, sizeof(fi));
8781 if (ni == vol->root_ni)
8783 if (S_ISLNK(ni->mode)) {
8789 sizeof(ni->finder_info))) {
8792 (unsigned long long)ni->mft_no);
8869 err = ntfs_attr_inode_get(ni, AT_DATA, ntfs_name, ntfs_name_len, FALSE,
8877 (unsigned long long)ni->mft_no, err);
8884 * appropriate simply using ubc_getsize(ni->vn); without the size_lock.
8938 lck_rw_unlock_shared(&ni->lock);
9003 ntfs_inode *ani, *ni = NTFS_I(a->a_vp);
9014 if (!ni) {
9018 vol = ni->vol;
9026 (unsigned long long)ni->mft_no, name, start_ofs,
9032 lck_rw_lock_exclusive(&ni->lock);
9034 if (NInoDeleted(ni)) {
9036 cache_purge(ni->vn);
9038 (unsigned long long)ni->mft_no);
9050 if (NInoAttr(ni)) {
9052 (unsigned long long)ni->mft_no);
9069 * special because we cache it in the base ntfs inode @ni thus we need
9087 if (start_count != sizeof(ni->finder_info)) {
9092 sizeof(ni->finder_info));
9102 if (!NInoValidFinderInfo(ni)) {
9108 err = ntfs_inode_afpinfo_read(ni);
9114 ni->mft_no, err);
9117 if (!NInoValidFinderInfo(ni))
9118 panic("%s(): !NInoValidFinderInfo(ni)"
9126 memcpy(&fi, &ni->finder_info, sizeof(fi));
9127 if (ni == vol->root_ni)
9129 if (S_ISLNK(ni->mode)) {
9133 if (bcmp(&ni->finder_info, &ntfs_empty_finder_info,
9134 sizeof(ni->finder_info))) {
9146 ni->mft_no);
9162 ni->mft_no);
9177 if (ni == vol->root_ni)
9179 if (S_ISLNK(ni->mode)) {
9183 memcpy((u8*)&ni->finder_info, (u8*)&fi, sizeof(fi));
9184 NInoSetValidFinderInfo(ni);
9185 NInoSetDirtyFinderInfo(ni);
9194 !(ni->file_attributes &
9196 ni->file_attributes |= FILE_ATTR_HIDDEN;
9197 NInoSetDirtyFileAttributes(ni);
9204 ni->last_mft_change_time = ni->last_data_change_time =
9206 NInoSetDirtyTimes(ni);
9211 err = ntfs_inode_afpinfo_write(ni);
9216 (unsigned long long)ni->mft_no,
9284 err = ntfs_attr_inode_get_or_create(ni, AT_DATA, ntfs_name,
9294 (unsigned long long)ni->mft_no, err);
9301 * appropriate simply using ubc_getsize(ni->vn); without the size_lock.
9393 ni->last_mft_change_time = ntfs_utc_current_time();
9394 NInoSetDirtyTimes(ni);
9400 if (!S_ISDIR(ni->mode) || NInoEncrypted(ni)) {
9402 if (ni->vol->major_ver >= 2) {
9403 if (ni->mft_no <= FILE_Extend)
9406 if (ni->mft_no <= FILE_UpCase)
9410 ni->file_attributes |=
9412 NInoSetDirtyFileAttributes(ni);
9420 lck_rw_unlock_exclusive(&ni->lock);
9451 ntfs_inode *ani, *ni = NTFS_I(a->a_vp);
9460 if (!ni) {
9464 vol = ni->vol;
9469 "options 0x%x.", (unsigned long long)ni->mft_no, name,
9475 lck_rw_lock_exclusive(&ni->lock);
9477 if (NInoDeleted(ni)) {
9479 cache_purge(ni->vn);
9481 (unsigned long long)ni->mft_no);
9493 if (NInoAttr(ni)) {
9495 (unsigned long long)ni->mft_no);
9501 * special because we cache it in the base ntfs inode @ni thus we need
9516 if (!NInoValidFinderInfo(ni)) {
9522 err = ntfs_inode_afpinfo_read(ni);
9526 (unsigned long long)ni->mft_no,
9530 if (!NInoValidFinderInfo(ni))
9531 panic("%s(): !NInoValidFinderInfo(ni)\n",
9539 memcpy(&fi, &ni->finder_info, sizeof(fi));
9540 if (ni == vol->root_ni)
9542 if (S_ISLNK(ni->mode)) {
9550 (unsigned long long)ni->mft_no);
9555 bzero(&ni->finder_info, sizeof(ni->finder_info));
9560 if (ni->file_attributes & FILE_ATTR_HIDDEN)
9561 ni->finder_info.attrs |= FINDER_ATTR_IS_HIDDEN;
9569 if (S_ISLNK(ni->mode)) {
9570 ni->finder_info.type = FINDER_TYPE_SYMBOLIC_LINK;
9571 ni->finder_info.creator = FINDER_CREATOR_SYMBOLIC_LINK;
9573 NInoSetValidFinderInfo(ni);
9574 NInoSetDirtyFinderInfo(ni);
9580 ni->last_mft_change_time = ni->last_data_change_time =
9582 NInoSetDirtyTimes(ni);
9584 err = ntfs_inode_afpinfo_write(ni);
9587 (unsigned long long)ni->mft_no);
9592 (unsigned long long)ni->mft_no, err);
9636 (unsigned long long)ni->mft_no);
9647 err = ntfs_attr_inode_get(ni, AT_DATA, ntfs_name, ntfs_name_len, FALSE,
9655 name, (unsigned long long)ni->mft_no,
9668 ni->last_mft_change_time = ntfs_utc_current_time();
9669 NInoSetDirtyTimes(ni);
9674 if (!S_ISDIR(ni->mode) || NInoEncrypted(ni)) {
9676 if (ni->vol->major_ver >= 2) {
9677 if (ni->mft_no <= FILE_Extend)
9680 if (ni->mft_no <= FILE_UpCase)
9684 ni->file_attributes |= FILE_ATTR_ARCHIVE;
9685 NInoSetDirtyFileAttributes(ni);
9692 lck_rw_unlock_exclusive(&ni->lock);
9732 ntfs_inode *ni = NTFS_I(args->a_vp);
9745 if (!ni) {
9749 vol = ni->vol;
9754 lck_rw_lock_shared(&ni->lock);
9756 if (NInoDeleted(ni)) {
9758 cache_purge(ni->vn);
9760 (unsigned long long)ni->mft_no);
9772 if (NInoAttr(ni)) {
9774 (unsigned long long)ni->mft_no);
9781 * cache it in the base ntfs inode @ni and we only want to export the
9796 if (!NInoValidFinderInfo(ni)) {
9797 if (!lck_rw_lock_shared_to_exclusive(&ni->lock)) {
9798 lck_rw_lock_exclusive(&ni->lock);
9799 if (NInoDeleted(ni)) {
9800 cache_purge(ni->vn);
9801 lck_rw_unlock_exclusive(&ni->lock);
9803 (unsigned long long)ni->mft_no);
9811 err = ntfs_inode_afpinfo_read(ni);
9815 (unsigned long long)ni->mft_no, err);
9816 lck_rw_unlock_exclusive(&ni->lock);
9819 if (!NInoValidFinderInfo(ni))
9820 panic("%s(): !NInoValidFinderInfo(ni)\n", __FUNCTION__);
9821 lck_rw_lock_exclusive_to_shared(&ni->lock);
9828 memcpy(&fi, &ni->finder_info, sizeof(fi));
9829 if (ni == vol->root_ni)
9831 if (S_ISLNK(ni->mode)) {
9855 err = ntfs_mft_record_map(ni, &m);
9861 ctx = ntfs_attr_search_ctx_get(ni, m);
9919 err = ntfs_attr_inode_lookup(ni, a->type, name, name_len,
10000 (unsigned long long)ni->mft_no,
10056 ntfs_mft_record_unmap(ni);
10058 lck_rw_unlock_shared(&ni->lock);
10079 ntfs_inode *ni;
10087 ni = NTFS_I(a->a_vp);
10088 if (!ni) {
10092 if (S_ISDIR(ni->mode)) {
10093 ntfs_error(ni->vol->mp, "Called for directory vnode.");
10098 (unsigned long long)ni->mft_no, le32_to_cpu(ni->type),
10099 (unsigned)ni->name_len);
10100 vol = ni->vol;
10105 * also in @ni->block_size{,_shift}.
10107 if (ni == vol->mft_ni || ni == vol->mftmirr_ni)
10108 block_size_shift = ni->block_size_shift;
10132 ntfs_inode *ni;
10140 ni = NTFS_I(a->a_vp);
10141 if (!ni) {
10145 if (S_ISDIR(ni->mode)) {
10146 ntfs_error(ni->vol->mp, "Called for directory vnode.");
10151 (unsigned long long)ni->mft_no, le32_to_cpu(ni->type),
10152 (unsigned)ni->name_len);
10153 vol = ni->vol;
10158 * also in @ni->block_size{,_shift}.
10160 if (ni == vol->mft_ni || ni == vol->mftmirr_ni)
10161 block_size_shift = ni->block_size_shift;
10245 ntfs_inode *ni = NTFS_I(a->a_vp);
10250 if (!ni) {
10254 vol = ni->vol;
10257 (unsigned long long)ni->mft_no,
10258 (unsigned)le32_to_cpu(ni->type),
10259 (unsigned)ni->name_len,
10264 if (S_ISDIR(ni->mode)) {
10283 if (NInoDeleted(ni)) {
10285 cache_purge(ni->vn);
10293 lck_spin_lock(&ni->size_lock);
10295 max_size = ni->allocated_size;
10297 max_size = ni->data_size;
10298 data_size = ni->data_size;
10299 init_size = ni->initialized_size;
10300 lck_spin_unlock(&ni->size_lock);
10307 (unsigned long long)ni->mft_no,
10320 "EINVAL.", (unsigned long long)ni->mft_no,
10349 if (!NInoNonResident(ni) || (ni->type != AT_INDEX_ALLOCATION &&
10350 (NInoCompressed(ni) || NInoEncrypted(ni)) &&
10351 !NInoRaw(ni))) {
10358 (unsigned long long)ni->mft_no);
10362 bytes = ni->block_size;
10369 (unsigned long long)ni->mft_no);
10382 lck_rw_lock_shared(&ni->rl.lock);
10383 lcn = ntfs_attr_vcn_to_lcn_nolock(ni, vcn, FALSE,
10389 lck_rw_unlock_shared(&ni->rl.lock);
10402 (unsigned long long)ni->mft_no);
10409 (unsigned long long)ni->mft_no);
10446 lck_rw_unlock_shared(&ni->rl.lock);
10465 lck_rw_unlock_shared(&ni->rl.lock);
10546 ntfs_inode *sni, *ni = NTFS_I(vn);
10552 if (!ni) {
10557 "(0x%x), flags 0x%x.", (unsigned long long)ni->mft_no,
10568 ntfs_warning(ni->vol->mp, "Unsupported named stream %s "
10576 if (!S_ISREG(ni->mode)) {
10577 ntfs_warning(ni->vol->mp, "The resource fork may only be "
10580 (unsigned long long)ni->mft_no);
10593 lck_rw_lock_exclusive(&ni->lock);
10596 lck_rw_lock_shared(&ni->lock);
10599 if (NInoDeleted(ni)) {
10603 lck_rw_unlock_exclusive(&ni->lock);
10605 lck_rw_unlock_shared(&ni->lock);
10607 (unsigned long long)ni->mft_no);
10610 err = ntfs_attr_inode_get_or_create(ni, AT_DATA,
10623 (unsigned long long)ni->mft_no);
10625 ntfs_error(ni->vol->mp, "Failed to get named stream "
10627 (unsigned long long)ni->mft_no, err);
10630 lck_rw_unlock_exclusive(&ni->lock);
10632 lck_rw_unlock_shared(&ni->lock);
10664 ntfs_inode *sni, *ni = NTFS_I(vn);
10668 if (!ni) {
10673 (unsigned long long)ni->mft_no, name, a->a_flags);
10680 ntfs_warning(ni->vol->mp, "Unsupported named stream %s "
10688 if (!S_ISREG(ni->mode)) {
10689 ntfs_warning(ni->vol->mp, "The resource fork may only be "
10692 (unsigned long long)ni->mft_no);
10695 lck_rw_lock_exclusive(&ni->lock);
10697 if (NInoDeleted(ni)) {
10700 lck_rw_unlock_exclusive(&ni->lock);
10702 (unsigned long long)ni->mft_no);
10716 err = ntfs_attr_inode_get_or_create(ni, AT_DATA,
10728 (unsigned long long)ni->mft_no);
10730 ntfs_error(ni->vol->mp, "Failed to create named "
10733 (unsigned long long)ni->mft_no, err);
10735 lck_rw_unlock_exclusive(&ni->lock);
10771 ntfs_inode *sni, *ni = NTFS_I(vn);
10776 if (!ni || !sni) {
10783 (unsigned long long)ni->mft_no,
10794 ntfs_warning(ni->vol->mp, "Unsupported named stream %s "
10802 if (!S_ISREG(ni->mode)) {
10803 ntfs_warning(ni->vol->mp, "The resource fork may only be "
10806 (unsigned long long)ni->mft_no);
10809 lck_rw_lock_exclusive(&ni->lock);
10811 if (NInoDeleted(ni)) {
10814 lck_rw_unlock_exclusive(&ni->lock);
10816 (unsigned long long)ni->mft_no);
10825 lck_rw_unlock_exclusive(&ni->lock);
10834 if (!NInoAttr(sni) || sni->base_ni != ni)
10835 panic("%s(): !NInoAttr(sni) || sni->base_ni != ni\n",
10850 ni->last_mft_change_time = ntfs_utc_current_time();
10851 NInoSetDirtyTimes(ni);
10857 if (!S_ISDIR(ni->mode) || NInoEncrypted(ni)) {
10859 if (ni->vol->major_ver >= 2) {
10860 if (ni->mft_no <= FILE_Extend)
10863 if (ni->mft_no <= FILE_UpCase)
10867 ni->file_attributes |= FILE_ATTR_ARCHIVE;
10868 NInoSetDirtyFileAttributes(ni);
10877 lck_rw_unlock_exclusive(&ni->lock);