Lines Matching refs:ni

47 static inline MFT_RECORD *map_mft_record_page(ntfs_inode *ni)  in map_mft_record_page()  argument
50 ntfs_volume *vol = ni->vol; in map_mft_record_page()
56 BUG_ON(ni->page); in map_mft_record_page()
63 index = (u64)ni->mft_no << vol->mft_record_size_bits >> in map_mft_record_page()
65 ofs = (ni->mft_no << vol->mft_record_size_bits) & ~PAGE_CACHE_MASK; in map_mft_record_page()
79 "driver.", ni->mft_no); in map_mft_record_page()
89 ni->page = page; in map_mft_record_page()
90 ni->page_ofs = ofs; in map_mft_record_page()
94 "Run chkdsk.", ni->mft_no); in map_mft_record_page()
100 ni->page = NULL; in map_mft_record_page()
101 ni->page_ofs = 0; in map_mft_record_page()
155 MFT_RECORD *map_mft_record(ntfs_inode *ni) in map_mft_record() argument
159 ntfs_debug("Entering for mft_no 0x%lx.", ni->mft_no); in map_mft_record()
162 atomic_inc(&ni->count); in map_mft_record()
165 mutex_lock(&ni->mrec_lock); in map_mft_record()
167 m = map_mft_record_page(ni); in map_mft_record()
171 mutex_unlock(&ni->mrec_lock); in map_mft_record()
172 atomic_dec(&ni->count); in map_mft_record()
173 ntfs_error(ni->vol->sb, "Failed with error code %lu.", -PTR_ERR(m)); in map_mft_record()
191 static inline void unmap_mft_record_page(ntfs_inode *ni) in unmap_mft_record_page() argument
193 BUG_ON(!ni->page); in unmap_mft_record_page()
196 ntfs_unmap_page(ni->page); in unmap_mft_record_page()
197 ni->page = NULL; in unmap_mft_record_page()
198 ni->page_ofs = 0; in unmap_mft_record_page()
213 void unmap_mft_record(ntfs_inode *ni) in unmap_mft_record() argument
215 struct page *page = ni->page; in unmap_mft_record()
219 ntfs_debug("Entering for mft_no 0x%lx.", ni->mft_no); in unmap_mft_record()
221 unmap_mft_record_page(ni); in unmap_mft_record()
222 mutex_unlock(&ni->mrec_lock); in unmap_mft_record()
223 atomic_dec(&ni->count); in unmap_mft_record()
250 ntfs_inode *ni = NULL; in map_extent_mft_record() local
272 ni = extent_nis[i]; in map_extent_mft_record()
274 atomic_inc(&ni->count); in map_extent_mft_record()
278 if (likely(ni != NULL)) { in map_extent_mft_record()
282 m = map_mft_record(ni); in map_extent_mft_record()
284 atomic_dec(&ni->count); in map_extent_mft_record()
289 *ntfs_ino = ni; in map_extent_mft_record()
292 unmap_mft_record(ni); in map_extent_mft_record()
304 ni = ntfs_new_extent_inode(base_ni->vol->sb, mft_no); in map_extent_mft_record()
305 if (unlikely(!ni)) { in map_extent_mft_record()
310 ni->vol = base_ni->vol; in map_extent_mft_record()
311 ni->seq_no = seq_no; in map_extent_mft_record()
312 ni->nr_extents = -1; in map_extent_mft_record()
313 ni->ext.base_ntfs_ino = base_ni; in map_extent_mft_record()
315 m = map_mft_record(ni); in map_extent_mft_record()
319 ntfs_clear_extent_inode(ni); in map_extent_mft_record()
351 base_ni->ext.extent_ntfs_inos[base_ni->nr_extents++] = ni; in map_extent_mft_record()
355 *ntfs_ino = ni; in map_extent_mft_record()
358 unmap_mft_record(ni); in map_extent_mft_record()
366 ntfs_clear_extent_inode(ni); in map_extent_mft_record()
395 void __mark_mft_record_dirty(ntfs_inode *ni) in __mark_mft_record_dirty() argument
399 ntfs_debug("Entering for inode 0x%lx.", ni->mft_no); in __mark_mft_record_dirty()
400 BUG_ON(NInoAttr(ni)); in __mark_mft_record_dirty()
401 mark_ntfs_record_dirty(ni->page, ni->page_ofs); in __mark_mft_record_dirty()
403 mutex_lock(&ni->extent_lock); in __mark_mft_record_dirty()
404 if (likely(ni->nr_extents >= 0)) in __mark_mft_record_dirty()
405 base_ni = ni; in __mark_mft_record_dirty()
407 base_ni = ni->ext.base_ntfs_ino; in __mark_mft_record_dirty()
408 mutex_unlock(&ni->extent_lock); in __mark_mft_record_dirty()
669 int write_mft_record_nolock(ntfs_inode *ni, MFT_RECORD *m, int sync) in write_mft_record_nolock() argument
671 ntfs_volume *vol = ni->vol; in write_mft_record_nolock()
672 struct page *page = ni->page; in write_mft_record_nolock()
682 ntfs_debug("Entering for inode 0x%lx.", ni->mft_no); in write_mft_record_nolock()
683 BUG_ON(NInoAttr(ni)); in write_mft_record_nolock()
692 if (!NInoTestClearDirty(ni)) in write_mft_record_nolock()
699 m_start = ni->page_ofs; in write_mft_record_nolock()
729 vcn = ((VCN)ni->mft_no << vol->mft_record_size_bits) + in write_mft_record_nolock()
755 ni->mft_no, (long long)lcn); in write_mft_record_nolock()
777 flush_dcache_mft_record_page(ni); in write_mft_record_nolock()
791 if (!sync && ni->mft_no < vol->mftmirr_size) in write_mft_record_nolock()
792 ntfs_sync_mft_mirror(vol, ni->mft_no, m, sync); in write_mft_record_nolock()
809 if (sync && ni->mft_no < vol->mftmirr_size) in write_mft_record_nolock()
810 ntfs_sync_mft_mirror(vol, ni->mft_no, m, sync); in write_mft_record_nolock()
813 flush_dcache_mft_record_page(ni); in write_mft_record_nolock()
819 ni->mft_no); in write_mft_record_nolock()
839 mark_mft_record_dirty(ni); in write_mft_record_nolock()
931 ntfs_inode *ni, *eni, **extent_nis; in ntfs_may_write_mft_record() local
971 ni = NTFS_I(vi); in ntfs_may_write_mft_record()
973 atomic_inc(&ni->count); in ntfs_may_write_mft_record()
975 if (NInoDirty(ni)) { in ntfs_may_write_mft_record()
978 atomic_dec(&ni->count); in ntfs_may_write_mft_record()
984 if (unlikely(!mutex_trylock(&ni->mrec_lock))) { in ntfs_may_write_mft_record()
987 atomic_dec(&ni->count); in ntfs_may_write_mft_record()
997 *locked_ni = ni; in ntfs_may_write_mft_record()
1043 ni = NTFS_I(vi); in ntfs_may_write_mft_record()
1044 mutex_lock(&ni->extent_lock); in ntfs_may_write_mft_record()
1045 if (ni->nr_extents <= 0) { in ntfs_may_write_mft_record()
1050 mutex_unlock(&ni->extent_lock); in ntfs_may_write_mft_record()
1057 extent_nis = ni->ext.extent_ntfs_inos; in ntfs_may_write_mft_record()
1058 for (eni = NULL, i = 0; i < ni->nr_extents; ++i) { in ntfs_may_write_mft_record()
1073 mutex_unlock(&ni->extent_lock); in ntfs_may_write_mft_record()
1084 mutex_unlock(&ni->extent_lock); in ntfs_may_write_mft_record()
2250 ntfs_inode *mft_ni, *mftbmp_ni, *ni; in ntfs_mft_record_alloc() local
2593 m_tmp = map_extent_mft_record(base_ni, bit, &ni); in ntfs_mft_record_alloc()
2656 ni = NTFS_I(vi); in ntfs_mft_record_alloc()
2665 NInoSetMstProtected(ni); in ntfs_mft_record_alloc()
2666 ni->type = AT_INDEX_ALLOCATION; in ntfs_mft_record_alloc()
2667 ni->name = I30; in ntfs_mft_record_alloc()
2668 ni->name_len = 4; in ntfs_mft_record_alloc()
2670 ni->itype.index.block_size = 4096; in ntfs_mft_record_alloc()
2671 ni->itype.index.block_size_bits = ntfs_ffs(4096) - 1; in ntfs_mft_record_alloc()
2672 ni->itype.index.collation_rule = COLLATION_FILE_NAME; in ntfs_mft_record_alloc()
2673 if (vol->cluster_size <= ni->itype.index.block_size) { in ntfs_mft_record_alloc()
2674 ni->itype.index.vcn_size = vol->cluster_size; in ntfs_mft_record_alloc()
2675 ni->itype.index.vcn_size_bits = in ntfs_mft_record_alloc()
2678 ni->itype.index.vcn_size = vol->sector_size; in ntfs_mft_record_alloc()
2679 ni->itype.index.vcn_size_bits = in ntfs_mft_record_alloc()
2686 ni->type = AT_DATA; in ntfs_mft_record_alloc()
2687 ni->name = NULL; in ntfs_mft_record_alloc()
2688 ni->name_len = 0; in ntfs_mft_record_alloc()
2704 vi->i_generation = ni->seq_no = le16_to_cpu(m->sequence_number); in ntfs_mft_record_alloc()
2709 atomic_inc(&ni->count); in ntfs_mft_record_alloc()
2710 mutex_lock(&ni->mrec_lock); in ntfs_mft_record_alloc()
2711 ni->page = page; in ntfs_mft_record_alloc()
2712 ni->page_ofs = ofs; in ntfs_mft_record_alloc()
2739 return ni; in ntfs_mft_record_alloc()
2784 int ntfs_extent_mft_record_free(ntfs_inode *ni, MFT_RECORD *m) in ntfs_extent_mft_record_free() argument
2786 unsigned long mft_no = ni->mft_no; in ntfs_extent_mft_record_free()
2787 ntfs_volume *vol = ni->vol; in ntfs_extent_mft_record_free()
2794 BUG_ON(NInoAttr(ni)); in ntfs_extent_mft_record_free()
2795 BUG_ON(ni->nr_extents != -1); in ntfs_extent_mft_record_free()
2797 mutex_lock(&ni->extent_lock); in ntfs_extent_mft_record_free()
2798 base_ni = ni->ext.base_ntfs_ino; in ntfs_extent_mft_record_free()
2799 mutex_unlock(&ni->extent_lock); in ntfs_extent_mft_record_free()
2809 if (atomic_read(&ni->count) > 2) { in ntfs_extent_mft_record_free()
2820 if (ni != extent_nis[i]) in ntfs_extent_mft_record_free()
2861 NInoSetDirty(ni); in ntfs_extent_mft_record_free()
2862 err = write_mft_record(ni, m, 0); in ntfs_extent_mft_record_free()
2870 unmap_extent_mft_record(ni); in ntfs_extent_mft_record_free()
2871 ntfs_clear_extent_inode(ni); in ntfs_extent_mft_record_free()
2912 extent_nis[base_ni->nr_extents++] = ni; in ntfs_extent_mft_record_free()
2914 mark_mft_record_dirty(ni); in ntfs_extent_mft_record_free()