/* Robustification (if it ever comes about...) */
-static void yaffs_retire_block(yaffs_dev_t *dev, int flash_block);
-static void yaffs_handle_chunk_wr_error(yaffs_dev_t *dev, int nand_chunk,
+static void yaffs_retire_block(struct yaffs_dev *dev, int flash_block);
+static void yaffs_handle_chunk_wr_error(struct yaffs_dev *dev, int nand_chunk,
int erased_ok);
-static void yaffs_handle_chunk_wr_ok(yaffs_dev_t *dev, int nand_chunk,
- const __u8 *data,
- const yaffs_ext_tags *tags);
-static void yaffs_handle_chunk_update(yaffs_dev_t *dev, int nand_chunk,
- const yaffs_ext_tags *tags);
+static void yaffs_handle_chunk_wr_ok(struct yaffs_dev *dev, int nand_chunk,
+ const u8 *data,
+ const struct yaffs_ext_tags *tags);
+static void yaffs_handle_chunk_update(struct yaffs_dev *dev, int nand_chunk,
+ const struct yaffs_ext_tags *tags);
/* Other local prototypes */
-static void yaffs_update_parent(yaffs_obj_t *obj);
-static int yaffs_unlink_obj(yaffs_obj_t *obj);
-static int yaffs_obj_cache_dirty(yaffs_obj_t *obj);
+static void yaffs_update_parent(struct yaffs_obj *obj);
+static int yaffs_unlink_obj(struct yaffs_obj *obj);
+static int yaffs_obj_cache_dirty(struct yaffs_obj *obj);
-static int yaffs_write_new_chunk(yaffs_dev_t *dev,
- const __u8 *buffer,
- yaffs_ext_tags *tags,
+static int yaffs_write_new_chunk(struct yaffs_dev *dev,
+ const u8 *buffer,
+ struct yaffs_ext_tags *tags,
int use_reserver);
-static yaffs_obj_t *yaffs_new_obj(yaffs_dev_t *dev, int number,
- yaffs_obj_type type);
+static struct yaffs_obj *yaffs_new_obj(struct yaffs_dev *dev, int number,
+ enum yaffs_obj_type type);
-static int yaffs_apply_xattrib_mod(yaffs_obj_t *obj, char *buffer, yaffs_xattr_mod *xmod);
+static int yaffs_apply_xattrib_mod(struct yaffs_obj *obj, char *buffer, struct yaffs_xattr_mod *xmod);
-static void yaffs_remove_obj_from_dir(yaffs_obj_t *obj);
+static void yaffs_remove_obj_from_dir(struct yaffs_obj *obj);
static int yaffs_check_structures(void);
-static int yaffs_generic_obj_del(yaffs_obj_t *in);
+static int yaffs_generic_obj_del(struct yaffs_obj *in);
-static int yaffs_check_chunk_erased(struct yaffs_dev_s *dev,
+static int yaffs_check_chunk_erased(struct yaffs_dev *dev,
int nand_chunk);
-static int yaffs_unlink_worker(yaffs_obj_t *obj);
+static int yaffs_unlink_worker(struct yaffs_obj *obj);
-static int yaffs_tags_match(const yaffs_ext_tags *tags, int obj_id,
+static int yaffs_tags_match(const struct yaffs_ext_tags *tags, int obj_id,
int chunk_obj);
-static int yaffs_alloc_chunk(yaffs_dev_t *dev, int use_reserver,
- yaffs_block_info_t **block_ptr);
+static int yaffs_alloc_chunk(struct yaffs_dev *dev, int use_reserver,
+ struct yaffs_block_info **block_ptr);
-static void yaffs_check_obj_details_loaded(yaffs_obj_t *in);
+static void yaffs_check_obj_details_loaded(struct yaffs_obj *in);
-static void yaffs_invalidate_whole_cache(yaffs_obj_t *in);
-static void yaffs_invalidate_chunk_cache(yaffs_obj_t *object, int chunk_id);
+static void yaffs_invalidate_whole_cache(struct yaffs_obj *in);
+static void yaffs_invalidate_chunk_cache(struct yaffs_obj *object, int chunk_id);
-static int yaffs_find_chunk_in_file(yaffs_obj_t *in, int inode_chunk,
- yaffs_ext_tags *tags);
+static int yaffs_find_chunk_in_file(struct yaffs_obj *in, int inode_chunk,
+ struct yaffs_ext_tags *tags);
-static int yaffs_verify_chunk_written(yaffs_dev_t *dev,
+static int yaffs_verify_chunk_written(struct yaffs_dev *dev,
int nand_chunk,
- const __u8 *data,
- yaffs_ext_tags *tags);
+ const u8 *data,
+ struct yaffs_ext_tags *tags);
-static void yaffs_load_name_from_oh(yaffs_dev_t *dev,YCHAR *name, const YCHAR *oh_name, int buff_size);
-static void yaffs_load_oh_from_name(yaffs_dev_t *dev,YCHAR *oh_name, const YCHAR *name);
+static void yaffs_load_name_from_oh(struct yaffs_dev *dev,YCHAR *name, const YCHAR *oh_name, int buff_size);
+static void yaffs_load_oh_from_name(struct yaffs_dev *dev,YCHAR *oh_name, const YCHAR *name);
/* Function to calculate chunk and offset */
-static void yaffs_addr_to_chunk(yaffs_dev_t *dev, loff_t addr, int *chunk_out,
- __u32 *offset_out)
+static void yaffs_addr_to_chunk(struct yaffs_dev *dev, loff_t addr, int *chunk_out,
+ u32 *offset_out)
{
int chunk;
- __u32 offset;
+ u32 offset;
- chunk = (__u32)(addr >> dev->chunk_shift);
+ chunk = (u32)(addr >> dev->chunk_shift);
if (dev->chunk_div == 1) {
/* easy power of 2 case */
- offset = (__u32)(addr & dev->chunk_mask);
+ offset = (u32)(addr & dev->chunk_mask);
} else {
/* Non power-of-2 case */
chunk /= dev->chunk_div;
chunk_base = ((loff_t)chunk) * dev->data_bytes_per_chunk;
- offset = (__u32)(addr - chunk_base);
+ offset = (u32)(addr - chunk_base);
}
*chunk_out = chunk;
* be hellishly efficient.
*/
-static __u32 calc_shifts_ceiling(__u32 x)
+static u32 calc_shifts_ceiling(u32 x)
{
int extra_bits;
int shifts;
/* Function to return the number of shifts to get a 1 in bit 0
*/
-static __u32 calc_shifts(__u32 x)
+static u32 calc_shifts(u32 x)
{
- __u32 shifts;
+ u32 shifts;
shifts = 0;
* Temporary buffer manipulations.
*/
-static int yaffs_init_tmp_buffers(yaffs_dev_t *dev)
+static int yaffs_init_tmp_buffers(struct yaffs_dev *dev)
{
int i;
- __u8 *buf = (__u8 *)1;
+ u8 *buf = (u8 *)1;
memset(dev->temp_buffer, 0, sizeof(dev->temp_buffer));
return buf ? YAFFS_OK : YAFFS_FAIL;
}
-__u8 *yaffs_get_temp_buffer(yaffs_dev_t *dev, int line_no)
+u8 *yaffs_get_temp_buffer(struct yaffs_dev *dev, int line_no)
{
int i, j;
}
-void yaffs_release_temp_buffer(yaffs_dev_t *dev, __u8 *buffer,
+void yaffs_release_temp_buffer(struct yaffs_dev *dev, u8 *buffer,
int line_no)
{
int i;
/*
* Determine if we have a managed buffer.
*/
-int yaffs_is_managed_tmp_buffer(yaffs_dev_t *dev, const __u8 *buffer)
+int yaffs_is_managed_tmp_buffer(struct yaffs_dev *dev, const u8 *buffer)
{
int i;
* Note that root might have a presence in NAND if permissions are set.
*/
-yaffs_obj_t *yaffs_root(yaffs_dev_t *dev)
+struct yaffs_obj *yaffs_root(struct yaffs_dev *dev)
{
return dev->root_dir;
}
-yaffs_obj_t *yaffs_lost_n_found(yaffs_dev_t *dev)
+struct yaffs_obj *yaffs_lost_n_found(struct yaffs_dev *dev)
{
return dev->lost_n_found;
}
* Erased NAND checking functions
*/
-int yaffs_check_ff(__u8 *buffer, int n_bytes)
+int yaffs_check_ff(u8 *buffer, int n_bytes)
{
/* Horrible, slow implementation */
while (n_bytes--) {
return 1;
}
-static int yaffs_check_chunk_erased(struct yaffs_dev_s *dev,
+static int yaffs_check_chunk_erased(struct yaffs_dev *dev,
int nand_chunk)
{
int retval = YAFFS_OK;
- __u8 *data = yaffs_get_temp_buffer(dev, __LINE__);
- yaffs_ext_tags tags;
+ u8 *data = yaffs_get_temp_buffer(dev, __LINE__);
+ struct yaffs_ext_tags tags;
int result;
result = yaffs_rd_chunk_tags_nand(dev, nand_chunk, data, &tags);
}
-static int yaffs_verify_chunk_written(yaffs_dev_t *dev,
+static int yaffs_verify_chunk_written(struct yaffs_dev *dev,
int nand_chunk,
- const __u8 *data,
- yaffs_ext_tags *tags)
+ const u8 *data,
+ struct yaffs_ext_tags *tags)
{
int retval = YAFFS_OK;
- yaffs_ext_tags temp_tags;
- __u8 *buffer = yaffs_get_temp_buffer(dev,__LINE__);
+ struct yaffs_ext_tags temp_tags;
+ u8 *buffer = yaffs_get_temp_buffer(dev,__LINE__);
int result;
result = yaffs_rd_chunk_tags_nand(dev,nand_chunk,buffer,&temp_tags);
return retval;
}
-static int yaffs_write_new_chunk(struct yaffs_dev_s *dev,
- const __u8 *data,
- yaffs_ext_tags *tags,
+static int yaffs_write_new_chunk(struct yaffs_dev *dev,
+ const u8 *data,
+ struct yaffs_ext_tags *tags,
int use_reserver)
{
int attempts = 0;
yaffs2_checkpt_invalidate(dev);
do {
- yaffs_block_info_t *bi = 0;
+ struct yaffs_block_info *bi = 0;
int erased_ok = 0;
chunk = yaffs_alloc_chunk(dev, use_reserver, &bi);
* Block retiring for handling a broken block.
*/
-static void yaffs_retire_block(yaffs_dev_t *dev, int flash_block)
+static void yaffs_retire_block(struct yaffs_dev *dev, int flash_block)
{
- yaffs_block_info_t *bi = yaffs_get_block_info(dev, flash_block);
+ struct yaffs_block_info *bi = yaffs_get_block_info(dev, flash_block);
yaffs2_checkpt_invalidate(dev);
"yaffs: Failed to mark bad and erase block %d"
TENDSTR), flash_block));
} else {
- yaffs_ext_tags tags;
+ struct yaffs_ext_tags tags;
int chunk_id = flash_block * dev->param.chunks_per_block;
- __u8 *buffer = yaffs_get_temp_buffer(dev, __LINE__);
+ u8 *buffer = yaffs_get_temp_buffer(dev, __LINE__);
memset(buffer, 0xff, dev->data_bytes_per_chunk);
yaffs_init_tags(&tags);
*
*/
-static void yaffs_handle_chunk_wr_ok(yaffs_dev_t *dev, int nand_chunk,
- const __u8 *data,
- const yaffs_ext_tags *tags)
+static void yaffs_handle_chunk_wr_ok(struct yaffs_dev *dev, int nand_chunk,
+ const u8 *data,
+ const struct yaffs_ext_tags *tags)
{
dev=dev;
nand_chunk=nand_chunk;
tags=tags;
}
-static void yaffs_handle_chunk_update(yaffs_dev_t *dev, int nand_chunk,
- const yaffs_ext_tags *tags)
+static void yaffs_handle_chunk_update(struct yaffs_dev *dev, int nand_chunk,
+ const struct yaffs_ext_tags *tags)
{
dev=dev;
nand_chunk=nand_chunk;
tags=tags;
}
-void yaffs_handle_chunk_error(yaffs_dev_t *dev, yaffs_block_info_t *bi)
+void yaffs_handle_chunk_error(struct yaffs_dev *dev, struct yaffs_block_info *bi)
{
if (!bi->gc_prioritise) {
bi->gc_prioritise = 1;
}
}
-static void yaffs_handle_chunk_wr_error(yaffs_dev_t *dev, int nand_chunk,
+static void yaffs_handle_chunk_wr_error(struct yaffs_dev *dev, int nand_chunk,
int erased_ok)
{
int flash_block = nand_chunk / dev->param.chunks_per_block;
- yaffs_block_info_t *bi = yaffs_get_block_info(dev, flash_block);
+ struct yaffs_block_info *bi = yaffs_get_block_info(dev, flash_block);
yaffs_handle_chunk_error(dev, bi);
/*---------------- Name handling functions ------------*/
-static __u16 yaffs_calc_name_sum(const YCHAR *name)
+static u16 yaffs_calc_name_sum(const YCHAR *name)
{
- __u16 sum = 0;
- __u16 i = 1;
+ u16 sum = 0;
+ u16 i = 1;
const YUCHAR *bname = (const YUCHAR *) name;
if (bname) {
while ((*bname) && (i < (YAFFS_MAX_NAME_LENGTH/2))) {
-#ifdef CONFIG_YAFFS_CASE_INSENSITIVE
- sum += yaffs_toupper(*bname) * i;
-#else
- sum += (*bname) * i;
-#endif
+ /* 0x1f mask is case insensitive */
+ sum += ((*bname) & 0x1f) * i;
i++;
bname++;
}
return sum;
}
-void yaffs_set_obj_name(yaffs_obj_t *obj, const YCHAR *name)
+void yaffs_set_obj_name(struct yaffs_obj *obj, const YCHAR *name)
{
#ifdef CONFIG_YAFFS_SHORT_NAMES_IN_RAM
memset(obj->short_name, 0, sizeof(YCHAR) * (YAFFS_SHORT_NAME_LENGTH+1));
obj->sum = yaffs_calc_name_sum(name);
}
-void yaffs_set_obj_name_from_oh(yaffs_obj_t *obj, const yaffs_obj_header *oh)
+void yaffs_set_obj_name_from_oh(struct yaffs_obj *obj, const struct yaffs_obj_hdr *oh)
{
#ifdef CONFIG_YAFFS_AUTO_UNICODE
YCHAR tmp_name[YAFFS_MAX_NAME_LENGTH+1];
*/
-yaffs_tnode_t *yaffs_get_tnode(yaffs_dev_t *dev)
+struct yaffs_tnode *yaffs_get_tnode(struct yaffs_dev *dev)
{
- yaffs_tnode_t *tn = yaffs_alloc_raw_tnode(dev);
+ struct yaffs_tnode *tn = yaffs_alloc_raw_tnode(dev);
if (tn){
memset(tn, 0, dev->tnode_size);
dev->n_tnodes++;
}
/* FreeTnode frees up a tnode and puts it back on the free list */
-static void yaffs_free_tnode(yaffs_dev_t *dev, yaffs_tnode_t *tn)
+static void yaffs_free_tnode(struct yaffs_dev *dev, struct yaffs_tnode *tn)
{
yaffs_free_raw_tnode(dev,tn);
dev->n_tnodes--;
dev->checkpoint_blocks_required = 0; /* force recalculation*/
}
-static void yaffs_deinit_tnodes_and_objs(yaffs_dev_t *dev)
+static void yaffs_deinit_tnodes_and_objs(struct yaffs_dev *dev)
{
yaffs_deinit_raw_tnodes_and_objs(dev);
dev->n_obj = 0;
}
-void yaffs_load_tnode_0(yaffs_dev_t *dev, yaffs_tnode_t *tn, unsigned pos,
+void yaffs_load_tnode_0(struct yaffs_dev *dev, struct yaffs_tnode *tn, unsigned pos,
unsigned val)
{
- __u32 *map = (__u32 *)tn;
- __u32 bit_in_map;
- __u32 bit_in_word;
- __u32 word_in_map;
- __u32 mask;
+ u32 *map = (u32 *)tn;
+ u32 bit_in_map;
+ u32 bit_in_word;
+ u32 word_in_map;
+ u32 mask;
pos &= YAFFS_TNODES_LEVEL0_MASK;
val >>= dev->chunk_grp_bits;
}
}
-__u32 yaffs_get_group_base(yaffs_dev_t *dev, yaffs_tnode_t *tn,
+u32 yaffs_get_group_base(struct yaffs_dev *dev, struct yaffs_tnode *tn,
unsigned pos)
{
- __u32 *map = (__u32 *)tn;
- __u32 bit_in_map;
- __u32 bit_in_word;
- __u32 word_in_map;
- __u32 val;
+ u32 *map = (u32 *)tn;
+ u32 bit_in_map;
+ u32 bit_in_word;
+ u32 word_in_map;
+ u32 val;
pos &= YAFFS_TNODES_LEVEL0_MASK;
*/
/* FindLevel0Tnode finds the level 0 tnode, if one exists. */
-yaffs_tnode_t *yaffs_find_tnode_0(yaffs_dev_t *dev,
- yaffs_file_s *file_struct,
- __u32 chunk_id)
+struct yaffs_tnode *yaffs_find_tnode_0(struct yaffs_dev *dev,
+ struct yaffs_file_var *file_struct,
+ u32 chunk_id)
{
- yaffs_tnode_t *tn = file_struct->top;
- __u32 i;
+ struct yaffs_tnode *tn = file_struct->top;
+ u32 i;
int required_depth;
int level = file_struct->top_level;
* be plugged into the ttree.
*/
-yaffs_tnode_t *yaffs_add_find_tnode_0(yaffs_dev_t *dev,
- yaffs_file_s *file_struct,
- __u32 chunk_id,
- yaffs_tnode_t *passed_tn)
+struct yaffs_tnode *yaffs_add_find_tnode_0(struct yaffs_dev *dev,
+ struct yaffs_file_var *file_struct,
+ u32 chunk_id,
+ struct yaffs_tnode *passed_tn)
{
int required_depth;
int i;
int l;
- yaffs_tnode_t *tn;
+ struct yaffs_tnode *tn;
- __u32 x;
+ u32 x;
/* Check sane level and page Id */
return tn;
}
-static int yaffs_find_chunk_in_group(yaffs_dev_t *dev, int the_chunk,
- yaffs_ext_tags *tags, int obj_id,
+static int yaffs_find_chunk_in_group(struct yaffs_dev *dev, int the_chunk,
+ struct yaffs_ext_tags *tags, int obj_id,
int inode_chunk)
{
int j;
return -1;
}
-#if 0
-/* Experimental code not being used yet. Might speed up file deletion */
-/* DeleteWorker scans backwards through the tnode tree and deletes all the
- * chunks and tnodes in the file.
- * Returns 1 if the tree was deleted.
- * Returns 0 if it stopped early due to hitting the limit and the delete is incomplete.
- */
-
-static int yaffs_del_worker(yaffs_obj_t *in, yaffs_tnode_t *tn, __u32 level,
- int chunk_offset, int *limit)
-{
- int i;
- int inode_chunk;
- int the_chunk;
- yaffs_ext_tags tags;
- int found_chunk;
- yaffs_dev_t *dev = in->my_dev;
-
- int all_done = 1;
-
- if (tn) {
- if (level > 0) {
- for (i = YAFFS_NTNODES_INTERNAL - 1; all_done && i >= 0;
- i--) {
- if (tn->internal[i]) {
- if (limit && (*limit) < 0) {
- all_done = 0;
- } else {
- all_done =
- yaffs_del_worker(in,
- tn->
- internal
- [i],
- level -
- 1,
- (chunk_offset
- <<
- YAFFS_TNODES_INTERNAL_BITS)
- + i,
- limit);
- }
- if (all_done) {
- yaffs_free_tnode(dev,
- tn->
- internal[i]);
- tn->internal[i] = NULL;
- }
- }
- }
- return (all_done) ? 1 : 0;
- } else if (level == 0) {
- int hit_limit = 0;
-
- for (i = YAFFS_NTNODES_LEVEL0 - 1; i >= 0 && !hit_limit;
- i--) {
- the_chunk = yaffs_get_group_base(dev, tn, i);
- if (the_chunk) {
-
- inode_chunk = (chunk_offset <<
- YAFFS_TNODES_LEVEL0_BITS) + i;
-
- found_chunk =
- yaffs_find_chunk_in_group(dev,
- the_chunk,
- &tags,
- in->obj_id,
- inode_chunk);
-
- if (found_chunk > 0) {
- yaffs_chunk_del(dev,
- found_chunk, 1,
- __LINE__);
- in->n_data_chunks--;
- if (limit) {
- *limit = *limit - 1;
- if (*limit <= 0)
- hit_limit = 1;
- }
-
- }
-
- yaffs_load_tnode_0(dev, tn, i, 0);
- }
-
- }
- return (i < 0) ? 1 : 0;
-
- }
-
- }
-
- return 1;
-
-}
-
-#endif
-static void yaffs_soft_del_chunk(yaffs_dev_t *dev, int chunk)
+static void yaffs_soft_del_chunk(struct yaffs_dev *dev, int chunk)
{
- yaffs_block_info_t *the_block;
+ struct yaffs_block_info *the_block;
unsigned block_no;
T(YAFFS_TRACE_DELETION, (TSTR("soft delete chunk %d" TENDSTR), chunk));
* Thus, essentially this is the same as DeleteWorker except that the chunks are soft deleted.
*/
-static int yaffs_soft_del_worker(yaffs_obj_t *in, yaffs_tnode_t *tn,
- __u32 level, int chunk_offset)
+static int yaffs_soft_del_worker(struct yaffs_obj *in, struct yaffs_tnode *tn,
+ u32 level, int chunk_offset)
{
int i;
int the_chunk;
int all_done = 1;
- yaffs_dev_t *dev = in->my_dev;
+ struct yaffs_dev *dev = in->my_dev;
if (tn) {
if (level > 0) {
}
-static void yaffs_soft_del_file(yaffs_obj_t *obj)
+static void yaffs_soft_del_file(struct yaffs_obj *obj)
{
if (obj->deleted &&
obj->variant_type == YAFFS_OBJECT_TYPE_FILE && !obj->soft_del) {
* If there is no data in a subtree then it is pruned.
*/
-static yaffs_tnode_t *yaffs_prune_worker(yaffs_dev_t *dev, yaffs_tnode_t *tn,
- __u32 level, int del0)
+static struct yaffs_tnode *yaffs_prune_worker(struct yaffs_dev *dev, struct yaffs_tnode *tn,
+ u32 level, int del0)
{
int i;
int has_data;
has_data++;
}
} else {
- int tnode_size_u32 = dev->tnode_size/sizeof(__u32);
- __u32 *map = (__u32 *)tn;
+ int tnode_size_u32 = dev->tnode_size/sizeof(u32);
+ u32 *map = (u32 *)tn;
for(i = 0; !has_data && i < tnode_size_u32; i++){
if(map[i])
}
-static int yaffs_prune_tree(yaffs_dev_t *dev,
- yaffs_file_s *file_struct)
+static int yaffs_prune_tree(struct yaffs_dev *dev,
+ struct yaffs_file_var *file_struct)
{
int i;
int has_data;
int done = 0;
- yaffs_tnode_t *tn;
+ struct yaffs_tnode *tn;
if (file_struct->top_level > 0) {
file_struct->top =
/* AllocateEmptyObject gets us a clean Object. Tries to make allocate more if we run out */
-static yaffs_obj_t *yaffs_alloc_empty_obj(yaffs_dev_t *dev)
+static struct yaffs_obj *yaffs_alloc_empty_obj(struct yaffs_dev *dev)
{
- yaffs_obj_t *obj = yaffs_alloc_raw_obj(dev);
+ struct yaffs_obj *obj = yaffs_alloc_raw_obj(dev);
if (obj) {
dev->n_obj++;
/* Now sweeten it up... */
- memset(obj, 0, sizeof(yaffs_obj_t));
+ memset(obj, 0, sizeof(struct yaffs_obj));
obj->being_created = 1;
obj->my_dev = dev;
return obj;
}
-static yaffs_obj_t *yaffs_create_fake_dir(yaffs_dev_t *dev, int number,
- __u32 mode)
+static struct yaffs_obj *yaffs_create_fake_dir(struct yaffs_dev *dev, int number,
+ u32 mode)
{
- yaffs_obj_t *obj =
+ struct yaffs_obj *obj =
yaffs_new_obj(dev, number, YAFFS_OBJECT_TYPE_DIRECTORY);
if (obj) {
obj->fake = 1; /* it is fake so it might have no NAND presence... */
}
-static void yaffs_unhash_obj(yaffs_obj_t *obj)
+static void yaffs_unhash_obj(struct yaffs_obj *obj)
{
int bucket;
- yaffs_dev_t *dev = obj->my_dev;
+ struct yaffs_dev *dev = obj->my_dev;
/* If it is still linked into the bucket list, free from the list */
if (!ylist_empty(&obj->hash_link)) {
}
/* FreeObject frees up a Object and puts it back on the free list */
-static void yaffs_free_obj(yaffs_obj_t *obj)
+static void yaffs_free_obj(struct yaffs_obj *obj)
{
- yaffs_dev_t *dev = obj->my_dev;
+ struct yaffs_dev *dev = obj->my_dev;
T(YAFFS_TRACE_OS, (TSTR("FreeObject %p inode %p"TENDSTR), obj, obj->my_inode));
}
-void yaffs_handle_defered_free(yaffs_obj_t *obj)
+void yaffs_handle_defered_free(struct yaffs_obj *obj)
{
if (obj->defered_free)
yaffs_free_obj(obj);
}
-static void yaffs_init_tnodes_and_objs(yaffs_dev_t *dev)
+static void yaffs_init_tnodes_and_objs(struct yaffs_dev *dev)
{
int i;
}
}
-static int yaffs_find_nice_bucket(yaffs_dev_t *dev)
+static int yaffs_find_nice_bucket(struct yaffs_dev *dev)
{
int i;
int l = 999;
return l;
}
-static int yaffs_new_obj_id(yaffs_dev_t *dev)
+static int yaffs_new_obj_id(struct yaffs_dev *dev)
{
int bucket = yaffs_find_nice_bucket(dev);
int found = 0;
struct ylist_head *i;
- __u32 n = (__u32) bucket;
+ u32 n = (u32) bucket;
/* yaffs_check_obj_hash_sane(); */
if (1 || dev->obj_bucket[bucket].count > 0) {
ylist_for_each(i, &dev->obj_bucket[bucket].list) {
/* If there is already one in the list */
- if (i && ylist_entry(i, yaffs_obj_t,
+ if (i && ylist_entry(i, struct yaffs_obj,
hash_link)->obj_id == n) {
found = 0;
}
return n;
}
-static void yaffs_hash_obj(yaffs_obj_t *in)
+static void yaffs_hash_obj(struct yaffs_obj *in)
{
int bucket = yaffs_hash_fn(in->obj_id);
- yaffs_dev_t *dev = in->my_dev;
+ struct yaffs_dev *dev = in->my_dev;
ylist_add(&in->hash_link, &dev->obj_bucket[bucket].list);
dev->obj_bucket[bucket].count++;
}
-yaffs_obj_t *yaffs_find_by_number(yaffs_dev_t *dev, __u32 number)
+struct yaffs_obj *yaffs_find_by_number(struct yaffs_dev *dev, u32 number)
{
int bucket = yaffs_hash_fn(number);
struct ylist_head *i;
- yaffs_obj_t *in;
+ struct yaffs_obj *in;
ylist_for_each(i, &dev->obj_bucket[bucket].list) {
/* Look if it is in the list */
if (i) {
- in = ylist_entry(i, yaffs_obj_t, hash_link);
+ in = ylist_entry(i, struct yaffs_obj, hash_link);
if (in->obj_id == number) {
/* Don't tell the VFS about this one if it is defered free */
return NULL;
}
-yaffs_obj_t *yaffs_new_obj(yaffs_dev_t *dev, int number,
- yaffs_obj_type type)
+struct yaffs_obj *yaffs_new_obj(struct yaffs_dev *dev, int number,
+ enum yaffs_obj_type type)
{
- yaffs_obj_t *the_obj=NULL;
- yaffs_tnode_t *tn = NULL;
+ struct yaffs_obj *the_obj=NULL;
+ struct yaffs_tnode *tn = NULL;
if (number < 0)
number = yaffs_new_obj_id(dev);
case YAFFS_OBJECT_TYPE_FILE:
the_obj->variant.file_variant.file_size = 0;
the_obj->variant.file_variant.scanned_size = 0;
- the_obj->variant.file_variant.shrink_size = 0xFFFFFFFF; /* max __u32 */
+ the_obj->variant.file_variant.shrink_size = 0xFFFFFFFF; /* max u32 */
the_obj->variant.file_variant.top_level = 0;
the_obj->variant.file_variant.top = tn;
break;
return the_obj;
}
-yaffs_obj_t *yaffs_find_or_create_by_number(yaffs_dev_t *dev,
+struct yaffs_obj *yaffs_find_or_create_by_number(struct yaffs_dev *dev,
int number,
- yaffs_obj_type type)
+ enum yaffs_obj_type type)
{
- yaffs_obj_t *the_obj = NULL;
+ struct yaffs_obj *the_obj = NULL;
if (number > 0)
the_obj = yaffs_find_by_number(dev, number);
* rdev only has meaning for devices (a subset of special objects)
*/
-static yaffs_obj_t *yaffs_create_obj(yaffs_obj_type type,
- yaffs_obj_t *parent,
+static struct yaffs_obj *yaffs_create_obj(enum yaffs_obj_type type,
+ struct yaffs_obj *parent,
const YCHAR *name,
- __u32 mode,
- __u32 uid,
- __u32 gid,
- yaffs_obj_t *equiv_obj,
- const YCHAR *alias_str, __u32 rdev)
+ u32 mode,
+ u32 uid,
+ u32 gid,
+ struct yaffs_obj *equiv_obj,
+ const YCHAR *alias_str, u32 rdev)
{
- yaffs_obj_t *in;
+ struct yaffs_obj *in;
YCHAR *str = NULL;
- yaffs_dev_t *dev = parent->my_dev;
+ struct yaffs_dev *dev = parent->my_dev;
/* Check if the entry exists. If it does then fail the call since we don't want a dup.*/
if (yaffs_find_by_name(parent, name))
return in;
}
-yaffs_obj_t *yaffs_create_file(yaffs_obj_t *parent, const YCHAR *name,
- __u32 mode, __u32 uid, __u32 gid)
+struct yaffs_obj *yaffs_create_file(struct yaffs_obj *parent, const YCHAR *name,
+ u32 mode, u32 uid, u32 gid)
{
return yaffs_create_obj(YAFFS_OBJECT_TYPE_FILE, parent, name, mode,
uid, gid, NULL, NULL, 0);
}
-yaffs_obj_t *yaffs_create_dir(yaffs_obj_t *parent, const YCHAR *name,
- __u32 mode, __u32 uid, __u32 gid)
+struct yaffs_obj *yaffs_create_dir(struct yaffs_obj *parent, const YCHAR *name,
+ u32 mode, u32 uid, u32 gid)
{
return yaffs_create_obj(YAFFS_OBJECT_TYPE_DIRECTORY, parent, name,
mode, uid, gid, NULL, NULL, 0);
}
-yaffs_obj_t *yaffs_create_special(yaffs_obj_t *parent, const YCHAR *name,
- __u32 mode, __u32 uid, __u32 gid, __u32 rdev)
+struct yaffs_obj *yaffs_create_special(struct yaffs_obj *parent, const YCHAR *name,
+ u32 mode, u32 uid, u32 gid, u32 rdev)
{
return yaffs_create_obj(YAFFS_OBJECT_TYPE_SPECIAL, parent, name, mode,
uid, gid, NULL, NULL, rdev);
}
-yaffs_obj_t *yaffs_create_symlink(yaffs_obj_t *parent, const YCHAR *name,
- __u32 mode, __u32 uid, __u32 gid,
+struct yaffs_obj *yaffs_create_symlink(struct yaffs_obj *parent, const YCHAR *name,
+ u32 mode, u32 uid, u32 gid,
const YCHAR *alias)
{
return yaffs_create_obj(YAFFS_OBJECT_TYPE_SYMLINK, parent, name, mode,
}
/* yaffs_link_obj returns the object id of the equivalent object.*/
-yaffs_obj_t *yaffs_link_obj(yaffs_obj_t *parent, const YCHAR *name,
- yaffs_obj_t *equiv_obj)
+struct yaffs_obj *yaffs_link_obj(struct yaffs_obj *parent, const YCHAR *name,
+ struct yaffs_obj *equiv_obj)
{
/* Get the real object in case we were fed a hard link as an equivalent object */
equiv_obj = yaffs_get_equivalent_obj(equiv_obj);
}
-static int yaffs_change_obj_name(yaffs_obj_t *obj, yaffs_obj_t *new_dir,
+static int yaffs_change_obj_name(struct yaffs_obj *obj, struct yaffs_obj *new_dir,
const YCHAR *new_name, int force, int shadows)
{
int unlink_op;
int del_op;
- yaffs_obj_t *existing_target;
+ struct yaffs_obj *existing_target;
if (new_dir == NULL)
new_dir = obj->parent; /* use the old directory */
return YAFFS_FAIL;
}
-int yaffs_rename_obj(yaffs_obj_t *old_dir, const YCHAR *old_name,
- yaffs_obj_t *new_dir, const YCHAR *new_name)
+int yaffs_rename_obj(struct yaffs_obj *old_dir, const YCHAR *old_name,
+ struct yaffs_obj *new_dir, const YCHAR *new_name)
{
- yaffs_obj_t *obj = NULL;
- yaffs_obj_t *existing_target = NULL;
+ struct yaffs_obj *obj = NULL;
+ struct yaffs_obj *existing_target = NULL;
int force = 0;
int result;
- yaffs_dev_t *dev;
+ struct yaffs_dev *dev;
if (!old_dir || old_dir->variant_type != YAFFS_OBJECT_TYPE_DIRECTORY)
/*------------------------- Block Management and Page Allocation ----------------*/
-static int yaffs_init_blocks(yaffs_dev_t *dev)
+static int yaffs_init_blocks(struct yaffs_dev *dev)
{
int n_blocks = dev->internal_end_block - dev->internal_start_block + 1;
dev->alloc_block = -1; /* force it to get a new one */
/* If the first allocation strategy fails, thry the alternate one */
- dev->block_info = YMALLOC(n_blocks * sizeof(yaffs_block_info_t));
+ dev->block_info = YMALLOC(n_blocks * sizeof(struct yaffs_block_info));
if (!dev->block_info) {
- dev->block_info = YMALLOC_ALT(n_blocks * sizeof(yaffs_block_info_t));
+ dev->block_info = YMALLOC_ALT(n_blocks * sizeof(struct yaffs_block_info));
dev->block_info_alt = 1;
} else
dev->block_info_alt = 0;
}
if (dev->block_info && dev->chunk_bits) {
- memset(dev->block_info, 0, n_blocks * sizeof(yaffs_block_info_t));
+ memset(dev->block_info, 0, n_blocks * sizeof(struct yaffs_block_info));
memset(dev->chunk_bits, 0, dev->chunk_bit_stride * n_blocks);
return YAFFS_OK;
}
return YAFFS_FAIL;
}
-static void yaffs_deinit_blocks(yaffs_dev_t *dev)
+static void yaffs_deinit_blocks(struct yaffs_dev *dev)
{
if (dev->block_info_alt && dev->block_info)
YFREE_ALT(dev->block_info);
dev->chunk_bits = NULL;
}
-void yaffs_block_became_dirty(yaffs_dev_t *dev, int block_no)
+void yaffs_block_became_dirty(struct yaffs_dev *dev, int block_no)
{
- yaffs_block_info_t *bi = yaffs_get_block_info(dev, block_no);
+ struct yaffs_block_info *bi = yaffs_get_block_info(dev, block_no);
int erased_ok = 0;
}
}
-static int yaffs_find_alloc_block(yaffs_dev_t *dev)
+static int yaffs_find_alloc_block(struct yaffs_dev *dev)
{
int i;
- yaffs_block_info_t *bi;
+ struct yaffs_block_info *bi;
if (dev->n_erased_blocks < 1) {
/* Hoosterman we've got a problem.
* Check if there's space to allocate...
* Thinks.... do we need top make this ths same as yaffs_get_free_chunks()?
*/
-int yaffs_check_alloc_available(yaffs_dev_t *dev, int n_chunks)
+int yaffs_check_alloc_available(struct yaffs_dev *dev, int n_chunks)
{
int reserved_chunks;
int reserved_blocks = dev->param.n_reserved_blocks;
return (dev->n_free_chunks > (reserved_chunks + n_chunks));
}
-static int yaffs_alloc_chunk(yaffs_dev_t *dev, int use_reserver,
- yaffs_block_info_t **block_ptr)
+static int yaffs_alloc_chunk(struct yaffs_dev *dev, int use_reserver,
+ struct yaffs_block_info **block_ptr)
{
int ret_val;
- yaffs_block_info_t *bi;
+ struct yaffs_block_info *bi;
if (dev->alloc_block < 0) {
/* Get next block to allocate off */
return -1;
}
-static int yaffs_get_erased_chunks(yaffs_dev_t *dev)
+static int yaffs_get_erased_chunks(struct yaffs_dev *dev)
{
int n;
* yaffs_skip_rest_of_block() skips over the rest of the allocation block
* if we don't want to write to it.
*/
-void yaffs_skip_rest_of_block(yaffs_dev_t *dev)
+void yaffs_skip_rest_of_block(struct yaffs_dev *dev)
{
if(dev->alloc_block > 0){
- yaffs_block_info_t *bi = yaffs_get_block_info(dev, dev->alloc_block);
+ struct yaffs_block_info *bi = yaffs_get_block_info(dev, dev->alloc_block);
if(bi->block_state == YAFFS_BLOCK_STATE_ALLOCATING){
bi->block_state = YAFFS_BLOCK_STATE_FULL;
dev->alloc_block = -1;
}
-static int yaffs_gc_block(yaffs_dev_t *dev, int block,
+static int yaffs_gc_block(struct yaffs_dev *dev, int block,
int whole_block)
{
int old_chunk;
int chunks_before = yaffs_get_erased_chunks(dev);
int chunks_after;
- yaffs_ext_tags tags;
+ struct yaffs_ext_tags tags;
- yaffs_block_info_t *bi = yaffs_get_block_info(dev, block);
+ struct yaffs_block_info *bi = yaffs_get_block_info(dev, block);
- yaffs_obj_t *object;
+ struct yaffs_obj *object;
is_checkpt_block = (bi->block_state == YAFFS_BLOCK_STATE_CHECKPOINT);
yaffs_block_became_dirty(dev, block);
} else {
- __u8 *buffer = yaffs_get_temp_buffer(dev, __LINE__);
+ u8 *buffer = yaffs_get_temp_buffer(dev, __LINE__);
yaffs_verify_blk(dev, bi, block);
* and if it is left in place it will mess up scanning.
*/
- yaffs_obj_header *oh;
- oh = (yaffs_obj_header *)buffer;
+ struct yaffs_obj_hdr *oh;
+ oh = (struct yaffs_obj_hdr *)buffer;
oh->is_shrink = 0;
tags.extra_is_shrink = 0;
yaffs_verify_oh(object, oh, &tags, 1);
new_chunk =
- yaffs_write_new_chunk(dev,(__u8 *) oh, &tags, 1);
+ yaffs_write_new_chunk(dev,(u8 *) oh, &tags, 1);
} else
new_chunk =
yaffs_write_new_chunk(dev, buffer, &tags, 1);
* for garbage collection.
*/
-static unsigned yaffs_find_gc_block(yaffs_dev_t *dev,
+static unsigned yaffs_find_gc_block(struct yaffs_dev *dev,
int aggressive,
int background)
{
unsigned selected = 0;
int prioritised = 0;
int prioritised_exist = 0;
- yaffs_block_info_t *bi;
+ struct yaffs_block_info *bi;
int threshold;
/* First let's see if we need to grab a prioritised block */
* The idea is to help clear out space in a more spread-out manner.
* Dunno if it really does anything useful.
*/
-static int yaffs_check_gc(yaffs_dev_t *dev, int background)
+static int yaffs_check_gc(struct yaffs_dev *dev, int background)
{
int aggressive = 0;
int gc_ok = YAFFS_OK;
* Garbage collects. Intended to be called from a background thread.
* Returns non-zero if at least half the free chunks are erased.
*/
-int yaffs_bg_gc(yaffs_dev_t *dev, unsigned urgency)
+int yaffs_bg_gc(struct yaffs_dev *dev, unsigned urgency)
{
int erased_chunks = dev->n_erased_blocks * dev->param.chunks_per_block;
/*------------------------- TAGS --------------------------------*/
-static int yaffs_tags_match(const yaffs_ext_tags *tags, int obj_id,
+static int yaffs_tags_match(const struct yaffs_ext_tags *tags, int obj_id,
int chunk_obj)
{
return (tags->chunk_id == chunk_obj &&
/*-------------------- Data file manipulation -----------------*/
-static int yaffs_find_chunk_in_file(yaffs_obj_t *in, int inode_chunk,
- yaffs_ext_tags *tags)
+static int yaffs_find_chunk_in_file(struct yaffs_obj *in, int inode_chunk,
+ struct yaffs_ext_tags *tags)
{
/*Get the Tnode, then get the level 0 offset chunk offset */
- yaffs_tnode_t *tn;
+ struct yaffs_tnode *tn;
int the_chunk = -1;
- yaffs_ext_tags local_tags;
+ struct yaffs_ext_tags local_tags;
int ret_val = -1;
- yaffs_dev_t *dev = in->my_dev;
+ struct yaffs_dev *dev = in->my_dev;
if (!tags) {
/* Passed a NULL, so use our own tags space */
return ret_val;
}
-static int yaffs_find_del_file_chunk(yaffs_obj_t *in, int inode_chunk,
- yaffs_ext_tags *tags)
+static int yaffs_find_del_file_chunk(struct yaffs_obj *in, int inode_chunk,
+ struct yaffs_ext_tags *tags)
{
/* Get the Tnode, then get the level 0 offset chunk offset */
- yaffs_tnode_t *tn;
+ struct yaffs_tnode *tn;
int the_chunk = -1;
- yaffs_ext_tags local_tags;
+ struct yaffs_ext_tags local_tags;
- yaffs_dev_t *dev = in->my_dev;
+ struct yaffs_dev *dev = in->my_dev;
int ret_val = -1;
if (!tags) {
}
-int yaffs_put_chunk_in_file(yaffs_obj_t *in, int inode_chunk,
+int yaffs_put_chunk_in_file(struct yaffs_obj *in, int inode_chunk,
int nand_chunk, int in_scan)
{
/* NB in_scan is zero unless scanning.
* nand_chunk = 0 is a dummy insert to make sure the tnodes are there.
*/
- yaffs_tnode_t *tn;
- yaffs_dev_t *dev = in->my_dev;
+ struct yaffs_tnode *tn;
+ struct yaffs_dev *dev = in->my_dev;
int existing_cunk;
- yaffs_ext_tags existing_tags;
- yaffs_ext_tags new_tags;
+ struct yaffs_ext_tags existing_tags;
+ struct yaffs_ext_tags new_tags;
unsigned existing_serial, new_serial;
if (in->variant_type != YAFFS_OBJECT_TYPE_FILE) {
return YAFFS_OK;
}
-static int yaffs_rd_data_obj(yaffs_obj_t *in, int inode_chunk,
- __u8 *buffer)
+static int yaffs_rd_data_obj(struct yaffs_obj *in, int inode_chunk,
+ u8 *buffer)
{
int nand_chunk = yaffs_find_chunk_in_file(in, inode_chunk, NULL);
}
-void yaffs_chunk_del(yaffs_dev_t *dev, int chunk_id, int mark_flash, int lyn)
+void yaffs_chunk_del(struct yaffs_dev *dev, int chunk_id, int mark_flash, int lyn)
{
int block;
int page;
- yaffs_ext_tags tags;
- yaffs_block_info_t *bi;
+ struct yaffs_ext_tags tags;
+ struct yaffs_block_info *bi;
if (chunk_id <= 0)
return;
}
-static int yaffs_wr_data_obj(yaffs_obj_t *in, int inode_chunk,
- const __u8 *buffer, int n_bytes,
+static int yaffs_wr_data_obj(struct yaffs_obj *in, int inode_chunk,
+ const u8 *buffer, int n_bytes,
int use_reserve)
{
/* Find old chunk Need to do this to get serial number
*/
int prev_chunk_id;
- yaffs_ext_tags prev_tags;
+ struct yaffs_ext_tags prev_tags;
int new_chunk_id;
- yaffs_ext_tags new_tags;
+ struct yaffs_ext_tags new_tags;
- yaffs_dev_t *dev = in->my_dev;
+ struct yaffs_dev *dev = in->my_dev;
yaffs_check_gc(dev,0);
/* UpdateObjectHeader updates the header on NAND for an object.
* If name is not NULL, then that new name is used.
*/
-int yaffs_update_oh(yaffs_obj_t *in, const YCHAR *name, int force,
- int is_shrink, int shadows, yaffs_xattr_mod *xmod)
+int yaffs_update_oh(struct yaffs_obj *in, const YCHAR *name, int force,
+ int is_shrink, int shadows, struct yaffs_xattr_mod *xmod)
{
- yaffs_block_info_t *bi;
+ struct yaffs_block_info *bi;
- yaffs_dev_t *dev = in->my_dev;
+ struct yaffs_dev *dev = in->my_dev;
int prev_chunk_id;
int ret_val = 0;
int result = 0;
int new_chunk_id;
- yaffs_ext_tags new_tags;
- yaffs_ext_tags old_tags;
+ struct yaffs_ext_tags new_tags;
+ struct yaffs_ext_tags old_tags;
const YCHAR *alias = NULL;
- __u8 *buffer = NULL;
+ u8 *buffer = NULL;
YCHAR old_name[YAFFS_MAX_NAME_LENGTH + 1];
- yaffs_obj_header *oh = NULL;
+ struct yaffs_obj_hdr *oh = NULL;
yaffs_strcpy(old_name, _Y("silly old name"));
yaffs_check_obj_details_loaded(in);
buffer = yaffs_get_temp_buffer(in->my_dev, __LINE__);
- oh = (yaffs_obj_header *) buffer;
+ oh = (struct yaffs_obj_hdr *) buffer;
prev_chunk_id = in->hdr_chunk;
yaffs_verify_oh(in, oh, &old_tags, 0);
memcpy(old_name, oh->name, sizeof(oh->name));
- memset(buffer, 0xFF, sizeof(yaffs_obj_header));
+ memset(buffer, 0xFF, sizeof(struct yaffs_obj_hdr));
} else
memset(buffer, 0xFF, dev->data_bytes_per_chunk);
* need a very intelligent search.
*/
-static int yaffs_obj_cache_dirty(yaffs_obj_t *obj)
+static int yaffs_obj_cache_dirty(struct yaffs_obj *obj)
{
- yaffs_dev_t *dev = obj->my_dev;
+ struct yaffs_dev *dev = obj->my_dev;
int i;
- yaffs_cache_t *cache;
+ struct yaffs_cache *cache;
int n_caches = obj->my_dev->param.n_caches;
for (i = 0; i < n_caches; i++) {
}
-static void yaffs_flush_file_cache(yaffs_obj_t *obj)
+static void yaffs_flush_file_cache(struct yaffs_obj *obj)
{
- yaffs_dev_t *dev = obj->my_dev;
+ struct yaffs_dev *dev = obj->my_dev;
int lowest = -99; /* Stop compiler whining. */
int i;
- yaffs_cache_t *cache;
+ struct yaffs_cache *cache;
int chunk_written = 0;
int n_caches = obj->my_dev->param.n_caches;
*
*/
-void yaffs_flush_whole_cache(yaffs_dev_t *dev)
+void yaffs_flush_whole_cache(struct yaffs_dev *dev)
{
- yaffs_obj_t *obj;
+ struct yaffs_obj *obj;
int n_caches = dev->param.n_caches;
int i;
* Then look for the least recently used non-dirty one.
* Then look for the least recently used dirty one...., flush and look again.
*/
-static yaffs_cache_t *yaffs_grab_chunk_worker(yaffs_dev_t *dev)
+static struct yaffs_cache *yaffs_grab_chunk_worker(struct yaffs_dev *dev)
{
int i;
return NULL;
}
-static yaffs_cache_t *yaffs_grab_chunk_cache(yaffs_dev_t *dev)
+static struct yaffs_cache *yaffs_grab_chunk_cache(struct yaffs_dev *dev)
{
- yaffs_cache_t *cache;
- yaffs_obj_t *the_obj;
+ struct yaffs_cache *cache;
+ struct yaffs_obj *the_obj;
int usage;
int i;
int pushout;
}
/* Find a cached chunk */
-static yaffs_cache_t *yaffs_find_chunk_cache(const yaffs_obj_t *obj,
+static struct yaffs_cache *yaffs_find_chunk_cache(const struct yaffs_obj *obj,
int chunk_id)
{
- yaffs_dev_t *dev = obj->my_dev;
+ struct yaffs_dev *dev = obj->my_dev;
int i;
if (dev->param.n_caches > 0) {
for (i = 0; i < dev->param.n_caches; i++) {
}
/* Mark the chunk for the least recently used algorithym */
-static void yaffs_use_cache(yaffs_dev_t *dev, yaffs_cache_t *cache,
+static void yaffs_use_cache(struct yaffs_dev *dev, struct yaffs_cache *cache,
int is_write)
{
* Do this when a whole page gets written,
* ie the short cache for this page is no longer valid.
*/
-static void yaffs_invalidate_chunk_cache(yaffs_obj_t *object, int chunk_id)
+static void yaffs_invalidate_chunk_cache(struct yaffs_obj *object, int chunk_id)
{
if (object->my_dev->param.n_caches > 0) {
- yaffs_cache_t *cache = yaffs_find_chunk_cache(object, chunk_id);
+ struct yaffs_cache *cache = yaffs_find_chunk_cache(object, chunk_id);
if (cache)
cache->object = NULL;
/* Invalidate all the cache pages associated with this object
* Do this whenever ther file is deleted or resized.
*/
-static void yaffs_invalidate_whole_cache(yaffs_obj_t *in)
+static void yaffs_invalidate_whole_cache(struct yaffs_obj *in)
{
int i;
- yaffs_dev_t *dev = in->my_dev;
+ struct yaffs_dev *dev = in->my_dev;
if (dev->param.n_caches > 0) {
/* Invalidate it. */
* Curve-balls: the first chunk might also be the last chunk.
*/
-int yaffs_file_rd(yaffs_obj_t *in, __u8 *buffer, loff_t offset,
+int yaffs_file_rd(struct yaffs_obj *in, u8 *buffer, loff_t offset,
int n_bytes)
{
int chunk;
- __u32 start;
+ u32 start;
int n_copy;
int n = n_bytes;
int n_done = 0;
- yaffs_cache_t *cache;
+ struct yaffs_cache *cache;
- yaffs_dev_t *dev;
+ struct yaffs_dev *dev;
dev = in->my_dev;
} else {
/* Read into the local buffer then copy..*/
- __u8 *local_buffer =
+ u8 *local_buffer =
yaffs_get_temp_buffer(dev, __LINE__);
yaffs_rd_data_obj(in, chunk,
local_buffer);
return n_done;
}
-int yaffs_do_file_wr(yaffs_obj_t *in, const __u8 *buffer, loff_t offset,
+int yaffs_do_file_wr(struct yaffs_obj *in, const u8 *buffer, loff_t offset,
int n_bytes, int write_trhrough)
{
int chunk;
- __u32 start;
+ u32 start;
int n_copy;
int n = n_bytes;
int n_done = 0;
int n_writeback;
int start_write = offset;
int chunk_written = 0;
- __u32 n_bytes_read;
- __u32 chunk_start;
+ u32 n_bytes_read;
+ u32 chunk_start;
- yaffs_dev_t *dev;
+ struct yaffs_dev *dev;
dev = in->my_dev;
* or we're using inband tags, so we want to use the cache buffers.
*/
if (dev->param.n_caches > 0) {
- yaffs_cache_t *cache;
+ struct yaffs_cache *cache;
/* If we can't find the data in the cache, then load the cache */
cache = yaffs_find_chunk_cache(in, chunk);
* Read into the local buffer then copy, then copy over and write back.
*/
- __u8 *local_buffer =
+ u8 *local_buffer =
yaffs_get_temp_buffer(dev, __LINE__);
yaffs_rd_data_obj(in, chunk,
return n_done;
}
-int yaffs_wr_file(yaffs_obj_t *in, const __u8 *buffer, loff_t offset,
+int yaffs_wr_file(struct yaffs_obj *in, const u8 *buffer, loff_t offset,
int n_bytes, int write_trhrough)
{
yaffs2_handle_hole(in,offset);
/* ---------------------- File resizing stuff ------------------ */
-static void yaffs_prune_chunks(yaffs_obj_t *in, int new_size)
+static void yaffs_prune_chunks(struct yaffs_obj *in, int new_size)
{
- yaffs_dev_t *dev = in->my_dev;
+ struct yaffs_dev *dev = in->my_dev;
int old_size = in->variant.file_variant.file_size;
int last_del = 1 + (old_size - 1) / dev->data_bytes_per_chunk;
}
-void yaffs_resize_file_down( yaffs_obj_t *obj, loff_t new_size)
+void yaffs_resize_file_down( struct yaffs_obj *obj, loff_t new_size)
{
int new_full;
- __u32 new_partial;
- yaffs_dev_t *dev = obj->my_dev;
+ u32 new_partial;
+ struct yaffs_dev *dev = obj->my_dev;
yaffs_addr_to_chunk(dev, new_size, &new_full, &new_partial);
if (new_partial != 0) {
int last_chunk = 1 + new_full;
- __u8 *local_buffer = yaffs_get_temp_buffer(dev, __LINE__);
+ u8 *local_buffer = yaffs_get_temp_buffer(dev, __LINE__);
/* Got to read and rewrite the last chunk with its new size and zero pad */
yaffs_rd_data_obj(obj, last_chunk, local_buffer);
}
-int yaffs_resize_file(yaffs_obj_t *in, loff_t new_size)
+int yaffs_resize_file(struct yaffs_obj *in, loff_t new_size)
{
- yaffs_dev_t *dev = in->my_dev;
+ struct yaffs_dev *dev = in->my_dev;
int old_size = in->variant.file_variant.file_size;
yaffs_flush_file_cache(in);
return YAFFS_OK;
}
-loff_t yaffs_get_file_size(yaffs_obj_t *obj)
+loff_t yaffs_get_file_size(struct yaffs_obj *obj)
{
YCHAR *alias = NULL;
obj = yaffs_get_equivalent_obj(obj);
-int yaffs_flush_file(yaffs_obj_t *in, int update_time, int data_sync)
+int yaffs_flush_file(struct yaffs_obj *in, int update_time, int data_sync)
{
int ret_val;
if (in->dirty) {
}
-static int yaffs_generic_obj_del(yaffs_obj_t *in)
+static int yaffs_generic_obj_del(struct yaffs_obj *in)
{
/* First off, invalidate the file's data in the cache, without flushing. */
* and the inode associated with the file.
* It does not delete the links associated with the file.
*/
-static int yaffs_unlink_file_if_needed(yaffs_obj_t *in)
+static int yaffs_unlink_file_if_needed(struct yaffs_obj *in)
{
int ret_val;
int del_now = 0;
- yaffs_dev_t *dev = in->my_dev;
+ struct yaffs_dev *dev = in->my_dev;
if (!in->my_inode)
del_now = 1;
return ret_val;
}
-int yaffs_del_file(yaffs_obj_t *in)
+int yaffs_del_file(struct yaffs_obj *in)
{
int ret_val = YAFFS_OK;
int deleted; /* Need to cache value on stack if in is freed */
- yaffs_dev_t *dev = in->my_dev;
+ struct yaffs_dev *dev = in->my_dev;
if (dev->param.disable_soft_del || dev->param.is_yaffs2)
yaffs_resize_file(in, 0);
}
}
-static int yaffs_is_non_empty_dir(yaffs_obj_t *obj)
+static int yaffs_is_non_empty_dir(struct yaffs_obj *obj)
{
return (obj->variant_type == YAFFS_OBJECT_TYPE_DIRECTORY) &&
!(ylist_empty(&obj->variant.dir_variant.children));
}
-static int yaffs_del_dir(yaffs_obj_t *obj)
+static int yaffs_del_dir(struct yaffs_obj *obj)
{
/* First check that the directory is empty. */
if (yaffs_is_non_empty_dir(obj))
return yaffs_generic_obj_del(obj);
}
-static int yaffs_del_symlink(yaffs_obj_t *in)
+static int yaffs_del_symlink(struct yaffs_obj *in)
{
if(in->variant.symlink_variant.alias)
YFREE(in->variant.symlink_variant.alias);
return yaffs_generic_obj_del(in);
}
-static int yaffs_del_link(yaffs_obj_t *in)
+static int yaffs_del_link(struct yaffs_obj *in)
{
/* remove this hardlink from the list assocaited with the equivalent
* object
return yaffs_generic_obj_del(in);
}
-int yaffs_del_obj(yaffs_obj_t *obj)
+int yaffs_del_obj(struct yaffs_obj *obj)
{
int ret_val = -1;
switch (obj->variant_type) {
return ret_val;
}
-static int yaffs_unlink_worker(yaffs_obj_t *obj)
+static int yaffs_unlink_worker(struct yaffs_obj *obj)
{
int del_now = 0;
* - Delete the hardlink
*/
- yaffs_obj_t *hl;
- yaffs_obj_t *parent;
+ struct yaffs_obj *hl;
+ struct yaffs_obj *parent;
int ret_val;
YCHAR name[YAFFS_MAX_NAME_LENGTH + 1];
- hl = ylist_entry(obj->hard_links.next, yaffs_obj_t, hard_links);
+ hl = ylist_entry(obj->hard_links.next, struct yaffs_obj, hard_links);
yaffs_get_obj_name(hl, name, YAFFS_MAX_NAME_LENGTH + 1);
parent = hl->parent;
}
-static int yaffs_unlink_obj(yaffs_obj_t *obj)
+static int yaffs_unlink_obj(struct yaffs_obj *obj)
{
if (obj && obj->unlink_allowed)
return YAFFS_FAIL;
}
-int yaffs_unlinker(yaffs_obj_t *dir, const YCHAR *name)
+int yaffs_unlinker(struct yaffs_obj *dir, const YCHAR *name)
{
- yaffs_obj_t *obj;
+ struct yaffs_obj *obj;
obj = yaffs_find_by_name(dir, name);
return yaffs_unlink_obj(obj);
/*----------------------- Initialisation Scanning ---------------------- */
-void yaffs_handle_shadowed_obj(yaffs_dev_t *dev, int obj_id,
+void yaffs_handle_shadowed_obj(struct yaffs_dev *dev, int obj_id,
int backward_scanning)
{
- yaffs_obj_t *obj;
+ struct yaffs_obj *obj;
if (!backward_scanning) {
/* Handle YAFFS1 forward scanning case
}
-void yaffs_link_fixup(yaffs_dev_t *dev, yaffs_obj_t *hard_list)
+void yaffs_link_fixup(struct yaffs_dev *dev, struct yaffs_obj *hard_list)
{
- yaffs_obj_t *hl;
- yaffs_obj_t *in;
+ struct yaffs_obj *hl;
+ struct yaffs_obj *in;
while (hard_list) {
hl = hard_list;
- hard_list = (yaffs_obj_t *) (hard_list->hard_links.next);
+ hard_list = (struct yaffs_obj *) (hard_list->hard_links.next);
in = yaffs_find_by_number(dev,
hl->variant.hardlink_variant.
}
-static void yaffs_strip_deleted_objs(yaffs_dev_t *dev)
+static void yaffs_strip_deleted_objs(struct yaffs_dev *dev)
{
/*
* Sort out state of unlinked and deleted objects after scanning.
*/
struct ylist_head *i;
struct ylist_head *n;
- yaffs_obj_t *l;
+ struct yaffs_obj *l;
if (dev->read_only)
return;
ylist_for_each_safe(i, n,
&dev->unlinked_dir->variant.dir_variant.children) {
if (i) {
- l = ylist_entry(i, yaffs_obj_t, siblings);
+ l = ylist_entry(i, struct yaffs_obj, siblings);
yaffs_del_obj(l);
}
}
ylist_for_each_safe(i, n,
&dev->del_dir->variant.dir_variant.children) {
if (i) {
- l = ylist_entry(i, yaffs_obj_t, siblings);
+ l = ylist_entry(i, struct yaffs_obj, siblings);
yaffs_del_obj(l);
}
}
* leaving the object "hanging" without being rooted in the directory tree.
*/
-static int yaffs_has_null_parent(yaffs_dev_t *dev, yaffs_obj_t *obj)
+static int yaffs_has_null_parent(struct yaffs_dev *dev, struct yaffs_obj *obj)
{
return (obj == dev->del_dir ||
obj == dev->unlinked_dir||
obj == dev->root_dir);
}
-static void yaffs_fix_hanging_objs(yaffs_dev_t *dev)
+static void yaffs_fix_hanging_objs(struct yaffs_dev *dev)
{
- yaffs_obj_t *obj;
- yaffs_obj_t *parent;
+ struct yaffs_obj *obj;
+ struct yaffs_obj *parent;
int i;
struct ylist_head *lh;
struct ylist_head *n;
for (i = 0; i < YAFFS_NOBJECT_BUCKETS; i++) {
ylist_for_each_safe(lh, n, &dev->obj_bucket[i].list) {
if (lh) {
- obj = ylist_entry(lh, yaffs_obj_t, hash_link);
+ obj = ylist_entry(lh, struct yaffs_obj, hash_link);
parent= obj->parent;
if(yaffs_has_null_parent(dev,obj)){
/*
* Delete directory contents for cleaning up lost and found.
*/
-static void yaffs_del_dir_contents(yaffs_obj_t *dir)
+static void yaffs_del_dir_contents(struct yaffs_obj *dir)
{
- yaffs_obj_t *obj;
+ struct yaffs_obj *obj;
struct ylist_head *lh;
struct ylist_head *n;
ylist_for_each_safe(lh, n, &dir->variant.dir_variant.children) {
if (lh) {
- obj = ylist_entry(lh, yaffs_obj_t, siblings);
+ obj = ylist_entry(lh, struct yaffs_obj, siblings);
if(obj->variant_type == YAFFS_OBJECT_TYPE_DIRECTORY)
yaffs_del_dir_contents(obj);
}
-static void yaffs_empty_l_n_f(yaffs_dev_t *dev)
+static void yaffs_empty_l_n_f(struct yaffs_dev *dev)
{
yaffs_del_dir_contents(dev->lost_n_found);
}
-static void yaffs_check_obj_details_loaded(yaffs_obj_t *in)
+static void yaffs_check_obj_details_loaded(struct yaffs_obj *in)
{
- __u8 *chunk_data;
- yaffs_obj_header *oh;
- yaffs_dev_t *dev;
- yaffs_ext_tags tags;
+ u8 *chunk_data;
+ struct yaffs_obj_hdr *oh;
+ struct yaffs_dev *dev;
+ struct yaffs_ext_tags tags;
int result;
int alloc_failed = 0;
dev = in->my_dev;
-#if 0
- T(YAFFS_TRACE_SCAN, (TSTR("details for object %d %s loaded" TENDSTR),
- in->obj_id,
- in->lazy_loaded ? "not yet" : "already"));
-#endif
-
if (in->lazy_loaded && in->hdr_chunk > 0) {
in->lazy_loaded = 0;
chunk_data = yaffs_get_temp_buffer(dev, __LINE__);
result = yaffs_rd_chunk_tags_nand(dev, in->hdr_chunk, chunk_data, &tags);
- oh = (yaffs_obj_header *) chunk_data;
+ oh = (struct yaffs_obj_hdr *) chunk_data;
in->yst_mode = oh->yst_mode;
#ifdef CONFIG_YAFFS_WINCE
* called periodically.
*/
-static void yaffs_update_parent(yaffs_obj_t *obj)
+static void yaffs_update_parent(struct yaffs_obj *obj)
{
- yaffs_dev_t *dev;
+ struct yaffs_dev *dev;
if(!obj)
return;
#ifndef CONFIG_YAFFS_WINCE
#endif
}
-void yaffs_update_dirty_dirs(yaffs_dev_t *dev)
+void yaffs_update_dirty_dirs(struct yaffs_dev *dev)
{
struct ylist_head *link;
- yaffs_obj_t *obj;
- yaffs_dir_s *d_s;
- yaffs_obj_variant *o_v;
+ struct yaffs_obj *obj;
+ struct yaffs_dir_var *d_s;
+ union yaffs_obj_var *o_v;
T(YAFFS_TRACE_BACKGROUND, (TSTR("Update dirty directories" TENDSTR)));
link = dev->dirty_dirs.next;
ylist_del_init(link);
- d_s=ylist_entry(link,yaffs_dir_s,dirty);
- o_v = ylist_entry(d_s,yaffs_obj_variant,dir_variant);
- obj = ylist_entry(o_v,yaffs_obj_t,variant);
+ d_s=ylist_entry(link,struct yaffs_dir_var,dirty);
+ o_v = ylist_entry(d_s,union yaffs_obj_var,dir_variant);
+ obj = ylist_entry(o_v,struct yaffs_obj,variant);
T(YAFFS_TRACE_BACKGROUND, (TSTR("Update directory %d" TENDSTR), obj->obj_id));
}
}
-static void yaffs_remove_obj_from_dir(yaffs_obj_t *obj)
+static void yaffs_remove_obj_from_dir(struct yaffs_obj *obj)
{
- yaffs_dev_t *dev = obj->my_dev;
- yaffs_obj_t *parent;
+ struct yaffs_dev *dev = obj->my_dev;
+ struct yaffs_obj *parent;
yaffs_verify_obj_in_dir(obj);
parent = obj->parent;
yaffs_verify_dir(parent);
}
-void yaffs_add_obj_to_dir(yaffs_obj_t *directory,
- yaffs_obj_t *obj)
+void yaffs_add_obj_to_dir(struct yaffs_obj *directory,
+ struct yaffs_obj *obj)
{
if (!directory) {
T(YAFFS_TRACE_ALWAYS,
yaffs_verify_obj_in_dir(obj);
}
-yaffs_obj_t *yaffs_find_by_name(yaffs_obj_t *directory,
+struct yaffs_obj *yaffs_find_by_name(struct yaffs_obj *directory,
const YCHAR *name)
{
int sum;
struct ylist_head *i;
YCHAR buffer[YAFFS_MAX_NAME_LENGTH + 1];
- yaffs_obj_t *l;
+ struct yaffs_obj *l;
if (!name)
return NULL;
ylist_for_each(i, &directory->variant.dir_variant.children) {
if (i) {
- l = ylist_entry(i, yaffs_obj_t, siblings);
+ l = ylist_entry(i, struct yaffs_obj, siblings);
if (l->parent != directory)
YBUG();
}
-#if 0
-int yaffs_ApplyToDirectoryChildren(yaffs_obj_t *the_dir,
- int (*fn) (yaffs_obj_t *))
-{
- struct ylist_head *i;
- yaffs_obj_t *l;
-
- if (!the_dir) {
- T(YAFFS_TRACE_ALWAYS,
- (TSTR
- ("tragedy: yaffs_find_by_name: null pointer directory"
- TENDSTR)));
- YBUG();
- return YAFFS_FAIL;
- }
- if (the_dir->variant_type != YAFFS_OBJECT_TYPE_DIRECTORY) {
- T(YAFFS_TRACE_ALWAYS,
- (TSTR
- ("tragedy: yaffs_find_by_name: non-directory" TENDSTR)));
- YBUG();
- return YAFFS_FAIL;
- }
-
- ylist_for_each(i, &the_dir->variant.dir_variant.children) {
- if (i) {
- l = ylist_entry(i, yaffs_obj_t, siblings);
- if (l && !fn(l))
- return YAFFS_FAIL;
- }
- }
-
- return YAFFS_OK;
-
-}
-#endif
-
/* GetEquivalentObject dereferences any hard links to get to the
* actual object.
*/
-yaffs_obj_t *yaffs_get_equivalent_obj(yaffs_obj_t *obj)
+struct yaffs_obj *yaffs_get_equivalent_obj(struct yaffs_obj *obj)
{
if (obj && obj->variant_type == YAFFS_OBJECT_TYPE_HARDLINK) {
/* We want the object id of the equivalent object, not this one */
* starting at oh->name[1].
*/
-static void yaffs_fix_null_name(yaffs_obj_t * obj,YCHAR * name, int buffer_size)
+static void yaffs_fix_null_name(struct yaffs_obj * obj,YCHAR * name, int buffer_size)
{
/* Create an object name if we could not find one. */
if(yaffs_strnlen(name,YAFFS_MAX_NAME_LENGTH) == 0){
}
}
-static void yaffs_load_name_from_oh(yaffs_dev_t *dev,YCHAR *name, const YCHAR *oh_name, int buff_size)
+static void yaffs_load_name_from_oh(struct yaffs_dev *dev,YCHAR *name, const YCHAR *oh_name, int buff_size)
{
#ifdef CONFIG_YAFFS_AUTO_UNICODE
if(dev->param.auto_unicode){
}
-static void yaffs_load_oh_from_name(yaffs_dev_t *dev, YCHAR *oh_name, const YCHAR *name)
+static void yaffs_load_oh_from_name(struct yaffs_dev *dev, YCHAR *oh_name, const YCHAR *name)
{
#ifdef CONFIG_YAFFS_AUTO_UNICODE
}
-int yaffs_get_obj_name(yaffs_obj_t * obj, YCHAR * name, int buffer_size)
+int yaffs_get_obj_name(struct yaffs_obj * obj, YCHAR * name, int buffer_size)
{
memset(name, 0, buffer_size * sizeof(YCHAR));
#endif
else if(obj->hdr_chunk > 0) {
int result;
- __u8 *buffer = yaffs_get_temp_buffer(obj->my_dev, __LINE__);
+ u8 *buffer = yaffs_get_temp_buffer(obj->my_dev, __LINE__);
- yaffs_obj_header *oh = (yaffs_obj_header *) buffer;
+ struct yaffs_obj_hdr *oh = (struct yaffs_obj_hdr *) buffer;
memset(buffer, 0, obj->my_dev->data_bytes_per_chunk);
}
-int yaffs_get_obj_length(yaffs_obj_t *obj)
+int yaffs_get_obj_length(struct yaffs_obj *obj)
{
/* Dereference any hard linking */
obj = yaffs_get_equivalent_obj(obj);
}
}
-int yaffs_get_obj_link_count(yaffs_obj_t *obj)
+int yaffs_get_obj_link_count(struct yaffs_obj *obj)
{
int count = 0;
struct ylist_head *i;
return count;
}
-int yaffs_get_obj_inode(yaffs_obj_t *obj)
+int yaffs_get_obj_inode(struct yaffs_obj *obj)
{
obj = yaffs_get_equivalent_obj(obj);
return obj->obj_id;
}
-unsigned yaffs_get_obj_type(yaffs_obj_t *obj)
+unsigned yaffs_get_obj_type(struct yaffs_obj *obj)
{
obj = yaffs_get_equivalent_obj(obj);
}
}
-YCHAR *yaffs_get_symlink_alias(yaffs_obj_t *obj)
+YCHAR *yaffs_get_symlink_alias(struct yaffs_obj *obj)
{
obj = yaffs_get_equivalent_obj(obj);
if (obj->variant_type == YAFFS_OBJECT_TYPE_SYMLINK)
#ifndef CONFIG_YAFFS_WINCE
-int yaffs_set_attribs(yaffs_obj_t *obj, struct iattr *attr)
+int yaffs_set_attribs(struct yaffs_obj *obj, struct iattr *attr)
{
unsigned int valid = attr->ia_valid;
return YAFFS_OK;
}
-int yaffs_get_attribs(yaffs_obj_t *obj, struct iattr *attr)
+int yaffs_get_attribs(struct yaffs_obj *obj, struct iattr *attr)
{
unsigned int valid = 0;
#endif
-static int yaffs_do_xattrib_mod(yaffs_obj_t *obj, int set, const YCHAR *name, const void *value, int size, int flags)
+static int yaffs_do_xattrib_mod(struct yaffs_obj *obj, int set, const YCHAR *name, const void *value, int size, int flags)
{
- yaffs_xattr_mod xmod;
+ struct yaffs_xattr_mod xmod;
int result;
return -ENOSPC;
}
-static int yaffs_apply_xattrib_mod(yaffs_obj_t *obj, char *buffer, yaffs_xattr_mod *xmod)
+static int yaffs_apply_xattrib_mod(struct yaffs_obj *obj, char *buffer, struct yaffs_xattr_mod *xmod)
{
int retval = 0;
- int x_offs = sizeof(yaffs_obj_header);
- yaffs_dev_t *dev = obj->my_dev;
- int x_size = dev->data_bytes_per_chunk - sizeof(yaffs_obj_header);
+ int x_offs = sizeof(struct yaffs_obj_hdr);
+ struct yaffs_dev *dev = obj->my_dev;
+ int x_size = dev->data_bytes_per_chunk - sizeof(struct yaffs_obj_hdr);
char * x_buffer = buffer + x_offs;
return retval;
}
-static int yaffs_do_xattrib_fetch(yaffs_obj_t *obj, const YCHAR *name, void *value, int size)
+static int yaffs_do_xattrib_fetch(struct yaffs_obj *obj, const YCHAR *name, void *value, int size)
{
char *buffer = NULL;
int result;
- yaffs_ext_tags tags;
- yaffs_dev_t *dev = obj->my_dev;
- int x_offs = sizeof(yaffs_obj_header);
- int x_size = dev->data_bytes_per_chunk - sizeof(yaffs_obj_header);
+ struct yaffs_ext_tags tags;
+ struct yaffs_dev *dev = obj->my_dev;
+ int x_offs = sizeof(struct yaffs_obj_hdr);
+ int x_size = dev->data_bytes_per_chunk - sizeof(struct yaffs_obj_hdr);
char * x_buffer;
if(!buffer)
return -ENOMEM;
- result = yaffs_rd_chunk_tags_nand(dev,obj->hdr_chunk, (__u8 *)buffer, &tags);
+ result = yaffs_rd_chunk_tags_nand(dev,obj->hdr_chunk, (u8 *)buffer, &tags);
if(result != YAFFS_OK)
retval = -ENOENT;
else
retval = nval_list(x_buffer, x_size, value,size);
}
- yaffs_release_temp_buffer(dev,(__u8 *)buffer,__LINE__);
+ yaffs_release_temp_buffer(dev,(u8 *)buffer,__LINE__);
return retval;
}
-int yaffs_set_xattrib(yaffs_obj_t *obj, const YCHAR *name, const void * value, int size, int flags)
+int yaffs_set_xattrib(struct yaffs_obj *obj, const YCHAR *name, const void * value, int size, int flags)
{
return yaffs_do_xattrib_mod(obj, 1, name, value, size, flags);
}
-int yaffs_remove_xattrib(yaffs_obj_t *obj, const YCHAR *name)
+int yaffs_remove_xattrib(struct yaffs_obj *obj, const YCHAR *name)
{
return yaffs_do_xattrib_mod(obj, 0, name, NULL, 0, 0);
}
-int yaffs_get_xattrib(yaffs_obj_t *obj, const YCHAR *name, void *value, int size)
+int yaffs_get_xattrib(struct yaffs_obj *obj, const YCHAR *name, void *value, int size)
{
return yaffs_do_xattrib_fetch(obj, name, value, size);
}
-int yaffs_list_xattrib(yaffs_obj_t *obj, char *buffer, int size)
+int yaffs_list_xattrib(struct yaffs_obj *obj, char *buffer, int size)
{
return yaffs_do_xattrib_fetch(obj, NULL, buffer,size);
}
-
-
-#if 0
-int yaffs_dump_obj(yaffs_obj_t *obj)
-{
- YCHAR name[257];
-
- yaffs_get_obj_name(obj, name, YAFFS_MAX_NAME_LENGTH + 1);
-
- T(YAFFS_TRACE_ALWAYS,
- (TSTR
- ("Object %d, inode %d \"%s\"\n dirty %d valid %d serial %d sum %d"
- " chunk %d type %d size %d\n"
- TENDSTR), obj->obj_id, yaffs_get_obj_inode(obj), name,
- obj->dirty, obj->valid, obj->serial, obj->sum, obj->hdr_chunk,
- yaffs_get_obj_type(obj), yaffs_get_obj_length(obj)));
-
- return YAFFS_OK;
-}
-#endif
-
/*---------------------------- Initialisation code -------------------------------------- */
-static int yaffs_cehck_dev_fns(const yaffs_dev_t *dev)
+static int yaffs_check_dev_fns(const struct yaffs_dev *dev)
{
/* Common functions, gotta have */
}
-static int yaffs_create_initial_dir(yaffs_dev_t *dev)
+static int yaffs_create_initial_dir(struct yaffs_dev *dev)
{
/* Initialise the unlinked, deleted, root and lost and found directories */
return YAFFS_FAIL;
}
-int yaffs_guts_initialise(yaffs_dev_t *dev)
+int yaffs_guts_initialise(struct yaffs_dev *dev)
{
int init_failed = 0;
unsigned x;
dev->data_bytes_per_chunk = dev->param.total_bytes_per_chunk;
/* Got the right mix of functions? */
- if (!yaffs_cehck_dev_fns(dev)) {
+ if (!yaffs_check_dev_fns(dev)) {
/* Function missing */
T(YAFFS_TRACE_ALWAYS,
(TSTR
dev->chunk_grp_bits = bits - dev->tnode_width;
dev->tnode_size = (dev->tnode_width * YAFFS_NTNODES_LEVEL0)/8;
- if(dev->tnode_size < sizeof(yaffs_tnode_t))
- dev->tnode_size = sizeof(yaffs_tnode_t);
+ if(dev->tnode_size < sizeof(struct yaffs_tnode))
+ dev->tnode_size = sizeof(struct yaffs_tnode);
dev->chunk_grp_size = 1 << dev->chunk_grp_bits;
dev->param.n_caches > 0) {
int i;
void *buf;
- int cache_bytes = dev->param.n_caches * sizeof(yaffs_cache_t);
+ int cache_bytes = dev->param.n_caches * sizeof(struct yaffs_cache);
if (dev->param.n_caches > YAFFS_MAX_SHORT_OP_CACHES)
dev->param.n_caches = YAFFS_MAX_SHORT_OP_CACHES;
dev->cache = YMALLOC(cache_bytes);
- buf = (__u8 *) dev->cache;
+ buf = (u8 *) dev->cache;
if (dev->cache)
memset(dev->cache, 0, cache_bytes);
dev->cache_hits = 0;
if (!init_failed) {
- dev->gc_cleanup_list = YMALLOC(dev->param.chunks_per_block * sizeof(__u32));
+ dev->gc_cleanup_list = YMALLOC(dev->param.chunks_per_block * sizeof(u32));
if (!dev->gc_cleanup_list)
init_failed = 1;
}
}
-void yaffs_deinitialise(yaffs_dev_t *dev)
+void yaffs_deinitialise(struct yaffs_dev *dev)
{
if (dev->is_mounted) {
int i;
}
}
-int yaffs_count_free_chunks(yaffs_dev_t *dev)
+int yaffs_count_free_chunks(struct yaffs_dev *dev)
{
int n_free=0;
int b;
- yaffs_block_info_t *blk;
+ struct yaffs_block_info *blk;
blk = dev->block_info;
for (b = dev->internal_start_block; b <= dev->internal_end_block; b++) {
return n_free;
}
-int yaffs_get_n_free_chunks(yaffs_dev_t *dev)
+int yaffs_get_n_free_chunks(struct yaffs_dev *dev)
{
/* This is what we report to the outside world */
int blocks_for_checkpt;
int i;
-#if 1
n_free = dev->n_free_chunks;
-#else
- n_free = yaffs_count_free_chunks(dev);
-#endif
-
n_free += dev->n_deleted_files;
/* Now count the number of dirty chunks in the cache and subtract those */
static int yaffs_check_structures(void)
{
-/* yaffs_check_struct(yaffs_tags_t,8,"yaffs_tags_t"); */
-/* yaffs_check_struct(yaffs_tags_union_t,8,"yaffs_tags_union_t"); */
-/* yaffs_check_struct(yaffs_spare,16,"yaffs_spare"); */
-/* yaffs_check_struct(yaffs_tnode_t, 2 * YAFFS_NTNODES_LEVEL0, "yaffs_tnode_t"); */
+/* yaffs_check_struct(struct yaffs_tags,8,"struct yaffs_tags"); */
+/* yaffs_check_struct(union yaffs_tags_union,8,"union yaffs_tags_union"); */
+/* yaffs_check_struct(struct yaffs_spare,16,"struct yaffs_spare"); */
+/* yaffs_check_struct(struct yaffs_tnode, 2 * YAFFS_NTNODES_LEVEL0, "struct yaffs_tnode"); */
#ifndef CONFIG_YAFFS_WINCE
- yaffs_check_struct(yaffs_obj_header, 512, "yaffs_obj_header");
+ yaffs_check_struct(struct yaffs_obj_hdr, 512, "struct yaffs_obj_hdr");
#endif
return YAFFS_OK;
}