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()
1886 static void yaffs_hash_obj(struct yaffs_obj *in) in yaffs_hash_obj() argument
1888 int bucket = yaffs_hash_fn(in->obj_id); in yaffs_hash_obj()
1889 struct yaffs_dev *dev = in->my_dev; in yaffs_hash_obj()
1891 list_add(&in->hash_link, &dev->obj_bucket[bucket].list); in yaffs_hash_obj()
1899 struct yaffs_obj *in; in yaffs_find_by_number() local
1903 in = list_entry(i, struct yaffs_obj, hash_link); in yaffs_find_by_number()
1904 if (in->obj_id == number) { in yaffs_find_by_number()
1906 if (in->defered_free) in yaffs_find_by_number()
1908 return in; in yaffs_find_by_number()
2121 struct yaffs_obj *in; in yaffs_create_obj() local
2136 in = yaffs_new_obj(dev, -1, type); in yaffs_create_obj()
2138 if (!in) { in yaffs_create_obj()
2143 in->hdr_chunk = 0; in yaffs_create_obj()
2144 in->valid = 1; in yaffs_create_obj()
2145 in->variant_type = type; in yaffs_create_obj()
2147 in->yst_mode = mode; in yaffs_create_obj()
2149 yaffs_attribs_init(in, gid, uid, rdev); in yaffs_create_obj()
2151 in->n_data_chunks = 0; in yaffs_create_obj()
2153 yaffs_set_obj_name(in, name); in yaffs_create_obj()
2154 in->dirty = 1; in yaffs_create_obj()
2156 yaffs_add_obj_to_dir(parent, in); in yaffs_create_obj()
2158 in->my_dev = parent->my_dev; in yaffs_create_obj()
2162 in->variant.symlink_variant.alias = str; in yaffs_create_obj()
2165 in->variant.hardlink_variant.equiv_obj = equiv_obj; in yaffs_create_obj()
2166 in->variant.hardlink_variant.equiv_id = equiv_obj->obj_id; in yaffs_create_obj()
2167 list_add(&in->hard_links, &equiv_obj->hard_links); in yaffs_create_obj()
2177 if (yaffs_update_oh(in, name, 0, 0, 0, NULL) < 0) { in yaffs_create_obj()
2179 yaffs_del_obj(in); in yaffs_create_obj()
2180 in = NULL; in yaffs_create_obj()
2183 if (in) in yaffs_create_obj()
2186 return in; in yaffs_create_obj()
2907 static int yaffs_rd_data_obj(struct yaffs_obj *in, int inode_chunk, u8 * buffer) in yaffs_rd_data_obj() argument
2909 int nand_chunk = yaffs_find_chunk_in_file(in, inode_chunk, NULL); in yaffs_rd_data_obj()
2912 return yaffs_rd_chunk_tags_nand(in->my_dev, nand_chunk, in yaffs_rd_data_obj()
2919 memset(buffer, 0, in->my_dev->data_bytes_per_chunk); in yaffs_rd_data_obj()
2983 static int yaffs_wr_data_obj(struct yaffs_obj *in, int inode_chunk, in yaffs_wr_data_obj() argument
2995 struct yaffs_dev *dev = in->my_dev; in yaffs_wr_data_obj()
3003 prev_chunk_id = yaffs_find_chunk_in_file(in, inode_chunk, &prev_tags); in yaffs_wr_data_obj()
3005 !yaffs_put_chunk_in_file(in, inode_chunk, 0, 0)) in yaffs_wr_data_obj()
3012 new_tags.obj_id = in->obj_id; in yaffs_wr_data_obj()
3028 yaffs_put_chunk_in_file(in, inode_chunk, new_chunk_id, 0); in yaffs_wr_data_obj()
3033 yaffs_verify_file_sane(in); in yaffs_wr_data_obj()
3159 static void yaffs_check_obj_details_loaded(struct yaffs_obj *in) in yaffs_check_obj_details_loaded() argument
3166 if (!in || !in->lazy_loaded || in->hdr_chunk < 1) in yaffs_check_obj_details_loaded()
3169 dev = in->my_dev; in yaffs_check_obj_details_loaded()
3170 in->lazy_loaded = 0; in yaffs_check_obj_details_loaded()
3173 yaffs_rd_chunk_tags_nand(dev, in->hdr_chunk, buf, &tags); in yaffs_check_obj_details_loaded()
3176 in->yst_mode = oh->yst_mode; in yaffs_check_obj_details_loaded()
3177 yaffs_load_attribs(in, oh); in yaffs_check_obj_details_loaded()
3178 yaffs_set_obj_name_from_oh(in, oh); in yaffs_check_obj_details_loaded()
3180 if (in->variant_type == YAFFS_OBJECT_TYPE_SYMLINK) { in yaffs_check_obj_details_loaded()
3181 in->variant.symlink_variant.alias = in yaffs_check_obj_details_loaded()
3259 int yaffs_update_oh(struct yaffs_obj *in, const YCHAR *name, int force, in yaffs_update_oh() argument
3264 struct yaffs_dev *dev = in->my_dev; in yaffs_update_oh()
3278 if (in->fake && in != dev->root_dir && !force && !xmod) in yaffs_update_oh()
3282 yaffs_check_obj_details_loaded(in); in yaffs_update_oh()
3284 buffer = yaffs_get_temp_buffer(in->my_dev); in yaffs_update_oh()
3287 prev_chunk_id = in->hdr_chunk; in yaffs_update_oh()
3293 yaffs_verify_oh(in, oh, &old_tags, 0); in yaffs_update_oh()
3300 oh->type = in->variant_type; in yaffs_update_oh()
3301 oh->yst_mode = in->yst_mode; in yaffs_update_oh()
3304 yaffs_load_attribs_oh(oh, in); in yaffs_update_oh()
3306 if (in->parent) in yaffs_update_oh()
3307 oh->parent_obj_id = in->parent->obj_id; in yaffs_update_oh()
3322 switch (in->variant_type) { in yaffs_update_oh()
3329 file_size = in->variant.file_variant.file_size; in yaffs_update_oh()
3333 oh->equiv_id = in->variant.hardlink_variant.equiv_id; in yaffs_update_oh()
3342 alias = in->variant.symlink_variant.alias; in yaffs_update_oh()
3352 yaffs_apply_xattrib_mod(in, (char *)buffer, xmod); in yaffs_update_oh()
3356 in->serial++; in yaffs_update_oh()
3358 new_tags.obj_id = in->obj_id; in yaffs_update_oh()
3359 new_tags.serial_number = in->serial; in yaffs_update_oh()
3368 new_tags.extra_obj_type = in->variant_type; in yaffs_update_oh()
3369 yaffs_verify_oh(in, oh, &new_tags, 1); in yaffs_update_oh()
3382 in->hdr_chunk = new_chunk_id; in yaffs_update_oh()
3387 if (!yaffs_obj_cache_dirty(in)) in yaffs_update_oh()
3388 in->dirty = 0; in yaffs_update_oh()
3393 bi = yaffs_get_block_info(in->my_dev, in yaffs_update_oh()
3395 in->my_dev->param.chunks_per_block); in yaffs_update_oh()
3413 int yaffs_file_rd(struct yaffs_obj *in, u8 * buffer, loff_t offset, int n_bytes) in yaffs_file_rd() argument
3423 dev = in->my_dev; in yaffs_file_rd()
3437 cache = yaffs_find_chunk_cache(in, chunk); in yaffs_file_rd()
3452 yaffs_grab_chunk_cache(in->my_dev); in yaffs_file_rd()
3453 cache->object = in; in yaffs_file_rd()
3457 yaffs_rd_data_obj(in, chunk, in yaffs_file_rd()
3474 yaffs_rd_data_obj(in, chunk, local_buffer); in yaffs_file_rd()
3482 yaffs_rd_data_obj(in, chunk, buffer); in yaffs_file_rd()
3492 int yaffs_do_file_wr(struct yaffs_obj *in, const u8 *buffer, loff_t offset, in yaffs_do_file_wr() argument
3508 dev = in->my_dev; in yaffs_do_file_wr()
3538 if (chunk_start > in->variant.file_variant.file_size) in yaffs_do_file_wr()
3542 in->variant.file_variant.file_size - in yaffs_do_file_wr()
3572 cache = yaffs_find_chunk_cache(in, chunk); in yaffs_do_file_wr()
3577 cache->object = in; in yaffs_do_file_wr()
3581 yaffs_rd_data_obj(in, chunk, in yaffs_do_file_wr()
3624 yaffs_rd_data_obj(in, chunk, local_buffer); in yaffs_do_file_wr()
3628 yaffs_wr_data_obj(in, chunk, in yaffs_do_file_wr()
3638 yaffs_wr_data_obj(in, chunk, buffer, in yaffs_do_file_wr()
3643 yaffs_invalidate_chunk_cache(in, chunk); in yaffs_do_file_wr()
3656 if ((start_write + n_done) > in->variant.file_variant.file_size) in yaffs_do_file_wr()
3657 in->variant.file_variant.file_size = (start_write + n_done); in yaffs_do_file_wr()
3659 in->dirty = 1; in yaffs_do_file_wr()
3663 int yaffs_wr_file(struct yaffs_obj *in, const u8 *buffer, loff_t offset, in yaffs_wr_file() argument
3666 yaffs2_handle_hole(in, offset); in yaffs_wr_file()
3667 return yaffs_do_file_wr(in, buffer, offset, n_bytes, write_through); in yaffs_wr_file()
3672 static void yaffs_prune_chunks(struct yaffs_obj *in, loff_t new_size) in yaffs_prune_chunks() argument
3675 struct yaffs_dev *dev = in->my_dev; in yaffs_prune_chunks()
3676 loff_t old_size = in->variant.file_variant.file_size; in yaffs_prune_chunks()
3702 chunk_id = yaffs_find_del_file_chunk(in, i, NULL); in yaffs_prune_chunks()
3716 in->n_data_chunks--; in yaffs_prune_chunks()
3752 int yaffs_resize_file(struct yaffs_obj *in, loff_t new_size) in yaffs_resize_file() argument
3754 struct yaffs_dev *dev = in->my_dev; in yaffs_resize_file()
3755 loff_t old_size = in->variant.file_variant.file_size; in yaffs_resize_file()
3757 yaffs_flush_file_cache(in); in yaffs_resize_file()
3758 yaffs_invalidate_whole_cache(in); in yaffs_resize_file()
3762 if (in->variant_type != YAFFS_OBJECT_TYPE_FILE) in yaffs_resize_file()
3769 yaffs2_handle_hole(in, new_size); in yaffs_resize_file()
3770 in->variant.file_variant.file_size = new_size; in yaffs_resize_file()
3773 yaffs_resize_file_down(in, new_size); in yaffs_resize_file()
3781 if (in->parent && in yaffs_resize_file()
3782 !in->is_shadowed && in yaffs_resize_file()
3783 in->parent->obj_id != YAFFS_OBJECTID_UNLINKED && in yaffs_resize_file()
3784 in->parent->obj_id != YAFFS_OBJECTID_DELETED) in yaffs_resize_file()
3785 yaffs_update_oh(in, NULL, 0, 0, 0, NULL); in yaffs_resize_file()
3790 int yaffs_flush_file(struct yaffs_obj *in, int update_time, int data_sync) in yaffs_flush_file() argument
3792 if (!in->dirty) in yaffs_flush_file()
3795 yaffs_flush_file_cache(in); in yaffs_flush_file()
3801 yaffs_load_current_time(in, 0, 0); in yaffs_flush_file()
3803 return (yaffs_update_oh(in, NULL, 0, 0, 0, NULL) >= 0) ? in yaffs_flush_file()
3812 static int yaffs_unlink_file_if_needed(struct yaffs_obj *in) in yaffs_unlink_file_if_needed() argument
3816 struct yaffs_dev *dev = in->my_dev; in yaffs_unlink_file_if_needed()
3818 if (!in->my_inode) in yaffs_unlink_file_if_needed()
3823 yaffs_change_obj_name(in, in->my_dev->del_dir, in yaffs_unlink_file_if_needed()
3827 in->obj_id); in yaffs_unlink_file_if_needed()
3828 in->deleted = 1; in yaffs_unlink_file_if_needed()
3829 in->my_dev->n_deleted_files++; in yaffs_unlink_file_if_needed()
3831 yaffs_resize_file(in, 0); in yaffs_unlink_file_if_needed()
3832 yaffs_soft_del_file(in); in yaffs_unlink_file_if_needed()
3835 yaffs_change_obj_name(in, in->my_dev->unlinked_dir, in yaffs_unlink_file_if_needed()
3841 int yaffs_del_file(struct yaffs_obj *in) in yaffs_del_file() argument
3845 struct yaffs_dev *dev = in->my_dev; in yaffs_del_file()
3848 yaffs_resize_file(in, 0); in yaffs_del_file()
3850 if (in->n_data_chunks > 0) { in yaffs_del_file()
3854 if (!in->unlinked) in yaffs_del_file()
3855 ret_val = yaffs_unlink_file_if_needed(in); in yaffs_del_file()
3857 deleted = in->deleted; in yaffs_del_file()
3859 if (ret_val == YAFFS_OK && in->unlinked && !in->deleted) { in yaffs_del_file()
3860 in->deleted = 1; in yaffs_del_file()
3862 in->my_dev->n_deleted_files++; in yaffs_del_file()
3863 yaffs_soft_del_file(in); in yaffs_del_file()
3868 yaffs_free_tnode(in->my_dev, in->variant.file_variant.top); in yaffs_del_file()
3869 in->variant.file_variant.top = NULL; in yaffs_del_file()
3870 yaffs_generic_obj_del(in); in yaffs_del_file()
3892 static int yaffs_del_symlink(struct yaffs_obj *in) in yaffs_del_symlink() argument
3894 kfree(in->variant.symlink_variant.alias); in yaffs_del_symlink()
3895 in->variant.symlink_variant.alias = NULL; in yaffs_del_symlink()
3897 return yaffs_generic_obj_del(in); in yaffs_del_symlink()
3900 static int yaffs_del_link(struct yaffs_obj *in) in yaffs_del_link() argument
3905 list_del_init(&in->hard_links); in yaffs_del_link()
3906 return yaffs_generic_obj_del(in); in yaffs_del_link()
4150 struct yaffs_obj *in; in yaffs_link_fixup() local
4154 in = yaffs_find_by_number(dev, in yaffs_link_fixup()
4157 if (in) { in yaffs_link_fixup()
4159 hl->variant.hardlink_variant.equiv_obj = in; in yaffs_link_fixup()
4160 list_add(&hl->hard_links, &in->hard_links); in yaffs_link_fixup()