From: Charles Manning Date: Mon, 7 Mar 2011 03:25:28 +0000 (+1300) Subject: yaffs: Remove debugging argument from temp buffer handling X-Git-Tag: pre-block-summary~2 X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs2.git;a=commitdiff_plain;h=bf4900527f7eab3a629498f2aedbaebf259a6f7a yaffs: Remove debugging argument from temp buffer handling No longer track the line number used for allocation. Signed-off-by: Charles Manning --- diff --git a/direct/basic-test/yaffs_fileem2k.c b/direct/basic-test/yaffs_fileem2k.c index 17eb908..836d1f7 100644 --- a/direct/basic-test/yaffs_fileem2k.c +++ b/direct/basic-test/yaffs_fileem2k.c @@ -406,7 +406,7 @@ int yflash2_ReadChunkWithTagsFromNAND(struct yaffs_dev *dev,int nand_chunk, u8 * /* Got to suck the tags out of the data area */ if(!data) { localData=1; - data = yaffs_get_temp_buffer(dev,__LINE__); + data = yaffs_get_temp_buffer(dev); } @@ -427,7 +427,7 @@ int yflash2_ReadChunkWithTagsFromNAND(struct yaffs_dev *dev,int nand_chunk, u8 * retval = YAFFS_FAIL; if(localData) - yaffs_release_temp_buffer(dev,data,__LINE__); + yaffs_release_temp_buffer(dev, data); diff --git a/direct/yaffs_nandif.c b/direct/yaffs_nandif.c index 0450487..b93b55a 100644 --- a/direct/yaffs_nandif.c +++ b/direct/yaffs_nandif.c @@ -92,7 +92,7 @@ int ynandif_ReadChunkWithTagsFromNAND(struct yaffs_dev * dev, int nand_chunk, if(!data) { localData = 1; - data = yaffs_get_temp_buffer(dev,__LINE__); + data = yaffs_get_temp_buffer(dev); } spare = NULL; spareSize = 0; @@ -133,7 +133,7 @@ int ynandif_ReadChunkWithTagsFromNAND(struct yaffs_dev * dev, int nand_chunk, } if(localData) - yaffs_release_temp_buffer(dev,data,__LINE__); + yaffs_release_temp_buffer(dev, data); return retval; } diff --git a/yaffs_guts.c b/yaffs_guts.c index c6d508c..109a0b7 100644 --- a/yaffs_guts.c +++ b/yaffs_guts.c @@ -127,44 +127,30 @@ static int yaffs_init_tmp_buffers(struct yaffs_dev *dev) memset(dev->temp_buffer, 0, sizeof(dev->temp_buffer)); for (i = 0; buf && i < YAFFS_N_TEMP_BUFFERS; i++) { - dev->temp_buffer[i].line = 0; /* not in use */ - dev->temp_buffer[i].buffer = buf = - kmalloc(dev->param.total_bytes_per_chunk, GFP_NOFS); + dev->temp_buffer[i].in_use = 0; + buf = kmalloc(dev->param.total_bytes_per_chunk, GFP_NOFS); + dev->temp_buffer[i].buffer = buf; } return buf ? YAFFS_OK : YAFFS_FAIL; } -u8 *yaffs_get_temp_buffer(struct yaffs_dev * dev, int line_no) +u8 *yaffs_get_temp_buffer(struct yaffs_dev * dev) { int i; - int j; dev->temp_in_use++; if (dev->temp_in_use > dev->max_temp) dev->max_temp = dev->temp_in_use; for (i = 0; i < YAFFS_N_TEMP_BUFFERS; i++) { - if (dev->temp_buffer[i].line == 0) { - dev->temp_buffer[i].line = line_no; - if ((i + 1) > dev->max_temp) { - dev->max_temp = i + 1; - for (j = 0; j <= i; j++) - dev->temp_buffer[j].max_line = - dev->temp_buffer[j].line; - } - + if (dev->temp_buffer[i].in_use == 0) { + dev->temp_buffer[i].in_use = 1; return dev->temp_buffer[i].buffer; } } - yaffs_trace(YAFFS_TRACE_BUFFERS, - "Out of temp buffers at line %d, other held by lines:", - line_no); - for (i = 0; i < YAFFS_N_TEMP_BUFFERS; i++) - yaffs_trace(YAFFS_TRACE_BUFFERS, - " %d", dev->temp_buffer[i].line); - + yaffs_trace(YAFFS_TRACE_BUFFERS, "Out of temp buffers"); /* * If we got here then we have to allocate an unmanaged one * This is not good. @@ -175,7 +161,7 @@ u8 *yaffs_get_temp_buffer(struct yaffs_dev * dev, int line_no) } -void yaffs_release_temp_buffer(struct yaffs_dev *dev, u8 *buffer, int line_no) +void yaffs_release_temp_buffer(struct yaffs_dev *dev, u8 *buffer) { int i; @@ -183,16 +169,14 @@ void yaffs_release_temp_buffer(struct yaffs_dev *dev, u8 *buffer, int line_no) for (i = 0; i < YAFFS_N_TEMP_BUFFERS; i++) { if (dev->temp_buffer[i].buffer == buffer) { - dev->temp_buffer[i].line = 0; + dev->temp_buffer[i].in_use = 0; return; } } if (buffer) { /* assume it is an unmanaged one. */ - yaffs_trace(YAFFS_TRACE_BUFFERS, - "Releasing unmanaged temp buffer in line %d", - line_no); + yaffs_trace(YAFFS_TRACE_BUFFERS, "Releasing unmanaged temp buffer"); kfree(buffer); dev->unmanaged_buffer_deallocs++; } @@ -332,7 +316,7 @@ int yaffs_check_ff(u8 *buffer, int n_bytes) 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__); + u8 *data = yaffs_get_temp_buffer(dev); struct yaffs_ext_tags tags; int result; @@ -348,7 +332,7 @@ static int yaffs_check_chunk_erased(struct yaffs_dev *dev, int nand_chunk) retval = YAFFS_FAIL; } - yaffs_release_temp_buffer(dev, data, __LINE__); + yaffs_release_temp_buffer(dev, data); return retval; @@ -361,7 +345,7 @@ static int yaffs_verify_chunk_written(struct yaffs_dev *dev, { int retval = YAFFS_OK; struct yaffs_ext_tags temp_tags; - u8 *buffer = yaffs_get_temp_buffer(dev, __LINE__); + u8 *buffer = yaffs_get_temp_buffer(dev); int result; result = yaffs_rd_chunk_tags_nand(dev, nand_chunk, buffer, &temp_tags); @@ -371,7 +355,7 @@ static int yaffs_verify_chunk_written(struct yaffs_dev *dev, temp_tags.n_bytes != tags->n_bytes) retval = YAFFS_FAIL; - yaffs_release_temp_buffer(dev, buffer, __LINE__); + yaffs_release_temp_buffer(dev, buffer); return retval; } @@ -641,7 +625,7 @@ static void yaffs_retire_block(struct yaffs_dev *dev, int flash_block) 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); memset(buffer, 0xff, dev->data_bytes_per_chunk); memset(&tags, 0, sizeof(tags)); @@ -654,7 +638,7 @@ static void yaffs_retire_block(struct yaffs_dev *dev, int flash_block) "yaffs: Failed to write bad block marker to block %d", flash_block); - yaffs_release_temp_buffer(dev, buffer, __LINE__); + yaffs_release_temp_buffer(dev, buffer); } } @@ -2580,7 +2564,7 @@ static int yaffs_gc_block(struct yaffs_dev *dev, int block, int whole_block) yaffs_block_became_dirty(dev, block); } else { - u8 *buffer = yaffs_get_temp_buffer(dev, __LINE__); + u8 *buffer = yaffs_get_temp_buffer(dev); yaffs_verify_blk(dev, bi, block); @@ -2600,7 +2584,7 @@ static int yaffs_gc_block(struct yaffs_dev *dev, int block, int whole_block) old_chunk, buffer); } } - yaffs_release_temp_buffer(dev, buffer, __LINE__); + yaffs_release_temp_buffer(dev, buffer); } yaffs_verify_collected_blk(dev, bi, block); @@ -3126,7 +3110,7 @@ static int yaffs_do_xattrib_fetch(struct yaffs_obj *obj, const YCHAR *name, return 0; } - buffer = (char *)yaffs_get_temp_buffer(dev, __LINE__); + buffer = (char *)yaffs_get_temp_buffer(dev); if (!buffer) return -ENOMEM; @@ -3148,7 +3132,7 @@ static int yaffs_do_xattrib_fetch(struct yaffs_obj *obj, const YCHAR *name, 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); return retval; } @@ -3188,7 +3172,7 @@ static void yaffs_check_obj_details_loaded(struct yaffs_obj *in) dev = in->my_dev; in->lazy_loaded = 0; - buf = yaffs_get_temp_buffer(dev, __LINE__); + buf = yaffs_get_temp_buffer(dev); result = yaffs_rd_chunk_tags_nand(dev, in->hdr_chunk, buf, &tags); oh = (struct yaffs_obj_hdr *)buf; @@ -3203,7 +3187,7 @@ static void yaffs_check_obj_details_loaded(struct yaffs_obj *in) if (!in->variant.symlink_variant.alias) alloc_failed = 1; /* Not returned */ } - yaffs_release_temp_buffer(dev, buf, __LINE__); + yaffs_release_temp_buffer(dev, buf); } static void yaffs_load_name_from_oh(struct yaffs_dev *dev, YCHAR *name, @@ -3304,7 +3288,7 @@ int yaffs_update_oh(struct yaffs_obj *in, const YCHAR *name, int force, yaffs_check_gc(dev, 0); yaffs_check_obj_details_loaded(in); - buffer = yaffs_get_temp_buffer(in->my_dev, __LINE__); + buffer = yaffs_get_temp_buffer(in->my_dev); oh = (struct yaffs_obj_hdr *)buffer; prev_chunk_id = in->hdr_chunk; @@ -3397,7 +3381,7 @@ int yaffs_update_oh(struct yaffs_obj *in, const YCHAR *name, int force, (prev_chunk_id > 0) ? 1 : 0); if (buffer) - yaffs_release_temp_buffer(dev, buffer, __LINE__); + yaffs_release_temp_buffer(dev, buffer); if (new_chunk_id < 0) return new_chunk_id; @@ -3493,13 +3477,12 @@ int yaffs_file_rd(struct yaffs_obj *in, u8 * buffer, loff_t offset, int n_bytes) /* Read into the local buffer then copy.. */ u8 *local_buffer = - yaffs_get_temp_buffer(dev, __LINE__); + yaffs_get_temp_buffer(dev); yaffs_rd_data_obj(in, chunk, local_buffer); memcpy(buffer, &local_buffer[start], n_copy); - yaffs_release_temp_buffer(dev, local_buffer, - __LINE__); + yaffs_release_temp_buffer(dev, local_buffer); } } else { /* A full chunk. Read directly into the buffer. */ @@ -3641,8 +3624,7 @@ int yaffs_do_file_wr(struct yaffs_obj *in, const u8 *buffer, loff_t offset, * local buffer then copy over and write back. */ - u8 *local_buffer = - yaffs_get_temp_buffer(dev, __LINE__); + u8 *local_buffer = yaffs_get_temp_buffer(dev); yaffs_rd_data_obj(in, chunk, local_buffer); memcpy(&local_buffer[start], buffer, n_copy); @@ -3652,8 +3634,7 @@ int yaffs_do_file_wr(struct yaffs_obj *in, const u8 *buffer, loff_t offset, local_buffer, n_writeback, 0); - yaffs_release_temp_buffer(dev, local_buffer, - __LINE__); + yaffs_release_temp_buffer(dev, local_buffer); } } else { /* A full chunk. Write directly from the buffer. */ @@ -3746,7 +3727,7 @@ void yaffs_resize_file_down(struct yaffs_obj *obj, loff_t new_size) 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); /* Rewrite the last chunk with its new size and zero pad */ yaffs_rd_data_obj(obj, last_chunk, local_buffer); @@ -3756,7 +3737,7 @@ void yaffs_resize_file_down(struct yaffs_obj *obj, loff_t new_size) yaffs_wr_data_obj(obj, last_chunk, local_buffer, new_partial, 1); - yaffs_release_temp_buffer(dev, local_buffer, __LINE__); + yaffs_release_temp_buffer(dev, local_buffer); } obj->variant.file_variant.file_size = new_size; @@ -4440,7 +4421,7 @@ int yaffs_get_obj_name(struct yaffs_obj *obj, YCHAR *name, int buffer_size) #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); struct yaffs_obj_hdr *oh = (struct yaffs_obj_hdr *)buffer; @@ -4454,7 +4435,7 @@ int yaffs_get_obj_name(struct yaffs_obj *obj, YCHAR *name, int buffer_size) yaffs_load_name_from_oh(obj->my_dev, name, oh->name, buffer_size); - yaffs_release_temp_buffer(obj->my_dev, buffer, __LINE__); + yaffs_release_temp_buffer(obj->my_dev, buffer); } yaffs_fix_null_name(obj, name, buffer_size); diff --git a/yaffs_guts.h b/yaffs_guts.h index 3b01dfa..551fb7a 100644 --- a/yaffs_guts.h +++ b/yaffs_guts.h @@ -487,13 +487,12 @@ struct yaffs_checkpt_obj { /*--------------------- Temporary buffers ---------------- * - * These are chunk-sized working buffers. Each device has a few + * These are chunk-sized working buffers. Each device has a few. */ struct yaffs_buffer { u8 *buffer; - int line; /* track from whence this buffer was allocated */ - int max_line; + int in_use; }; /*----------------- Device ---------------------------------*/ @@ -888,8 +887,8 @@ int yaffs_check_ff(u8 *buffer, int n_bytes); void yaffs_handle_chunk_error(struct yaffs_dev *dev, struct yaffs_block_info *bi); -u8 *yaffs_get_temp_buffer(struct yaffs_dev *dev, int line_no); -void yaffs_release_temp_buffer(struct yaffs_dev *dev, u8 *buffer, int line_no); +u8 *yaffs_get_temp_buffer(struct yaffs_dev *dev); +void yaffs_release_temp_buffer(struct yaffs_dev *dev, u8 *buffer); struct yaffs_obj *yaffs_find_or_create_by_number(struct yaffs_dev *dev, int number, diff --git a/yaffs_mtdif2_multi.c b/yaffs_mtdif2_multi.c index 36a1845..684ed2a 100644 --- a/yaffs_mtdif2_multi.c +++ b/yaffs_mtdif2_multi.c @@ -129,7 +129,7 @@ int nandmtd2_read_chunk_tags(struct yaffs_dev *dev, int nand_chunk, if (!data) { local_data = 1; - data = yaffs_get_temp_buffer(dev, __LINE__); + data = yaffs_get_temp_buffer(dev); } } @@ -182,7 +182,7 @@ int nandmtd2_read_chunk_tags(struct yaffs_dev *dev, int nand_chunk, } if (local_data) - yaffs_release_temp_buffer(dev, data, __LINE__); + yaffs_release_temp_buffer(dev, data); if (tags && retval == -EBADMSG && tags->ecc_result == YAFFS_ECC_RESULT_NO_ERROR) { diff --git a/yaffs_mtdif2_single.c b/yaffs_mtdif2_single.c index 4218b6e..c013232 100644 --- a/yaffs_mtdif2_single.c +++ b/yaffs_mtdif2_single.c @@ -99,7 +99,7 @@ int nandmtd2_read_chunk_tags(struct yaffs_dev *dev, int nand_chunk, if (dev->param.inband_tags && !data) { local_data = 1; - data = yaffs_get_temp_buffer(dev, __LINE__); + data = yaffs_get_temp_buffer(dev); } if (dev->param.inband_tags || (data && !tags)) { @@ -130,7 +130,7 @@ int nandmtd2_read_chunk_tags(struct yaffs_dev *dev, int nand_chunk, } if (local_data) - yaffs_release_temp_buffer(dev, data, __LINE__); + yaffs_release_temp_buffer(dev, data); if (tags && retval == -EBADMSG && tags->ecc_result == YAFFS_ECC_RESULT_NO_ERROR) { diff --git a/yaffs_verify.c b/yaffs_verify.c index 27d3695..b3e540d 100644 --- a/yaffs_verify.c +++ b/yaffs_verify.c @@ -349,7 +349,7 @@ void yaffs_verify_obj(struct yaffs_obj *obj) if (chunk_valid && !yaffs_skip_nand_verification(dev)) { struct yaffs_ext_tags tags; struct yaffs_obj_hdr *oh; - u8 *buffer = yaffs_get_temp_buffer(dev, __LINE__); + u8 *buffer = yaffs_get_temp_buffer(dev); oh = (struct yaffs_obj_hdr *)buffer; @@ -357,7 +357,7 @@ void yaffs_verify_obj(struct yaffs_obj *obj) yaffs_verify_oh(obj, oh, &tags, 1); - yaffs_release_temp_buffer(dev, buffer, __LINE__); + yaffs_release_temp_buffer(dev, buffer); } /* Verify it has a parent */ diff --git a/yaffs_yaffs1.c b/yaffs_yaffs1.c index 3b271c9..da6a40f 100644 --- a/yaffs_yaffs1.c +++ b/yaffs_yaffs1.c @@ -42,7 +42,7 @@ int yaffs1_scan(struct yaffs_dev *dev) "yaffs1_scan starts intstartblk %d intendblk %d...", dev->internal_start_block, dev->internal_end_block); - chunk_data = yaffs_get_temp_buffer(dev, __LINE__); + chunk_data = yaffs_get_temp_buffer(dev); dev->seq_number = YAFFS_LOWEST_SEQUENCE_NUMBER; @@ -413,7 +413,7 @@ int yaffs1_scan(struct yaffs_dev *dev) } } - yaffs_release_temp_buffer(dev, chunk_data, __LINE__); + yaffs_release_temp_buffer(dev, chunk_data); if (alloc_failed) return YAFFS_FAIL; diff --git a/yaffs_yaffs2.c b/yaffs_yaffs2.c index 961f01e..f4a7a7f 100644 --- a/yaffs_yaffs2.c +++ b/yaffs_yaffs2.c @@ -868,7 +868,7 @@ int yaffs2_handle_hole(struct yaffs_obj *obj, loff_t new_size) small_hole = 0; if (small_hole) - local_buffer = yaffs_get_temp_buffer(dev, __LINE__); + local_buffer = yaffs_get_temp_buffer(dev); if (local_buffer) { /* fill hole with zero bytes */ @@ -893,7 +893,7 @@ int yaffs2_handle_hole(struct yaffs_obj *obj, loff_t new_size) } } - yaffs_release_temp_buffer(dev, local_buffer, __LINE__); + yaffs_release_temp_buffer(dev, local_buffer); /* If out of space then reverse any chunks we've added */ if (!small_increase_ok) @@ -1371,7 +1371,7 @@ int yaffs2_scan_backwards(struct yaffs_dev *dev) dev->blocks_in_checkpt = 0; - chunk_data = yaffs_get_temp_buffer(dev, __LINE__); + chunk_data = yaffs_get_temp_buffer(dev); /* Scan all the blocks to determine their state */ bi = dev->block_info; @@ -1498,7 +1498,7 @@ int yaffs2_scan_backwards(struct yaffs_dev *dev) */ yaffs_link_fixup(dev, &hard_list); - yaffs_release_temp_buffer(dev, chunk_data, __LINE__); + yaffs_release_temp_buffer(dev, chunk_data); if (alloc_failed) return YAFFS_FAIL;