Lines Matching refs:mi

34 static __le16 mi_new_attt_id(struct mft_inode *mi)
37 struct MFT_REC *rec = mi->mrec;
55 attr = mi_enum_attr(mi, attr);
58 mi->dirty = true;
71 int mi_get(struct ntfs_sb_info *sbi, CLST rno, struct mft_inode **mi)
91 *mi = m;
95 void mi_put(struct mft_inode *mi)
97 mi_clear(mi);
98 kfree(mi);
101 int mi_init(struct mft_inode *mi, struct ntfs_sb_info *sbi, CLST rno)
103 mi->sbi = sbi;
104 mi->rno = rno;
105 mi->mrec = kmalloc(sbi->record_size, GFP_NOFS);
106 if (!mi->mrec)
115 int mi_read(struct mft_inode *mi, bool is_mft)
118 struct MFT_REC *rec = mi->mrec;
119 struct ntfs_sb_info *sbi = mi->sbi;
121 u64 vbo = (u64)mi->rno << sbi->record_bits;
133 err = ntfs_read_bh(sbi, run, vbo, &rec->rhdr, bpr, &mi->nb);
140 mi->dirty = true;
162 err = ntfs_read_bh(sbi, run, vbo, &rec->rhdr, bpr, &mi->nb);
167 mi->dirty = true;
195 * NOTE: mi->mrec - memory of size sbi->record_size
196 * here we sure that mi->mrec->total == sbi->record_size (see mi_read)
198 struct ATTRIB *mi_enum_attr(struct mft_inode *mi, struct ATTRIB *attr)
200 const struct MFT_REC *rec = mi->mrec;
316 t32 = mi->sbi->cluster_mask;
345 struct ATTRIB *mi_find_attr(struct mft_inode *mi, struct ATTRIB *attr,
353 attr = mi_enum_attr(mi, attr);
376 int mi_write(struct mft_inode *mi, int wait)
382 if (!mi->dirty)
385 sbi = mi->sbi;
386 rec = mi->mrec;
388 err = ntfs_write_bh(sbi, &rec->rhdr, &mi->nb, wait);
392 if (mi->rno < sbi->mft.recs_mirr)
395 mi->dirty = false;
400 int mi_format_new(struct mft_inode *mi, struct ntfs_sb_info *sbi, CLST rno,
408 err = mi_init(mi, sbi, rno);
412 rec = mi->mrec;
420 } else if (mi_read(mi, is_mft)) {
436 mi->dirty = true;
438 if (!mi->nb.nbufs) {
448 &mi->nb);
461 struct ATTRIB *mi_insert_attr(struct mft_inode *mi, enum ATTR_TYPE type,
468 struct MFT_REC *rec = mi->mrec;
469 struct ntfs_sb_info *sbi = mi->sbi;
473 /* Can we insert mi attribute? */
482 while ((attr = mi_enum_attr(mi, attr))) {
502 id = mi_new_attt_id(mi);
516 mi->dirty = true;
526 bool mi_remove_attr(struct ntfs_inode *ni, struct mft_inode *mi,
529 struct MFT_REC *rec = mi->mrec;
538 u16 links = le16_to_cpu(ni->mi.mrec->hard_links);
549 ni->mi.mrec->hard_links = cpu_to_le16(links - 1);
550 ni->mi.dirty = true;
557 mi->dirty = true;
563 bool mi_resize_attr(struct mft_inode *mi, struct ATTRIB *attr, int bytes)
565 struct MFT_REC *rec = mi->mrec;
607 mi->dirty = true;
616 int mi_pack_runs(struct mft_inode *mi, struct ATTRIB *attr,
620 struct ntfs_sb_info *sbi = mi->sbi;
623 struct MFT_REC *rec = mi->mrec;
652 mi->dirty = true;