mirror of
https://github.com/apache/nuttx.git
synced 2026-05-31 14:27:37 +08:00
fs/mnemofs: Fix journal log rw issue, read size issue
Fixes the journal log read and write size and overlap issues, along with read return value issue. Signed-off-by: Saurav Pal <resyfer.dev@gmail.com>
This commit is contained in:
committed by
Alan Carvalho de Assis
parent
9d396bf89e
commit
daa3168cfb
@@ -295,7 +295,7 @@ int nand_ram_eraseblock(FAR struct nand_raw_s *raw, off_t block)
|
||||
for (i = start_page; i < end_page; i++)
|
||||
{
|
||||
nand_ram_flash_spare[i].n_erase++;
|
||||
nand_ram_flash_spare[i].free = 1;
|
||||
nand_ram_flash_spare[i].free = NAND_RAM_PAGE_FREE;
|
||||
}
|
||||
|
||||
NAND_RAM_LOG("[LOWER %lu | %s] Done\n", nand_ram_ins_i, "eraseblock");
|
||||
@@ -331,12 +331,11 @@ int nand_ram_rawread(FAR struct nand_raw_s *raw, off_t block,
|
||||
struct nand_ram_data_s *read_page_data;
|
||||
struct nand_ram_spare_s *read_page_spare;
|
||||
|
||||
ret = OK;
|
||||
read_page = (block << NAND_RAM_LOG_PAGES_PER_BLOCK) + page;
|
||||
read_page_data = nand_ram_flash_data + read_page;
|
||||
read_page_spare = nand_ram_flash_spare + read_page;
|
||||
|
||||
ret = OK;
|
||||
|
||||
nxmutex_lock(&nand_ram_dev_mut);
|
||||
nand_ram_ins_i++;
|
||||
|
||||
@@ -362,7 +361,8 @@ int nand_ram_rawread(FAR struct nand_raw_s *raw, off_t block,
|
||||
}
|
||||
else
|
||||
{
|
||||
memcpy(data, (const void *)read_page_data, NAND_RAM_PAGE_SIZE);
|
||||
memcpy(data, (const void *)read_page_data->page,
|
||||
NAND_RAM_PAGE_SIZE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -407,12 +407,11 @@ int nand_ram_rawwrite(FAR struct nand_raw_s *raw, off_t block,
|
||||
struct nand_ram_data_s *write_page_data;
|
||||
struct nand_ram_spare_s *write_page_spare;
|
||||
|
||||
ret = OK;
|
||||
write_page = (block << NAND_RAM_LOG_PAGES_PER_BLOCK) + page;
|
||||
write_page_data = nand_ram_flash_data + write_page;
|
||||
write_page_spare = nand_ram_flash_spare + write_page;
|
||||
|
||||
ret = OK;
|
||||
|
||||
nxmutex_lock(&nand_ram_dev_mut);
|
||||
nand_ram_ins_i++;
|
||||
|
||||
@@ -429,16 +428,17 @@ int nand_ram_rawwrite(FAR struct nand_raw_s *raw, off_t block,
|
||||
}
|
||||
|
||||
nand_ram_flash_spare[write_page].n_write++;
|
||||
nand_ram_flash_spare[write_page].free = NAND_RAM_PAGE_WRITTEN;
|
||||
|
||||
memset((void *)write_page_data, 0, NAND_RAM_PAGE_SIZE);
|
||||
memset((void *)write_page_data->page, 0, NAND_RAM_PAGE_SIZE);
|
||||
if (data != NULL)
|
||||
{
|
||||
memcpy((void *)write_page_data, data, NAND_RAM_PAGE_SIZE);
|
||||
memcpy((void *)write_page_data->page, data, NAND_RAM_PAGE_SIZE);
|
||||
}
|
||||
|
||||
if (spare != NULL)
|
||||
{
|
||||
memcpy((void *)write_page_spare, data, NAND_RAM_PAGE_SIZE);
|
||||
memcpy((void *)write_page_spare, data, NAND_RAM_SPARE_SIZE);
|
||||
}
|
||||
|
||||
NAND_RAM_LOG("[LOWER %lu | %s] Done\n", nand_ram_ins_i, "rawwrite");
|
||||
|
||||
Reference in New Issue
Block a user