On Monday 31 January 2011 20:20:51 Murali N wrote:
> On Mon, Jan 31, 2011 at 8:29 AM, Charles Manning
>
> <manningc2@actrix.gen.nz> wrote:
> > On Saturday 29 January 2011 18:06:20 Murali N wrote:
> >> Hi,
> >> Can anybody tell me what is the minimum partition size that would
> >> require YAFFS2 to be mounted?
> >> On my system i am seeing YAFFS2 mount is failing for a given partition
> >> of size 1MB ( 8 blocks ie 8 * 128K ).
> >>
> >> 7328 dev->internalEndBlock <= (dev->internalStartBlock +
> >> dev->nReservedBlocks + 2)) { /* otherwise it is too small */
> >> 7329 T(YAFFS_TRACE_ALWAYS,
> >> 7330 (TSTR
> >> 7331 ("yaffs: NAND geometry problems: chunk size
> >> %d, type is yaffs%s, inbandTags %d "
> >> 7332 TENDSTR), dev->totalBytesPerChunk,
> >> dev->isYaffs2 ? "2" : "", dev->inbandTags));
> >> 7333 return YAFFS_FAIL;
> >> 7334 }
> >
> > yaffs reserves some blocks for two purposes:
> > 1) If blocks go bad then we need to have some spare to handle a problem.
> > 2) garbage collection etc needs at least one spare block to work with.
> >
> > You can change the reserved blocks to, say, 2 and yaffs should then work
> > on 8 blocks. You should be aware though that yaffs will not allow you to
> > store files in all of that space.
> >
> > -- Charles
>
> Is reserved blocks are useful to store per partition useful
> information or per file information?
That is a per-partition variable.
> Now in my case it is set to (nReservedBlocks) 5. As you mentioned if i
> change this value to
> per say '2' can't use this partition to store the regular files?
Yes that should work.
> If it is 'NO' then how do i set the nReservedBlocks to '2' only to
> applicable to a given partition and reset all will be with a default
> setting(5)?
One way to do this would be to do this:
--- a/yaffs_vfs_multi.c
+++ b/yaffs_vfs_multi.c
@@ -2835,7 +2835,7 @@ static struct super_block *yaffs_internal_read_super(int
yaffs_version,
param->end_block = n_blocks - 1;
param->chunks_per_block = YAFFS_CHUNKS_PER_BLOCK;
param->total_bytes_per_chunk = YAFFS_BYTES_PER_CHUNK;
- param->n_reserved_blocks = 5;
+ param->n_reserved_blocks = (nblocks > 50) ? 5 : 2;
param->n_caches = (options.no_cache) ? 0 : 10;
param->inband_tags = options.inband_tags;
Let us know if that works for you.
Regards
Charles