Lines Matching full:le

17  * Return: True if @le is valid.
20 struct ATTR_LIST_ENTRY *le) in al_is_valid_le() argument
23 if (!le || !ni->attr_list.le || !ni->attr_list.size) in al_is_valid_le()
26 return PtrOffset(ni->attr_list.le, le) + le16_to_cpu(le->size) <= in al_is_valid_le()
34 kvfree(ni->attr_list.le); in al_destroy()
35 ni->attr_list.le = NULL; in al_destroy()
50 void *le = NULL; in ntfs_load_attr_list() local
64 le = kvmalloc(al_aligned(lsize), GFP_KERNEL); in ntfs_load_attr_list()
65 if (!le) { in ntfs_load_attr_list()
69 memcpy(le, resident_data(attr), lsize); in ntfs_load_attr_list()
106 le = kvmalloc(al_aligned(lsize), GFP_KERNEL); in ntfs_load_attr_list()
107 if (!le) { in ntfs_load_attr_list()
112 err = ntfs_read_run_nb(ni->mi.sbi, &ni->attr_list.run, 0, le, in ntfs_load_attr_list()
119 ni->attr_list.le = le; in ntfs_load_attr_list()
124 ni->attr_list.le = le; in ntfs_load_attr_list()
134 * * The next list le.
135 * * If @le is NULL then return the first le.
138 struct ATTR_LIST_ENTRY *le) in al_enumerate() argument
144 if (!le) { in al_enumerate()
145 le = ni->attr_list.le; in al_enumerate()
147 sz = le16_to_cpu(le->size); in al_enumerate()
149 /* Impossible 'cause we should not return such le. */ in al_enumerate()
152 le = Add2Ptr(le, sz); in al_enumerate()
156 off = PtrOffset(ni->attr_list.le, le); in al_enumerate()
162 sz = le16_to_cpu(le->size); in al_enumerate()
164 /* Check le for errors. */ in al_enumerate()
166 sz < le->name_off + le->name_len * sizeof(short)) { in al_enumerate()
170 return le; in al_enumerate()
176 * Find the first le in the list which matches type, name and VCN.
181 struct ATTR_LIST_ENTRY *le, in al_find_le() argument
186 return al_find_ex(ni, le, attr->type, attr_name(attr), attr->name_len, in al_find_le()
193 * Find the first le in the list which matches type, name and VCN.
198 struct ATTR_LIST_ENTRY *le, in al_find_ex() argument
206 while ((le = al_enumerate(ni, le))) { in al_find_ex()
208 int diff = le32_to_cpu(le->type) - type_in; in al_find_ex()
217 if (le->name_len != name_len) in al_find_ex()
220 le_vcn = le64_to_cpu(le->vcn); in al_find_ex()
225 diff = ntfs_cmp_names(le_name(le), name_len, name, in al_find_ex()
236 return le; in al_find_ex()
239 return le; in al_find_ex()
244 ret = le; in al_find_ex()
260 struct ATTR_LIST_ENTRY *le = NULL, *prev; in al_find_le_to_insert() local
265 while ((le = al_enumerate(ni, prev = le))) { in al_find_le_to_insert()
266 int diff = le32_to_cpu(le->type) - type_in; in al_find_le_to_insert()
272 return le; in al_find_le_to_insert()
274 if (!le->vcn) { in al_find_le_to_insert()
278 diff = ntfs_cmp_names(le_name(le), le->name_len, name, in al_find_le_to_insert()
285 return le; in al_find_le_to_insert()
288 if (le64_to_cpu(le->vcn) >= vcn) in al_find_le_to_insert()
289 return le; in al_find_le_to_insert()
292 return prev ? Add2Ptr(prev, le16_to_cpu(prev->size)) : ni->attr_list.le; in al_find_le_to_insert()
306 struct ATTR_LIST_ENTRY *le; in al_add_le() local
315 * Compute the size of the new 'le' in al_add_le()
323 /* Scan forward to the point at which the new 'le' should be inserted. */ in al_add_le()
324 le = al_find_le_to_insert(ni, type, name, name_len, svcn); in al_add_le()
325 off = PtrOffset(al->le, le); in al_add_le()
333 memcpy(ptr, al->le, off); in al_add_le()
334 memcpy(Add2Ptr(ptr, off + sz), le, old_size - off); in al_add_le()
335 le = Add2Ptr(ptr, off); in al_add_le()
336 kvfree(al->le); in al_add_le()
337 al->le = ptr; in al_add_le()
339 memmove(Add2Ptr(le, sz), le, old_size - off); in al_add_le()
341 *new_le = le; in al_add_le()
345 le->type = type; in al_add_le()
346 le->size = cpu_to_le16(sz); in al_add_le()
347 le->name_len = name_len; in al_add_le()
348 le->name_off = offsetof(struct ATTR_LIST_ENTRY, name); in al_add_le()
349 le->vcn = cpu_to_le64(svcn); in al_add_le()
350 le->ref = *ref; in al_add_le()
351 le->id = id; in al_add_le()
352 memcpy(le->name, name, sizeof(short) * name_len); in al_add_le()
358 memmove(le, Add2Ptr(le, sz), old_size - off); in al_add_le()
366 err = ntfs_sb_write_run(ni->mi.sbi, &al->run, 0, al->le, in al_add_le()
377 * al_remove_le - Remove @le from attribute list.
379 bool al_remove_le(struct ntfs_inode *ni, struct ATTR_LIST_ENTRY *le) in al_remove_le() argument
387 if (!al_is_valid_le(ni, le)) in al_remove_le()
390 /* Save on stack the size of 'le' */ in al_remove_le()
391 size = le16_to_cpu(le->size); in al_remove_le()
392 off = PtrOffset(al->le, le); in al_remove_le()
394 memmove(le, Add2Ptr(le, size), al->size - (off + size)); in al_remove_le()
424 memcpy(resident_data(attr), al->le, al->size); in al_update()
426 err = ntfs_sb_write_run(ni->mi.sbi, &al->run, 0, al->le, in al_update()