X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs2.git;a=blobdiff_plain;f=yaffs_guts.c;h=c52ff842d77285417eba7579ae437e2ae539a7b9;hp=7678896692927f47290c1b8b6dadc1da7deb41d0;hb=9a6f486e56f927eeb8dc7e4e0d84f6bb95eeaa0f;hpb=3de09ef5a181999f7340462154034b727827e4fa diff --git a/yaffs_guts.c b/yaffs_guts.c index 7678896..c52ff84 100644 --- a/yaffs_guts.c +++ b/yaffs_guts.c @@ -4534,13 +4534,11 @@ int yaffs_get_obj_name(struct yaffs_obj *obj, YCHAR *name, int buffer_size) if (obj->hdr_chunk > 0) { result = yaffs_rd_chunk_tags_nand(obj->my_dev, - obj->hdr_chunk, - buffer, NULL); + obj->hdr_chunk, buffer, NULL); + if (result == YAFFS_OK) + yaffs_load_name_from_oh(obj->my_dev, name, + oh->name, buffer_size); } - if (result == YAFFS_OK) - yaffs_load_name_from_oh(obj->my_dev, name, oh->name, - buffer_size); - yaffs_release_temp_buffer(obj->my_dev, buffer); } @@ -4801,6 +4799,18 @@ int yaffs_guts_format_dev(struct yaffs_dev *dev) return YAFFS_OK; } +/* + * If the dev is mounted r/w then the cleanup will happen during + * yaffs_guts_initialise. However if the dev is mounted ro then + * the cleanup will be dfered until yaffs is remounted r/w. + */ +void yaffs_guts_cleanup(struct yaffs_dev *dev) +{ + yaffs_strip_deleted_objs(dev); + yaffs_fix_hanging_objs(dev); + if (dev->param.empty_lost_n_found) + yaffs_empty_l_n_f(dev); +} int yaffs_guts_initialise(struct yaffs_dev *dev) { @@ -5014,10 +5024,7 @@ int yaffs_guts_initialise(struct yaffs_dev *dev) init_failed = 1; } - yaffs_strip_deleted_objs(dev); - yaffs_fix_hanging_objs(dev); - if (dev->param.empty_lost_n_found) - yaffs_empty_l_n_f(dev); + yaffs_guts_cleanup(dev); } if (init_failed) {