summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCharles Manning <cdhmanning@gmail.com>2011-03-07 16:25:28 +1300
committerCharles Manning <cdhmanning@gmail.com>2011-03-07 16:25:28 +1300
commitbf4900527f7eab3a629498f2aedbaebf259a6f7a (patch)
treeac49e66c528905013232d1bbc72538a6e27fd54d
parent9a20a1043042ed312c6d076ba2369d9138354702 (diff)
yaffs: Remove debugging argument from temp buffer handling
No longer track the line number used for allocation. Signed-off-by: Charles Manning <cdhmanning@gmail.com>
-rw-r--r--direct/basic-test/yaffs_fileem2k.c4
-rw-r--r--direct/yaffs_nandif.c4
-rw-r--r--yaffs_guts.c83
-rw-r--r--yaffs_guts.h9
-rw-r--r--yaffs_mtdif2_multi.c4
-rw-r--r--yaffs_mtdif2_single.c4
-rw-r--r--yaffs_verify.c4
-rw-r--r--yaffs_yaffs1.c4
-rw-r--r--yaffs_yaffs2.c8
9 files changed, 52 insertions, 72 deletions
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;