- /* process any xattrib modifications */
- if (xmod)
- yaffs_apply_xattrib_mod(in, (char *)buffer, xmod);
-
- /* Tags */
- yaffs_init_tags(&new_tags);
- in->serial++;
- new_tags.chunk_id = 0;
- new_tags.obj_id = in->obj_id;
- new_tags.serial_number = in->serial;
-
- /* Add extra info for file header */
- new_tags.extra_available = 1;
- new_tags.extra_parent_id = oh->parent_obj_id;
- new_tags.extra_length = oh->file_size;
- new_tags.extra_is_shrink = oh->is_shrink;
- new_tags.extra_equiv_id = oh->equiv_id;
- new_tags.extra_shadows = (oh->shadows_obj > 0) ? 1 : 0;
- new_tags.extra_obj_type = in->variant_type;
- yaffs_verify_oh(in, oh, &new_tags, 1);
-
- /* Create new chunk in NAND */
- new_chunk_id =
- yaffs_write_new_chunk(dev, buffer, &new_tags,
- (prev_chunk_id > 0) ? 1 : 0);
-
- if (new_chunk_id >= 0) {
-
- in->hdr_chunk = new_chunk_id;
-
- if (prev_chunk_id > 0) {
- yaffs_chunk_del(dev, prev_chunk_id, 1,
- __LINE__);
- }