+ * \retval ve: removed entries
+ */
+static int lfsck_linkea_entry_unpack(struct lfsck_instance *lfsck,
+ struct linkea_data *ldata,
+ struct lu_name *cname,
+ struct lu_fid *pfid)
+{
+ struct link_ea_entry *oldlee;
+ int oldlen;
+ int removed = 0;
+
+ linkea_entry_unpack(ldata->ld_lee, &ldata->ld_reclen, cname, pfid);
+ oldlee = ldata->ld_lee;
+ oldlen = ldata->ld_reclen;
+ linkea_next_entry(ldata);
+ while (ldata->ld_lee != NULL) {
+ ldata->ld_reclen = (ldata->ld_lee->lee_reclen[0] << 8) |
+ ldata->ld_lee->lee_reclen[1];
+ if (unlikely(ldata->ld_reclen == oldlen &&
+ memcmp(ldata->ld_lee, oldlee, oldlen) == 0)) {
+ linkea_del_buf(ldata, cname);
+ removed++;
+ } else {
+ linkea_next_entry(ldata);
+ }
+ }
+ ldata->ld_lee = oldlee;
+ ldata->ld_reclen = oldlen;
+ return removed;
+}
+
+/**