Lines Matching full:ni
19 static inline bool al_is_valid_le(const struct ntfs_inode *ni, in al_is_valid_le() argument
22 if (!le || !ni->attr_list.le || !ni->attr_list.size) in al_is_valid_le()
25 return PtrOffset(ni->attr_list.le, le) + le16_to_cpu(le->size) <= in al_is_valid_le()
26 ni->attr_list.size; in al_is_valid_le()
29 void al_destroy(struct ntfs_inode *ni) in al_destroy() argument
31 run_close(&ni->attr_list.run); in al_destroy()
32 kfree(ni->attr_list.le); in al_destroy()
33 ni->attr_list.le = NULL; in al_destroy()
34 ni->attr_list.size = 0; in al_destroy()
35 ni->attr_list.dirty = false; in al_destroy()
44 int ntfs_load_attr_list(struct ntfs_inode *ni, struct ATTRIB *attr) in ntfs_load_attr_list() argument
50 if (ni->attr_list.size) in ntfs_load_attr_list()
69 run_init(&ni->attr_list.run); in ntfs_load_attr_list()
71 err = run_unpack_ex(&ni->attr_list.run, ni->mi.sbi, ni->mi.rno, in ntfs_load_attr_list()
84 err = ntfs_read_run_nb(ni->mi.sbi, &ni->attr_list.run, 0, le, in ntfs_load_attr_list()
90 ni->attr_list.size = lsize; in ntfs_load_attr_list()
91 ni->attr_list.le = le; in ntfs_load_attr_list()
96 ni->attr_list.le = le; in ntfs_load_attr_list()
97 al_destroy(ni); in ntfs_load_attr_list()
109 struct ATTR_LIST_ENTRY *al_enumerate(struct ntfs_inode *ni, in al_enumerate() argument
116 le = ni->attr_list.le; in al_enumerate()
127 off = PtrOffset(ni->attr_list.le, le); in al_enumerate()
128 if (off + sizeof(struct ATTR_LIST_ENTRY) > ni->attr_list.size) { in al_enumerate()
137 off + sz > ni->attr_list.size || in al_enumerate()
152 struct ATTR_LIST_ENTRY *al_find_le(struct ntfs_inode *ni, in al_find_le() argument
158 return al_find_ex(ni, le, attr->type, attr_name(attr), attr->name_len, in al_find_le()
169 struct ATTR_LIST_ENTRY *al_find_ex(struct ntfs_inode *ni, in al_find_ex() argument
177 while ((le = al_enumerate(ni, le))) { in al_find_ex()
197 name_len, ni->mi.sbi->upcase, in al_find_ex()
226 static struct ATTR_LIST_ENTRY *al_find_le_to_insert(struct ntfs_inode *ni, in al_find_le_to_insert() argument
235 while ((le = al_enumerate(ni, prev = le))) { in al_find_le_to_insert()
249 name_len, ni->mi.sbi->upcase, in al_find_le_to_insert()
262 return prev ? Add2Ptr(prev, le16_to_cpu(prev->size)) : ni->attr_list.le; in al_find_le_to_insert()
270 int al_add_le(struct ntfs_inode *ni, enum ATTR_TYPE type, const __le16 *name, in al_add_le() argument
281 typeof(ni->attr_list) *al = &ni->attr_list; in al_add_le()
293 le = al_find_le_to_insert(ni, type, name, name_len, svcn); in al_add_le()
323 err = attr_set_size(ni, ATTR_LIST, NULL, 0, &al->run, new_size, in al_add_le()
335 err = ntfs_sb_write_run(ni->mi.sbi, &al->run, 0, al->le, in al_add_le()
348 bool al_remove_le(struct ntfs_inode *ni, struct ATTR_LIST_ENTRY *le) in al_remove_le() argument
352 typeof(ni->attr_list) *al = &ni->attr_list; in al_remove_le()
354 if (!al_is_valid_le(ni, le)) in al_remove_le()
372 bool al_delete_le(struct ntfs_inode *ni, enum ATTR_TYPE type, CLST vcn, in al_delete_le() argument
379 typeof(ni->attr_list) *al = &ni->attr_list; in al_delete_le()
382 le = al_find_ex(ni, NULL, type, name, name_len, &vcn); in al_delete_le()
396 ni->mi.sbi->upcase, true)) in al_delete_le()
423 int al_update(struct ntfs_inode *ni, int sync) in al_update() argument
427 typeof(ni->attr_list) *al = &ni->attr_list; in al_update()
436 err = attr_set_size(ni, ATTR_LIST, NULL, 0, &al->run, al->size, NULL, in al_update()
444 err = ntfs_sb_write_run(ni->mi.sbi, &al->run, 0, al->le, in al_update()
452 ni->mi.dirty = true; in al_update()