Lines Matching refs:attr

38 	struct ATTRIB *attr;  in mi_new_attt_id()  local
52 attr = NULL; in mi_new_attt_id()
55 attr = mi_enum_attr(mi, attr); in mi_new_attt_id()
56 if (!attr) { in mi_new_attt_id()
62 t16 = le16_to_cpu(attr->id); in mi_new_attt_id()
65 attr = NULL; in mi_new_attt_id()
198 struct ATTRIB *mi_enum_attr(struct mft_inode *mi, struct ATTRIB *attr) in mi_enum_attr() argument
206 if (!attr) { in mi_enum_attr()
224 attr = Add2Ptr(rec, off); in mi_enum_attr()
227 off = PtrOffset(rec, attr); in mi_enum_attr()
231 asize = le32_to_cpu(attr->size); in mi_enum_attr()
241 prev_type = le32_to_cpu(attr->type); in mi_enum_attr()
242 attr = Add2Ptr(attr, asize); in mi_enum_attr()
246 asize = le32_to_cpu(attr->size); in mi_enum_attr()
254 if (attr->type == ATTR_END) { in mi_enum_attr()
260 t32 = le32_to_cpu(attr->type); in mi_enum_attr()
273 if (!attr->non_res) { in mi_enum_attr()
278 t16 = le16_to_cpu(attr->res.data_off); in mi_enum_attr()
282 if (le32_to_cpu(attr->res.data_size) > asize - t16) in mi_enum_attr()
285 t32 = sizeof(short) * attr->name_len; in mi_enum_attr()
286 if (t32 && le16_to_cpu(attr->name_off) + t32 > t16) in mi_enum_attr()
289 return attr; in mi_enum_attr()
293 if (attr->non_res != 1) in mi_enum_attr()
296 t16 = le16_to_cpu(attr->nres.run_off); in mi_enum_attr()
300 t32 = sizeof(short) * attr->name_len; in mi_enum_attr()
301 if (t32 && le16_to_cpu(attr->name_off) + t32 > t16) in mi_enum_attr()
305 if (le64_to_cpu(attr->nres.svcn) > le64_to_cpu(attr->nres.evcn) + 1) in mi_enum_attr()
308 data_size = le64_to_cpu(attr->nres.data_size); in mi_enum_attr()
309 if (le64_to_cpu(attr->nres.valid_size) > data_size) in mi_enum_attr()
312 alloc_size = le64_to_cpu(attr->nres.alloc_size); in mi_enum_attr()
320 if (!attr->nres.svcn && is_attr_ext(attr)) { in mi_enum_attr()
325 tot_size = le64_to_cpu(attr->nres.total_size); in mi_enum_attr()
335 if (attr->nres.c_unit) in mi_enum_attr()
339 return attr; in mi_enum_attr()
345 struct ATTRIB *mi_find_attr(struct mft_inode *mi, struct ATTRIB *attr, in mi_find_attr() argument
353 attr = mi_enum_attr(mi, attr); in mi_find_attr()
354 if (!attr) in mi_find_attr()
357 atype = le32_to_cpu(attr->type); in mi_find_attr()
364 if (attr->name_len != name_len) in mi_find_attr()
367 if (name_len && memcmp(attr_name(attr), name, name_len * sizeof(short))) in mi_find_attr()
370 if (id && *id != attr->id) in mi_find_attr()
373 return attr; in mi_find_attr()
466 struct ATTRIB *attr; in mi_insert_attr() local
481 attr = NULL; in mi_insert_attr()
482 while ((attr = mi_enum_attr(mi, attr))) { in mi_insert_attr()
483 int diff = compare_attr(attr, type, name, name_len, upcase); in mi_insert_attr()
488 if (!diff && !is_attr_indexed(attr)) in mi_insert_attr()
493 if (!attr) { in mi_insert_attr()
496 attr = Add2Ptr(rec, used - 8); in mi_insert_attr()
499 tail = used - PtrOffset(rec, attr); in mi_insert_attr()
504 memmove(Add2Ptr(attr, asize), attr, tail); in mi_insert_attr()
505 memset(attr, 0, asize); in mi_insert_attr()
507 attr->type = type; in mi_insert_attr()
508 attr->size = cpu_to_le32(asize); in mi_insert_attr()
509 attr->name_len = name_len; in mi_insert_attr()
510 attr->name_off = cpu_to_le16(name_off); in mi_insert_attr()
511 attr->id = id; in mi_insert_attr()
513 memmove(Add2Ptr(attr, name_off), name, name_len * sizeof(short)); in mi_insert_attr()
518 return attr; in mi_insert_attr()
527 struct ATTRIB *attr) in mi_remove_attr() argument
530 u32 aoff = PtrOffset(rec, attr); in mi_remove_attr()
532 u32 asize = le32_to_cpu(attr->size); in mi_remove_attr()
537 if (ni && is_attr_indexed(attr) && attr->type == ATTR_NAME) { in mi_remove_attr()
548 memmove(attr, Add2Ptr(attr, asize), used - aoff); in mi_remove_attr()
556 bool mi_resize_attr(struct mft_inode *mi, struct ATTRIB *attr, int bytes) in mi_resize_attr() argument
559 u32 aoff = PtrOffset(rec, attr); in mi_resize_attr()
561 u32 nsize, asize = le32_to_cpu(attr->size); in mi_resize_attr()
562 u32 rsize = le32_to_cpu(attr->res.data_size); in mi_resize_attr()
574 next = Add2Ptr(attr, asize); in mi_resize_attr()
597 attr->size = cpu_to_le32(nsize); in mi_resize_attr()
598 if (!attr->non_res) in mi_resize_attr()
599 attr->res.data_size = cpu_to_le32(rsize); in mi_resize_attr()
609 int mi_pack_runs(struct mft_inode *mi, struct ATTRIB *attr, in mi_pack_runs() argument
617 CLST svcn = le64_to_cpu(attr->nres.svcn); in mi_pack_runs()
619 u32 aoff = PtrOffset(rec, attr); in mi_pack_runs()
620 u32 asize = le32_to_cpu(attr->size); in mi_pack_runs()
621 char *next = Add2Ptr(attr, asize); in mi_pack_runs()
622 u16 run_off = le16_to_cpu(attr->nres.run_off); in mi_pack_runs()
631 err = run_pack(run, svcn, len, Add2Ptr(attr, run_off), run_size + dsize, in mi_pack_runs()
642 attr->size = cpu_to_le32(asize + new_run_size - run_size); in mi_pack_runs()
643 attr->nres.evcn = cpu_to_le64(svcn + plen - 1); in mi_pack_runs()