Lines Matching full:mi
34 static __le16 mi_new_attt_id(struct mft_inode *mi) in mi_new_attt_id() argument
37 struct MFT_REC *rec = mi->mrec; in mi_new_attt_id()
55 attr = mi_enum_attr(mi, attr); in mi_new_attt_id()
58 mi->dirty = true; in mi_new_attt_id()
71 int mi_get(struct ntfs_sb_info *sbi, CLST rno, struct mft_inode **mi) in mi_get() argument
91 *mi = m; in mi_get()
95 void mi_put(struct mft_inode *mi) in mi_put() argument
97 mi_clear(mi); in mi_put()
98 kfree(mi); in mi_put()
101 int mi_init(struct mft_inode *mi, struct ntfs_sb_info *sbi, CLST rno) in mi_init() argument
103 mi->sbi = sbi; in mi_init()
104 mi->rno = rno; in mi_init()
105 mi->mrec = kmalloc(sbi->record_size, GFP_NOFS); in mi_init()
106 if (!mi->mrec) in mi_init()
115 int mi_read(struct mft_inode *mi, bool is_mft) in mi_read() argument
118 struct MFT_REC *rec = mi->mrec; in mi_read()
119 struct ntfs_sb_info *sbi = mi->sbi; in mi_read()
121 u64 vbo = (u64)mi->rno << sbi->record_bits; in mi_read()
133 err = ntfs_read_bh(sbi, run, vbo, &rec->rhdr, bpr, &mi->nb); in mi_read()
140 mi->dirty = true; in mi_read()
162 err = ntfs_read_bh(sbi, run, vbo, &rec->rhdr, bpr, &mi->nb); in mi_read()
167 mi->dirty = true; in mi_read()
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) in mi_enum_attr() argument
200 const struct MFT_REC *rec = mi->mrec; in mi_enum_attr()
314 t32 = mi->sbi->cluster_mask; in mi_enum_attr()
334 if (alloc_size > mi->sbi->volume.size) in mi_enum_attr()
344 struct ATTRIB *mi_find_attr(struct mft_inode *mi, struct ATTRIB *attr, in mi_find_attr() argument
352 attr = mi_enum_attr(mi, attr); in mi_find_attr()
375 int mi_write(struct mft_inode *mi, int wait) in mi_write() argument
381 if (!mi->dirty) in mi_write()
384 sbi = mi->sbi; in mi_write()
385 rec = mi->mrec; in mi_write()
387 err = ntfs_write_bh(sbi, &rec->rhdr, &mi->nb, wait); in mi_write()
391 if (mi->rno < sbi->mft.recs_mirr) in mi_write()
394 mi->dirty = false; in mi_write()
399 int mi_format_new(struct mft_inode *mi, struct ntfs_sb_info *sbi, CLST rno, in mi_format_new() argument
407 err = mi_init(mi, sbi, rno); in mi_format_new()
411 rec = mi->mrec; in mi_format_new()
419 } else if (mi_read(mi, is_mft)) { in mi_format_new()
435 mi->dirty = true; in mi_format_new()
437 if (!mi->nb.nbufs) { in mi_format_new()
447 &mi->nb); in mi_format_new()
460 struct ATTRIB *mi_insert_attr(struct mft_inode *mi, enum ATTR_TYPE type, in mi_insert_attr() argument
467 struct MFT_REC *rec = mi->mrec; in mi_insert_attr()
468 struct ntfs_sb_info *sbi = mi->sbi; in mi_insert_attr()
472 /* Can we insert mi attribute? */ in mi_insert_attr()
481 while ((attr = mi_enum_attr(mi, attr))) { in mi_insert_attr()
501 id = mi_new_attt_id(mi); in mi_insert_attr()
515 mi->dirty = true; in mi_insert_attr()
525 bool mi_remove_attr(struct ntfs_inode *ni, struct mft_inode *mi, in mi_remove_attr() argument
528 struct MFT_REC *rec = mi->mrec; in mi_remove_attr()
537 u16 links = le16_to_cpu(ni->mi.mrec->hard_links); in mi_remove_attr()
541 ni->mi.mrec->hard_links = cpu_to_le16(links - 1); in mi_remove_attr()
542 ni->mi.dirty = true; in mi_remove_attr()
549 mi->dirty = true; in mi_remove_attr()
555 bool mi_resize_attr(struct mft_inode *mi, struct ATTRIB *attr, int bytes) in mi_resize_attr() argument
557 struct MFT_REC *rec = mi->mrec; in mi_resize_attr()
599 mi->dirty = true; in mi_resize_attr()
608 int mi_pack_runs(struct mft_inode *mi, struct ATTRIB *attr, in mi_pack_runs() argument
612 struct ntfs_sb_info *sbi = mi->sbi; in mi_pack_runs()
615 struct MFT_REC *rec = mi->mrec; in mi_pack_runs()
644 mi->dirty = true; in mi_pack_runs()