Lines Matching refs:le

17  * Return: True if @le is valid.
20 struct ATTR_LIST_ENTRY *le)
22 if (!le || !ni->attr_list.le || !ni->attr_list.size)
25 return PtrOffset(ni->attr_list.le, le) + le16_to_cpu(le->size) <=
32 kvfree(ni->attr_list.le);
33 ni->attr_list.le = NULL;
48 void *le = NULL;
56 le = kvmalloc(al_aligned(lsize), GFP_KERNEL);
57 if (!le) {
61 memcpy(le, resident_data(attr), lsize);
94 le = kvmalloc(al_aligned(lsize), GFP_KERNEL);
95 if (!le) {
100 err = ntfs_read_run_nb(ni->mi.sbi, &ni->attr_list.run, 0, le,
107 ni->attr_list.le = le;
112 ni->attr_list.le = le;
122 * * The next list le.
123 * * If @le is NULL then return the first le.
126 struct ATTR_LIST_ENTRY *le)
132 if (!le) {
133 le = ni->attr_list.le;
135 sz = le16_to_cpu(le->size);
137 /* Impossible 'cause we should not return such le. */
140 le = Add2Ptr(le, sz);
144 off = PtrOffset(ni->attr_list.le, le);
150 sz = le16_to_cpu(le->size);
152 /* Check le for errors. */
154 sz < le->name_off + le->name_len * sizeof(short)) {
158 return le;
164 * Find the first le in the list which matches type, name and VCN.
169 struct ATTR_LIST_ENTRY *le,
174 return al_find_ex(ni, le, attr->type, attr_name(attr), attr->name_len,
181 * Find the first le in the list which matches type, name and VCN.
186 struct ATTR_LIST_ENTRY *le,
193 while ((le = al_enumerate(ni, le))) {
195 int diff = le32_to_cpu(le->type) - type_in;
204 if (le->name_len != name_len)
207 le_vcn = le64_to_cpu(le->vcn);
212 diff = ntfs_cmp_names(le_name(le), name_len, name,
223 return le;
226 return le;
231 ret = le;
247 struct ATTR_LIST_ENTRY *le = NULL, *prev;
251 while ((le = al_enumerate(ni, prev = le))) {
252 int diff = le32_to_cpu(le->type) - type_in;
258 return le;
260 if (!le->vcn) {
264 diff = ntfs_cmp_names(le_name(le), le->name_len, name,
271 return le;
274 if (le64_to_cpu(le->vcn) >= vcn)
275 return le;
278 return prev ? Add2Ptr(prev, le16_to_cpu(prev->size)) : ni->attr_list.le;
292 struct ATTR_LIST_ENTRY *le;
300 * Compute the size of the new 'le'
308 /* Scan forward to the point at which the new 'le' should be inserted. */
309 le = al_find_le_to_insert(ni, type, name, name_len, svcn);
310 off = PtrOffset(al->le, le);
318 memcpy(ptr, al->le, off);
319 memcpy(Add2Ptr(ptr, off + sz), le, old_size - off);
320 le = Add2Ptr(ptr, off);
321 kvfree(al->le);
322 al->le = ptr;
324 memmove(Add2Ptr(le, sz), le, old_size - off);
326 *new_le = le;
330 le->type = type;
331 le->size = cpu_to_le16(sz);
332 le->name_len = name_len;
333 le->name_off = offsetof(struct ATTR_LIST_ENTRY, name);
334 le->vcn = cpu_to_le64(svcn);
335 le->ref = *ref;
336 le->id = id;
337 memcpy(le->name, name, sizeof(short) * name_len);
343 memmove(le, Add2Ptr(le, sz), old_size - off);
351 err = ntfs_sb_write_run(ni->mi.sbi, &al->run, 0, al->le,
362 * al_remove_le - Remove @le from attribute list.
364 bool al_remove_le(struct ntfs_inode *ni, struct ATTR_LIST_ENTRY *le)
370 if (!al_is_valid_le(ni, le))
373 /* Save on stack the size of 'le' */
374 size = le16_to_cpu(le->size);
375 off = PtrOffset(al->le, le);
377 memmove(le, Add2Ptr(le, size), al->size - (off + size));
386 * al_delete_le - Delete first le from the list which matches its parameters.
392 struct ATTR_LIST_ENTRY *le;
396 /* Scan forward to the first le that matches the input. */
397 le = al_find_ex(ni, NULL, type, name, name_len, &vcn);
398 if (!le)
401 off = PtrOffset(al->le, le);
406 if (le->type != type)
408 if (le->name_len != name_len)
410 if (name_len && ntfs_cmp_names(le_name(le), name_len, name, name_len,
413 if (le64_to_cpu(le->vcn) != vcn)
421 if (ref && memcmp(ref, &le->ref, sizeof(*ref))) {
422 off += le16_to_cpu(le->size);
423 le = Add2Ptr(al->le, off);
427 /* Save on stack the size of 'le'. */
428 size = le16_to_cpu(le->size);
429 /* Delete the le. */
430 memmove(le, Add2Ptr(le, size), al->size - (off + size));
457 memcpy(resident_data(attr), al->le, al->size);
459 err = ntfs_sb_write_run(ni->mi.sbi, &al->run, 0, al->le,