*/
-const char *yaffs_fs_c_version = "$Id: yaffs_fs.c,v 1.4 2005-04-24 09:20:24 charles Exp $";
+const char *yaffs_fs_c_version = "$Id: yaffs_fs.c,v 1.7 2005-07-05 23:54:59 charles Exp $";
extern const char *yaffs_guts_c_version;
yaffs_GrossLock(obj->myDev);
- nWritten = yaffs_WriteDataToFile(obj,buffer,page->index << PAGE_CACHE_SHIFT,nBytes);
+ nWritten = yaffs_WriteDataToFile(obj,buffer,page->index << PAGE_CACHE_SHIFT,nBytes,0);
yaffs_GrossUnlock(obj->myDev);
T(YAFFS_TRACE_OS,(KERN_DEBUG"yaffs_file_write about to write writing %d bytes to object %d at %d\n",n,obj->objectId,ipos));
}
- nWritten = yaffs_WriteDataToFile(obj,buf,ipos,n);
+ nWritten = yaffs_WriteDataToFile(obj,buf,ipos,n,0);
T(YAFFS_TRACE_OS,(KERN_DEBUG"yaffs_file_write writing %d bytes, %d written at %d\n",n,nWritten,ipos));
if(nWritten > 0)
static int yaffs_statfs(struct super_block *sb, struct statfs *buf)
#endif
{
+
+
yaffs_Device *dev = yaffs_SuperToDevice(sb);
T(YAFFS_TRACE_OS,(KERN_DEBUG"yaffs_statfs\n"));
yaffs_GrossLock(dev);
+
buf->f_type = YAFFS_MAGIC;
buf->f_bsize = sb->s_blocksize;
buf->f_namelen = 255;
- buf->f_blocks = (dev->endBlock - dev->startBlock + 1) * YAFFS_CHUNKS_PER_BLOCK/
- (sb->s_blocksize/YAFFS_BYTES_PER_CHUNK);
+ if(sb->s_blocksize > dev->nBytesPerChunk)
+ {
+
+ buf->f_blocks = (dev->endBlock - dev->startBlock + 1) * dev->nChunksPerBlock/
+ (sb->s_blocksize/dev->nBytesPerChunk);
+ buf->f_bfree = yaffs_GetNumberOfFreeChunks(dev)/
+ (sb->s_blocksize/dev->nBytesPerChunk);
+ }
+ else
+ {
+
+ buf->f_blocks = (dev->endBlock - dev->startBlock + 1) * dev->nChunksPerBlock *
+ (dev->nBytesPerChunk/sb->s_blocksize);
+ buf->f_bfree = yaffs_GetNumberOfFreeChunks(dev) *
+ (dev->nBytesPerChunk/sb->s_blocksize);
+ }
buf->f_files = 0;
buf->f_ffree = 0;
- buf->f_bfree = yaffs_GetNumberOfFreeChunks(dev)/
- (sb->s_blocksize/YAFFS_BYTES_PER_CHUNK);
buf->f_bavail = buf->f_bfree;
yaffs_GrossUnlock(dev);
dev->genericDevice = NULL; // Not used for RAM emulation.
nBlocks = YAFFS_RAM_EMULATION_SIZE / (YAFFS_CHUNKS_PER_BLOCK * YAFFS_BYTES_PER_CHUNK);
- dev->startBlock = 1; // Don't use block 0
+ dev->startBlock = 0;
dev->endBlock = nBlocks - 1;
dev->nChunksPerBlock = YAFFS_CHUNKS_PER_BLOCK;
dev->nBytesPerChunk = YAFFS_BYTES_PER_CHUNK;
dev->nChunksPerBlock = nandemul2k_GetChunksPerBlock();
dev->nBytesPerChunk = nandemul2k_GetBytesPerChunk();;
nBlocks = nandemul2k_GetNumberOfBlocks();
- dev->startBlock = 1; // Don't use block 0
+ dev->startBlock = 0;
dev->endBlock = nBlocks - 1;
}
else
// Set up the memory size parameters....
nBlocks = mtd->size / (YAFFS_CHUNKS_PER_BLOCK * YAFFS_BYTES_PER_CHUNK);
- dev->startBlock = 1; // Don't use block 0
+ dev->startBlock = 0;
dev->endBlock = nBlocks - 1;
dev->nChunksPerBlock = YAFFS_CHUNKS_PER_BLOCK;
dev->nBytesPerChunk = YAFFS_BYTES_PER_CHUNK;
dev->nBytesPerChunk = mtd->oobblock;
dev->nChunksPerBlock = mtd->erasesize / mtd->oobblock;
nBlocks = mtd->size / mtd->erasesize;
- dev->startBlock = 1; // Don't use block 0
+ dev->startBlock = 0;
dev->endBlock = nBlocks - 1;
}
else