Lines Matching refs:ea

85 			  struct gfs2_ea_header *ea,
92 struct gfs2_ea_header *ea, *prev = NULL;
98 for (ea = GFS2_EA_BH2FIRST(bh);; prev = ea, ea = GFS2_EA2NEXT(ea)) {
99 if (!GFS2_EA_REC_LEN(ea))
101 if (!(bh->b_data <= (char *)ea && (char *)GFS2_EA2NEXT(ea) <=
104 if (!gfs2_eatype_valid(sdp, ea->ea_type))
106 error = ea_call(ip, bh, ea, prev, data);
110 if (GFS2_EA_IS_LAST(ea)) {
111 if ((char *)GFS2_EA2NEXT(ea) !=
176 struct gfs2_ea_header *ea, struct gfs2_ea_header *prev,
181 if (ea->ea_type == GFS2_EATYPE_UNUSED)
184 if (ea->ea_type == ef->type) {
185 if (ea->ea_name_len == ef->namel &&
186 !memcmp(GFS2_EA2NAME(ea), ef->name, ea->ea_name_len)) {
190 el->el_ea = ea;
230 struct gfs2_ea_header *ea,
249 if (GFS2_EA_IS_STUFFED(ea))
252 dataptrs = GFS2_EA2DATAPTRS(ea);
253 for (x = 0; x < ea->ea_num_ptrs; x++, dataptrs++) {
280 dataptrs = GFS2_EA2DATAPTRS(ea);
281 for (x = 0; x < ea->ea_num_ptrs; x++, dataptrs++) {
304 len = GFS2_EA_REC_LEN(prev) + GFS2_EA_REC_LEN(ea);
307 if (GFS2_EA_IS_LAST(ea))
310 ea->ea_type = GFS2_EATYPE_UNUSED;
311 ea->ea_num_ptrs = 0;
325 struct gfs2_ea_header *ea,
338 error = ea_dealloc_unstuffed(ip, bh, ea, prev, (leave) ? &error : NULL);
351 struct gfs2_ea_header *ea, struct gfs2_ea_header *prev,
361 if (ea->ea_type == GFS2_EATYPE_UNUSED)
364 BUG_ON(ea->ea_type > GFS2_EATYPE_SECURITY &&
366 switch (ea->ea_type) {
387 ea_size = l + ea->ea_name_len + 1;
393 memcpy(er->er_data + ei->ei_size + l, GFS2_EA2NAME(ea),
394 ea->ea_name_len);
446 * @ea: The extended attribute header structure
453 static int gfs2_iter_unstuffed(struct gfs2_inode *ip, struct gfs2_ea_header *ea,
458 unsigned int amount = GFS2_EA_DATA_LEN(ea);
460 __be64 *dataptrs = GFS2_EA2DATAPTRS(ea);
637 struct gfs2_ea_header *ea;
651 ea = GFS2_EA_BH2FIRST(*bhp);
652 ea->ea_rec_len = cpu_to_be32(sdp->sd_jbsize);
653 ea->ea_type = GFS2_EATYPE_UNUSED;
654 ea->ea_flags = GFS2_EAFLAG_LAST;
655 ea->ea_num_ptrs = 0;
663 * ea_write - writes the request info to an ea, creating new blocks if
666 * @ea: the location of the new ea in a block
674 static int ea_write(struct gfs2_inode *ip, struct gfs2_ea_header *ea,
680 ea->ea_data_len = cpu_to_be32(er->er_data_len);
681 ea->ea_name_len = er->er_name_len;
682 ea->ea_type = er->er_type;
683 ea->__pad = 0;
685 memcpy(GFS2_EA2NAME(ea), er->er_name, er->er_name_len);
688 ea->ea_num_ptrs = 0;
689 memcpy(GFS2_EA2DATA(ea), er->er_data, er->er_data_len);
691 __be64 *dataptr = GFS2_EA2DATAPTRS(ea);
697 ea->ea_num_ptrs = DIV_ROUND_UP(er->er_data_len, sdp->sd_jbsize);
698 for (x = 0; x < ea->ea_num_ptrs; x++) {
820 static struct gfs2_ea_header *ea_split_ea(struct gfs2_ea_header *ea)
822 u32 ea_size = GFS2_EA_SIZE(ea);
823 struct gfs2_ea_header *new = (struct gfs2_ea_header *)((char *)ea +
825 u32 new_size = GFS2_EA_REC_LEN(ea) - ea_size;
826 int last = ea->ea_flags & GFS2_EAFLAG_LAST;
828 ea->ea_rec_len = cpu_to_be32(ea_size);
829 ea->ea_flags ^= last;
840 struct gfs2_ea_header *ea = el->el_ea;
846 if (!prev || !GFS2_EA_IS_STUFFED(ea)) {
847 ea->ea_type = GFS2_EATYPE_UNUSED;
849 } else if (GFS2_EA2NEXT(prev) != ea) {
851 gfs2_assert_withdraw(GFS2_SB(&ip->i_inode), GFS2_EA2NEXT(prev) == ea);
854 len = GFS2_EA_REC_LEN(prev) + GFS2_EA_REC_LEN(ea);
857 if (GFS2_EA_IS_LAST(ea))
872 struct gfs2_ea_header *ea, struct ea_set *es)
884 ea = ea_split_ea(ea);
886 ea_write(ip, ea, er);
902 struct gfs2_ea_header *ea = es->es_ea;
908 ea = ea_split_ea(ea);
910 error = ea_write(ip, ea, er);
921 struct gfs2_ea_header *ea, struct gfs2_ea_header *prev,
932 if (ea->ea_type == GFS2_EATYPE_UNUSED) {
933 if (GFS2_EA_REC_LEN(ea) < size)
935 if (!GFS2_EA_IS_STUFFED(ea)) {
936 error = ea_remove_unstuffed(ip, bh, ea, prev, 1);
941 } else if (GFS2_EA_REC_LEN(ea) - GFS2_EA_SIZE(ea) >= size)
947 error = ea_set_simple_noalloc(ip, bh, ea, es);
954 es->es_ea = ea;
1087 struct gfs2_ea_header *ea = el->el_ea;
1100 len = GFS2_EA_REC_LEN(prev) + GFS2_EA_REC_LEN(ea);
1103 if (GFS2_EA_IS_LAST(ea))
1106 ea->ea_type = GFS2_EATYPE_UNUSED;