-#ifdef CONFIG_JFFS2_FS_XATTR
- case JFFS2_NODETYPE_XATTR: {
- struct jffs2_xattr_datum *xd;
- struct jffs2_sum_xattr_flash *spx;
-
- spx = (struct jffs2_sum_xattr_flash *)sp;
- dbg_summary("xattr at %#08x-%#08x (xid=%u, version=%u)\n",
- jeb->offset + je32_to_cpu(spx->offset),
- jeb->offset + je32_to_cpu(spx->offset) + je32_to_cpu(spx->totlen),
- je32_to_cpu(spx->xid), je32_to_cpu(spx->version));
-
- xd = jffs2_setup_xattr_datum(c, je32_to_cpu(spx->xid),
- je32_to_cpu(spx->version));
- if (IS_ERR(xd))
- return PTR_ERR(xd);
- if (xd->version > je32_to_cpu(spx->version)) {
- /* node is not the newest one */
- struct jffs2_raw_node_ref *raw
- = sum_link_node_ref(c, jeb, je32_to_cpu(spx->offset) | REF_UNCHECKED,
- PAD(je32_to_cpu(spx->totlen)), NULL);
- raw->next_in_ino = xd->node->next_in_ino;
- xd->node->next_in_ino = raw;
- } else {
- xd->version = je32_to_cpu(spx->version);
- sum_link_node_ref(c, jeb, je32_to_cpu(spx->offset) | REF_UNCHECKED,
- PAD(je32_to_cpu(spx->totlen)), (void *)xd);
- }
- *pseudo_random += je32_to_cpu(spx->xid);
- sp += JFFS2_SUMMARY_XATTR_SIZE;
-
- break;
- }
- case JFFS2_NODETYPE_XREF: {
- struct jffs2_xattr_ref *ref;
- struct jffs2_sum_xref_flash *spr;
-
- spr = (struct jffs2_sum_xref_flash *)sp;
- dbg_summary("xref at %#08x-%#08x\n",
- jeb->offset + je32_to_cpu(spr->offset),
- jeb->offset + je32_to_cpu(spr->offset) +
- (uint32_t)PAD(sizeof(struct jffs2_raw_xref)));
-
- ref = jffs2_alloc_xattr_ref();
- if (!ref) {
- JFFS2_NOTICE("allocation of xattr_datum failed\n");
- return -ENOMEM;
- }
- ref->next = c->xref_temp;
- c->xref_temp = ref;