- if (!in->valid && in->variantType !=
- (oh ? oh->type : tags.extraObjectType))
- T(YAFFS_TRACE_ERROR, (
- TSTR("yaffs tragedy: Bad object type, "
- TCONT("%d != %d, for object %d at chunk ")
- TCONT("%d during scan")
- TENDSTR), oh ?
- oh->type : tags.extraObjectType,
- in->variantType, tags.objectId,
- chunk));
-
- if (!in->valid &&
- (tags.objectId == YAFFS_OBJECTID_ROOT ||
- tags.objectId ==
- YAFFS_OBJECTID_LOSTNFOUND)) {
- /* We only load some info, don't fiddle with directory structure */
- in->valid = 1;
-
- if (oh) {
-
- in->yst_mode = oh->yst_mode;
-#ifdef CONFIG_YAFFS_WINCE
- in->win_atime[0] = oh->win_atime[0];
- in->win_ctime[0] = oh->win_ctime[0];
- in->win_mtime[0] = oh->win_mtime[0];
- in->win_atime[1] = oh->win_atime[1];
- in->win_ctime[1] = oh->win_ctime[1];
- in->win_mtime[1] = oh->win_mtime[1];
-#else
- in->yst_uid = oh->yst_uid;
- in->yst_gid = oh->yst_gid;
- in->yst_atime = oh->yst_atime;
- in->yst_mtime = oh->yst_mtime;
- in->yst_ctime = oh->yst_ctime;
- in->yst_rdev = oh->yst_rdev;
-
- in->lazyLoaded = 0;
-
-#endif
- } else
- in->lazyLoaded = 1;
-
- in->hdrChunk = chunk;
-
- } else if (!in->valid) {
- /* we need to load this info */
-
- in->valid = 1;
- in->hdrChunk = chunk;
-
- if (oh) {
- in->variantType = oh->type;
-
- in->yst_mode = oh->yst_mode;
-#ifdef CONFIG_YAFFS_WINCE
- in->win_atime[0] = oh->win_atime[0];
- in->win_ctime[0] = oh->win_ctime[0];
- in->win_mtime[0] = oh->win_mtime[0];
- in->win_atime[1] = oh->win_atime[1];
- in->win_ctime[1] = oh->win_ctime[1];
- in->win_mtime[1] = oh->win_mtime[1];
-#else
- in->yst_uid = oh->yst_uid;
- in->yst_gid = oh->yst_gid;
- in->yst_atime = oh->yst_atime;
- in->yst_mtime = oh->yst_mtime;
- in->yst_ctime = oh->yst_ctime;
- in->yst_rdev = oh->yst_rdev;
-#endif
-
- if (oh->shadowsObject > 0)
- yaffs_handle_shadowed_obj(dev,
- oh->
- shadowsObject,
- 1);
-
-
-
- yaffs_set_obj_name_from_oh(in, oh);
- parent =
- yaffs_find_or_create_by_number
- (dev, oh->parentObjectId,
- YAFFS_OBJECT_TYPE_DIRECTORY);
-
- fileSize = oh->fileSize;
- isShrink = oh->isShrink;
- equivalentObjectId = oh->equivalentObjectId;
-
- } else {
- in->variantType = tags.extraObjectType;
- parent =
- yaffs_find_or_create_by_number
- (dev, tags.extraParentObjectId,
- YAFFS_OBJECT_TYPE_DIRECTORY);
- fileSize = tags.extraFileLength;
- isShrink = tags.extraIsShrinkHeader;
- equivalentObjectId = tags.extraEquivalentObjectId;
- in->lazyLoaded = 1;
-
- }
- in->dirty = 0;
-
- if (!parent)
- alloc_failed = 1;