#include "uffs/uffs_public.h"
#include "uffs/uffs_device.h"
Go to the source code of this file.
Defines | |
#define | HAVE_BADBLOCK(dev) (dev->bad.block != UFFS_INVALID_BLOCK) |
Functions | |
URET | uffs_CheckBadBlock (uffs_Device *dev, uffs_Buf *buf, int block) |
check ECC in buf, if the data is corrupt, try ECC correction. | |
void | uffs_InitBadBlock (uffs_Device *dev) |
void | uffs_RecoverBadBlock (uffs_Device *dev) |
recover bad block |
Definition in file uffs_badblock.h.
#define HAVE_BADBLOCK | ( | dev | ) | (dev->bad.block != UFFS_INVALID_BLOCK) |
Definition at line 13 of file uffs_badblock.h.
Referenced by uffs_DeleteObject(), uffs_ReadObject(), uffs_TruncateObject(), and uffs_WriteObject().
URET uffs_CheckBadBlock | ( | uffs_Device * | dev, | |
uffs_Buf * | buf, | |||
int | block | |||
) |
check ECC in buf, if the data is corrupt, try ECC correction.
[in] | dev | uffs device |
[in] | buf | data in buf |
[in] | block | num of this buf |
mark this block as a new discovered bad block, so that we can deal with this bad block later.(by calling uffs_RecoverBadBlock)
Don't know how can we do, but set treat it as a new discovered bad block anyway.
Definition at line 29 of file uffs_badblock.c.
References uffs_DeviceSt::bad, uffs_newBadBlockSt::block, uffs_BufSt::data, uffs_BufSt::ecc, uffs_FlashOpsSt::EccCollect, uffs_DeviceSt::flash, uffs_FlashOpsSt::MakeEcc, MAX_ECC_LENGTH, PFX, U_FAIL, U_SUCC, UFFS_ERR_NOISY, UFFS_ERR_NORMAL, UFFS_ERR_SERIOUS, UFFS_INVALID_BLOCK, and uffs_Perror().
Referenced by uffs_LoadPhiDataToBuf(), and uffs_LoadPhiDataToBufEccUnCare().
void uffs_InitBadBlock | ( | uffs_Device * | dev | ) |
Definition at line 14 of file uffs_badblock.c.
References uffs_DeviceSt::bad, uffs_newBadBlockSt::block, and UFFS_INVALID_BLOCK.
Referenced by uffs_InitDevice().
void uffs_RecoverBadBlock | ( | uffs_Device * | dev | ) |
recover bad block
[in] | dev | uffs device |
Definition at line 81 of file uffs_badblock.c.
References uffs_DeviceSt::attr, uffs_DeviceSt::bad, uffs_newBadBlockSt::block, blocklistSt::block, dirhSt::block, filehSt::block, fdataSt::block, uffs_blockInfoSt::blockNum, uffs_TagsSt::blockTimeStamp, uffs_DeviceSt::com, uffs_treeNodeSt::data, uffs_BufSt::dataLen, uffs_TagsSt::dataLength, uffs_treeNodeSt::dir, uffs_DeviceOpsSt::EraseBlock, uffs_BufSt::father, uffs_TagsSt::father, uffs_treeNodeSt::file, uffs_DeviceSt::flash, uffs_treeNodeSt::list, uffs_FlashOpsSt::MakeBadBlockMark, NULL, uffs_DeviceSt::ops, uffs_BufSt::pageID, uffs_TagsSt::pageID, uffs_storageAttrSt::pages_per_block, PFX, uffs_commInfoSt::pgDataSize, SEARCH_REGION_DATA, SEARCH_REGION_DIR, SEARCH_REGION_FILE, uffs_BufSt::serial, uffs_TagsSt::serial, uffs_blockInfoSt::spares, uffs_pageSpareSt::tag, uffs_BufSt::type, uffs_TagsSt::type, uffs_treeNodeSt::u, U_FAIL, U_FALSE, U_SUCC, U_TRUE, UFFS_ALL_PAGES, uffs_BufClone(), uffs_BufFreeClone(), UFFS_ERR_NOISY, UFFS_ERR_NORMAL, UFFS_ERR_SERIOUS, uffs_ExpireBlockInfo(), uffs_FindBestPageInBlock(), uffs_FindNodeByBlock(), uffs_FindPageInBlockWithPageId(), uffs_GetBlockInfo(), uffs_GetErased(), uffs_GetNextBlockTimeStamp(), uffs_InsertToBadBlockList(), uffs_InsertToErasedListTail(), UFFS_INVALID_BLOCK, UFFS_INVALID_PAGE, uffs_LoadPhiDataToBufEccUnCare(), uffs_Perror(), uffs_PutBlockInfo(), UFFS_TYPE_DATA, UFFS_TYPE_DIR, UFFS_TYPE_FILE, and uffs_WriteDataToNewPage().
Referenced by uffs_DeleteObject(), uffs_ReadObject(), uffs_TruncateObject(), and uffs_WriteObject().