Lines Matching refs:in

40 static int yaffs_wr_data_obj(struct yaffs_obj *in, int inode_chunk,
986 static int yaffs_find_chunk_in_file(struct yaffs_obj *in, int inode_chunk, in yaffs_find_chunk_in_file() argument
994 struct yaffs_dev *dev = in->my_dev; in yaffs_find_chunk_in_file()
1001 tn = yaffs_find_tnode_0(dev, &in->variant.file_variant, inode_chunk); in yaffs_find_chunk_in_file()
1008 ret_val = yaffs_find_chunk_in_group(dev, the_chunk, tags, in->obj_id, in yaffs_find_chunk_in_file()
1013 static int yaffs_find_del_file_chunk(struct yaffs_obj *in, int inode_chunk, in yaffs_find_del_file_chunk() argument
1020 struct yaffs_dev *dev = in->my_dev; in yaffs_find_del_file_chunk()
1028 tn = yaffs_find_tnode_0(dev, &in->variant.file_variant, inode_chunk); in yaffs_find_del_file_chunk()
1035 ret_val = yaffs_find_chunk_in_group(dev, the_chunk, tags, in->obj_id, in yaffs_find_del_file_chunk()
1045 int yaffs_put_chunk_in_file(struct yaffs_obj *in, int inode_chunk, in yaffs_put_chunk_in_file() argument
1056 struct yaffs_dev *dev = in->my_dev; in yaffs_put_chunk_in_file()
1062 if (in->variant_type != YAFFS_OBJECT_TYPE_FILE) { in yaffs_put_chunk_in_file()
1079 &in->variant.file_variant, in yaffs_put_chunk_in_file()
1125 yaffs_find_chunk_in_file(in, inode_chunk, in yaffs_put_chunk_in_file()
1171 in->n_data_chunks++; in yaffs_put_chunk_in_file()
1202 static int yaffs_soft_del_worker(struct yaffs_obj *in, struct yaffs_tnode *tn, in yaffs_soft_del_worker() argument
1208 struct yaffs_dev *dev = in->my_dev; in yaffs_soft_del_worker()
1219 yaffs_soft_del_worker(in, in yaffs_soft_del_worker()
1582 static void yaffs_invalidate_whole_cache(struct yaffs_obj *in) in yaffs_invalidate_whole_cache() argument
1585 struct yaffs_dev *dev = in->my_dev; in yaffs_invalidate_whole_cache()
1590 if (dev->cache[i].object == in) in yaffs_invalidate_whole_cache()
1647 static int yaffs_generic_obj_del(struct yaffs_obj *in) in yaffs_generic_obj_del() argument
1650 yaffs_invalidate_whole_cache(in); in yaffs_generic_obj_del()
1652 if (in->my_dev->param.is_yaffs2 && in->parent != in->my_dev->del_dir) { in yaffs_generic_obj_del()
1654 yaffs_change_obj_name(in, in->my_dev->del_dir, _Y("deleted"), 0, in yaffs_generic_obj_del()
1658 yaffs_remove_obj_from_dir(in); in yaffs_generic_obj_del()
1659 yaffs_chunk_del(in->my_dev, in->hdr_chunk, 1, __LINE__); in yaffs_generic_obj_del()
1660 in->hdr_chunk = 0; in yaffs_generic_obj_del()
1662 yaffs_free_obj(in); in yaffs_generic_obj_del()
1885 static void yaffs_hash_obj(struct yaffs_obj *in) in yaffs_hash_obj() argument
1887 int bucket = yaffs_hash_fn(in->obj_id); in yaffs_hash_obj()
1888 struct yaffs_dev *dev = in->my_dev; in yaffs_hash_obj()
1890 list_add(&in->hash_link, &dev->obj_bucket[bucket].list); in yaffs_hash_obj()
1898 struct yaffs_obj *in; in yaffs_find_by_number() local
1902 in = list_entry(i, struct yaffs_obj, hash_link); in yaffs_find_by_number()
1903 if (in->obj_id == number) { in yaffs_find_by_number()
1905 if (in->defered_free) in yaffs_find_by_number()
1907 return in; in yaffs_find_by_number()
2120 struct yaffs_obj *in; in yaffs_create_obj() local
2135 in = yaffs_new_obj(dev, -1, type); in yaffs_create_obj()
2137 if (!in) { in yaffs_create_obj()
2142 in->hdr_chunk = 0; in yaffs_create_obj()
2143 in->valid = 1; in yaffs_create_obj()
2144 in->variant_type = type; in yaffs_create_obj()
2146 in->yst_mode = mode; in yaffs_create_obj()
2148 yaffs_attribs_init(in, gid, uid, rdev); in yaffs_create_obj()
2150 in->n_data_chunks = 0; in yaffs_create_obj()
2152 yaffs_set_obj_name(in, name); in yaffs_create_obj()
2153 in->dirty = 1; in yaffs_create_obj()
2155 yaffs_add_obj_to_dir(parent, in); in yaffs_create_obj()
2157 in->my_dev = parent->my_dev; in yaffs_create_obj()
2161 in->variant.symlink_variant.alias = str; in yaffs_create_obj()
2164 in->variant.hardlink_variant.equiv_obj = equiv_obj; in yaffs_create_obj()
2165 in->variant.hardlink_variant.equiv_id = equiv_obj->obj_id; in yaffs_create_obj()
2166 list_add(&in->hard_links, &equiv_obj->hard_links); in yaffs_create_obj()
2176 if (yaffs_update_oh(in, name, 0, 0, 0, NULL) < 0) { in yaffs_create_obj()
2178 yaffs_del_obj(in); in yaffs_create_obj()
2179 in = NULL; in yaffs_create_obj()
2182 if (in) in yaffs_create_obj()
2185 return in; in yaffs_create_obj()
2906 static int yaffs_rd_data_obj(struct yaffs_obj *in, int inode_chunk, u8 * buffer) in yaffs_rd_data_obj() argument
2908 int nand_chunk = yaffs_find_chunk_in_file(in, inode_chunk, NULL); in yaffs_rd_data_obj()
2911 return yaffs_rd_chunk_tags_nand(in->my_dev, nand_chunk, in yaffs_rd_data_obj()
2918 memset(buffer, 0, in->my_dev->data_bytes_per_chunk); in yaffs_rd_data_obj()
2982 static int yaffs_wr_data_obj(struct yaffs_obj *in, int inode_chunk, in yaffs_wr_data_obj() argument
2994 struct yaffs_dev *dev = in->my_dev; in yaffs_wr_data_obj()
3002 prev_chunk_id = yaffs_find_chunk_in_file(in, inode_chunk, &prev_tags); in yaffs_wr_data_obj()
3004 !yaffs_put_chunk_in_file(in, inode_chunk, 0, 0)) in yaffs_wr_data_obj()
3011 new_tags.obj_id = in->obj_id; in yaffs_wr_data_obj()
3027 yaffs_put_chunk_in_file(in, inode_chunk, new_chunk_id, 0); in yaffs_wr_data_obj()
3032 yaffs_verify_file_sane(in); in yaffs_wr_data_obj()
3158 static void yaffs_check_obj_details_loaded(struct yaffs_obj *in) in yaffs_check_obj_details_loaded() argument
3165 if (!in || !in->lazy_loaded || in->hdr_chunk < 1) in yaffs_check_obj_details_loaded()
3168 dev = in->my_dev; in yaffs_check_obj_details_loaded()
3169 in->lazy_loaded = 0; in yaffs_check_obj_details_loaded()
3172 yaffs_rd_chunk_tags_nand(dev, in->hdr_chunk, buf, &tags); in yaffs_check_obj_details_loaded()
3175 in->yst_mode = oh->yst_mode; in yaffs_check_obj_details_loaded()
3176 yaffs_load_attribs(in, oh); in yaffs_check_obj_details_loaded()
3177 yaffs_set_obj_name_from_oh(in, oh); in yaffs_check_obj_details_loaded()
3179 if (in->variant_type == YAFFS_OBJECT_TYPE_SYMLINK) { in yaffs_check_obj_details_loaded()
3180 in->variant.symlink_variant.alias = in yaffs_check_obj_details_loaded()
3258 int yaffs_update_oh(struct yaffs_obj *in, const YCHAR *name, int force, in yaffs_update_oh() argument
3263 struct yaffs_dev *dev = in->my_dev; in yaffs_update_oh()
3277 if (in->fake && in != dev->root_dir && !force && !xmod) in yaffs_update_oh()
3281 yaffs_check_obj_details_loaded(in); in yaffs_update_oh()
3283 buffer = yaffs_get_temp_buffer(in->my_dev); in yaffs_update_oh()
3286 prev_chunk_id = in->hdr_chunk; in yaffs_update_oh()
3292 yaffs_verify_oh(in, oh, &old_tags, 0); in yaffs_update_oh()
3299 oh->type = in->variant_type; in yaffs_update_oh()
3300 oh->yst_mode = in->yst_mode; in yaffs_update_oh()
3303 yaffs_load_attribs_oh(oh, in); in yaffs_update_oh()
3305 if (in->parent) in yaffs_update_oh()
3306 oh->parent_obj_id = in->parent->obj_id; in yaffs_update_oh()
3321 switch (in->variant_type) { in yaffs_update_oh()
3328 file_size = in->variant.file_variant.file_size; in yaffs_update_oh()
3332 oh->equiv_id = in->variant.hardlink_variant.equiv_id; in yaffs_update_oh()
3341 alias = in->variant.symlink_variant.alias; in yaffs_update_oh()
3351 yaffs_apply_xattrib_mod(in, (char *)buffer, xmod); in yaffs_update_oh()
3355 in->serial++; in yaffs_update_oh()
3357 new_tags.obj_id = in->obj_id; in yaffs_update_oh()
3358 new_tags.serial_number = in->serial; in yaffs_update_oh()
3367 new_tags.extra_obj_type = in->variant_type; in yaffs_update_oh()
3368 yaffs_verify_oh(in, oh, &new_tags, 1); in yaffs_update_oh()
3381 in->hdr_chunk = new_chunk_id; in yaffs_update_oh()
3386 if (!yaffs_obj_cache_dirty(in)) in yaffs_update_oh()
3387 in->dirty = 0; in yaffs_update_oh()
3392 bi = yaffs_get_block_info(in->my_dev, in yaffs_update_oh()
3394 in->my_dev->param.chunks_per_block); in yaffs_update_oh()
3412 int yaffs_file_rd(struct yaffs_obj *in, u8 * buffer, loff_t offset, int n_bytes) in yaffs_file_rd() argument
3422 dev = in->my_dev; in yaffs_file_rd()
3436 cache = yaffs_find_chunk_cache(in, chunk); in yaffs_file_rd()
3451 yaffs_grab_chunk_cache(in->my_dev); in yaffs_file_rd()
3452 cache->object = in; in yaffs_file_rd()
3456 yaffs_rd_data_obj(in, chunk, in yaffs_file_rd()
3473 yaffs_rd_data_obj(in, chunk, local_buffer); in yaffs_file_rd()
3481 yaffs_rd_data_obj(in, chunk, buffer); in yaffs_file_rd()
3491 int yaffs_do_file_wr(struct yaffs_obj *in, const u8 *buffer, loff_t offset, in yaffs_do_file_wr() argument
3507 dev = in->my_dev; in yaffs_do_file_wr()
3537 if (chunk_start > in->variant.file_variant.file_size) in yaffs_do_file_wr()
3541 in->variant.file_variant.file_size - in yaffs_do_file_wr()
3571 cache = yaffs_find_chunk_cache(in, chunk); in yaffs_do_file_wr()
3576 cache->object = in; in yaffs_do_file_wr()
3580 yaffs_rd_data_obj(in, chunk, in yaffs_do_file_wr()
3623 yaffs_rd_data_obj(in, chunk, local_buffer); in yaffs_do_file_wr()
3627 yaffs_wr_data_obj(in, chunk, in yaffs_do_file_wr()
3637 yaffs_wr_data_obj(in, chunk, buffer, in yaffs_do_file_wr()
3642 yaffs_invalidate_chunk_cache(in, chunk); in yaffs_do_file_wr()
3655 if ((start_write + n_done) > in->variant.file_variant.file_size) in yaffs_do_file_wr()
3656 in->variant.file_variant.file_size = (start_write + n_done); in yaffs_do_file_wr()
3658 in->dirty = 1; in yaffs_do_file_wr()
3662 int yaffs_wr_file(struct yaffs_obj *in, const u8 *buffer, loff_t offset, in yaffs_wr_file() argument
3665 yaffs2_handle_hole(in, offset); in yaffs_wr_file()
3666 return yaffs_do_file_wr(in, buffer, offset, n_bytes, write_through); in yaffs_wr_file()
3671 static void yaffs_prune_chunks(struct yaffs_obj *in, loff_t new_size) in yaffs_prune_chunks() argument
3674 struct yaffs_dev *dev = in->my_dev; in yaffs_prune_chunks()
3675 loff_t old_size = in->variant.file_variant.file_size; in yaffs_prune_chunks()
3701 chunk_id = yaffs_find_del_file_chunk(in, i, NULL); in yaffs_prune_chunks()
3715 in->n_data_chunks--; in yaffs_prune_chunks()
3751 int yaffs_resize_file(struct yaffs_obj *in, loff_t new_size) in yaffs_resize_file() argument
3753 struct yaffs_dev *dev = in->my_dev; in yaffs_resize_file()
3754 loff_t old_size = in->variant.file_variant.file_size; in yaffs_resize_file()
3756 yaffs_flush_file_cache(in); in yaffs_resize_file()
3757 yaffs_invalidate_whole_cache(in); in yaffs_resize_file()
3761 if (in->variant_type != YAFFS_OBJECT_TYPE_FILE) in yaffs_resize_file()
3768 yaffs2_handle_hole(in, new_size); in yaffs_resize_file()
3769 in->variant.file_variant.file_size = new_size; in yaffs_resize_file()
3772 yaffs_resize_file_down(in, new_size); in yaffs_resize_file()
3780 if (in->parent && in yaffs_resize_file()
3781 !in->is_shadowed && in yaffs_resize_file()
3782 in->parent->obj_id != YAFFS_OBJECTID_UNLINKED && in yaffs_resize_file()
3783 in->parent->obj_id != YAFFS_OBJECTID_DELETED) in yaffs_resize_file()
3784 yaffs_update_oh(in, NULL, 0, 0, 0, NULL); in yaffs_resize_file()
3789 int yaffs_flush_file(struct yaffs_obj *in, int update_time, int data_sync) in yaffs_flush_file() argument
3791 if (!in->dirty) in yaffs_flush_file()
3794 yaffs_flush_file_cache(in); in yaffs_flush_file()
3800 yaffs_load_current_time(in, 0, 0); in yaffs_flush_file()
3802 return (yaffs_update_oh(in, NULL, 0, 0, 0, NULL) >= 0) ? in yaffs_flush_file()
3811 static int yaffs_unlink_file_if_needed(struct yaffs_obj *in) in yaffs_unlink_file_if_needed() argument
3815 struct yaffs_dev *dev = in->my_dev; in yaffs_unlink_file_if_needed()
3817 if (!in->my_inode) in yaffs_unlink_file_if_needed()
3822 yaffs_change_obj_name(in, in->my_dev->del_dir, in yaffs_unlink_file_if_needed()
3826 in->obj_id); in yaffs_unlink_file_if_needed()
3827 in->deleted = 1; in yaffs_unlink_file_if_needed()
3828 in->my_dev->n_deleted_files++; in yaffs_unlink_file_if_needed()
3830 yaffs_resize_file(in, 0); in yaffs_unlink_file_if_needed()
3831 yaffs_soft_del_file(in); in yaffs_unlink_file_if_needed()
3834 yaffs_change_obj_name(in, in->my_dev->unlinked_dir, in yaffs_unlink_file_if_needed()
3840 int yaffs_del_file(struct yaffs_obj *in) in yaffs_del_file() argument
3844 struct yaffs_dev *dev = in->my_dev; in yaffs_del_file()
3847 yaffs_resize_file(in, 0); in yaffs_del_file()
3849 if (in->n_data_chunks > 0) { in yaffs_del_file()
3853 if (!in->unlinked) in yaffs_del_file()
3854 ret_val = yaffs_unlink_file_if_needed(in); in yaffs_del_file()
3856 deleted = in->deleted; in yaffs_del_file()
3858 if (ret_val == YAFFS_OK && in->unlinked && !in->deleted) { in yaffs_del_file()
3859 in->deleted = 1; in yaffs_del_file()
3861 in->my_dev->n_deleted_files++; in yaffs_del_file()
3862 yaffs_soft_del_file(in); in yaffs_del_file()
3867 yaffs_free_tnode(in->my_dev, in->variant.file_variant.top); in yaffs_del_file()
3868 in->variant.file_variant.top = NULL; in yaffs_del_file()
3869 yaffs_generic_obj_del(in); in yaffs_del_file()
3891 static int yaffs_del_symlink(struct yaffs_obj *in) in yaffs_del_symlink() argument
3893 kfree(in->variant.symlink_variant.alias); in yaffs_del_symlink()
3894 in->variant.symlink_variant.alias = NULL; in yaffs_del_symlink()
3896 return yaffs_generic_obj_del(in); in yaffs_del_symlink()
3899 static int yaffs_del_link(struct yaffs_obj *in) in yaffs_del_link() argument
3904 list_del_init(&in->hard_links); in yaffs_del_link()
3905 return yaffs_generic_obj_del(in); in yaffs_del_link()
4149 struct yaffs_obj *in; in yaffs_link_fixup() local
4153 in = yaffs_find_by_number(dev, in yaffs_link_fixup()
4156 if (in) { in yaffs_link_fixup()
4158 hl->variant.hardlink_variant.equiv_obj = in; in yaffs_link_fixup()
4159 list_add(&hl->hard_links, &in->hard_links); in yaffs_link_fixup()