一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

文件的操作处理方法、装置与流程

2021-12-14 23:39:00 来源:中国专利 TAG:


1.本技术属于计算机文件系统技术领域,尤其涉及一种文件的操作处理方法、装置。


背景技术:

2.nand(计算机闪存设备)从50nm不断进入30nm、20nm以及10nm时代,提高了晶体管密度,提升了nand容量,降低了成本,但是nand工艺提升意味着也使得用于阻挡电子的二氧化硅层越来越薄,导致可靠性变差。因此,性能、可靠性下降成为tlc/qlc(三层存储单元/四比特单元)闪存等nand设备存在的缺点。
3.为了满足使用者对成本以及容量上的需求,有必要在文件系统中引入一定的校验和纠错机制,从而提高数据存储的可靠性,更好的服务于嵌入式的使用场景。


技术实现要素:

4.为此,本技术公开一种文件的操作处理方法、装置,通过在文件系统中引入一定的校验和纠错机制,来提高数据存储的可靠性,解决基于tlc/qlc等存储介质的设备,在工业嵌入式领域存储可靠性不足的问题。
5.具体技术方案如下:
6.一种文件的操作处理方法,所述方法包括:
7.在文件的写操作中:
8.将用户数据写入基于写操作指示所确定的数据块,并同步更新元数据;
9.分别对写入的用户数据及其元数据所在的数据块进行ecc校验,得到用户数据及其元数据所在的数据块分别对应的ecc块校验值并记录;分别对写入的用户数据及其元数据所在的数据块进行crc校验,得到用户数据及其元数据所在的数据块分别对应的crc块校验值并记录;分别对写入的用户数据及其元数据各自所在的行进行crc校验处理,得到用户数据及其元数据各自所在的行对应的crc行校验值并记录;
10.在文件的读操作中:
11.按对应的crc行校验值和/或crc块校验值,对读操作指示所指征的元数据进行校验处理;
12.如果元数据校验成功,根据所述读操作指示所指征的元数据的数据块确定待读取的用户数据的数据块,并按对应的crc行校验值和/或crc块校验值,对待读取的用户数据进行校验处理,在校验成功的情况下,读取用户数据并返回;如果元数据校验失败,或用户数据校验失败,按对应的ecc块校验值进行相应的ecc纠错处理。
13.可选的,上述方法中:
14.用户数据及其元数据分别对应的ecc块校验值的记录过程,包括:将用户数据对应的ecc块校验值写入用户数据所在的数据块;将元数据对应的ecc块校验值写入元数据所在的数据块;
15.用户数据及其元数据分别对应的crc块校验值的记录过程,包括:将用户数据对应
的crc块校验值写入用户数据所在的数据块;将元数据对应的crc块校验值写入元数据所在的数据块;
16.用户数据及其元数据各自所在的行对应的crc行校验值的记录过程,包括:将用户数据所在的行对应的crc行校验值写入用户数据所在的行中的最后一个数据块;将元数据所在的行对应的crc行校验值写入元数据所在的行中的最后一个数据块。
17.可选的,所述按对应的crc行校验值和/或crc块校验值,对读操作指示所指征的元数据进行校验处理,包括:
18.按对应的crc行校验值,对读操作指示所指征的元数据进行行crc校验;
19.如果元数据的行crc校验失败,按对应的crc块校验值,对读操作指示所指征的元数据进行块crc校验;
20.如果元数据的行crc校验成功,或块crc校验成功,根据读操作指示所指征的元数据的数据块查询待读取的用户数据的数据块;
21.如果元数据的块crc校验失败,按对应的ecc块校验值,对读操作指示所指征的元数据的数据块执行ecc纠错处理。
22.可选的,所述按对应的crc行校验值和/或crc块校验值,对待读取的用户数据进行校验处理,包括:
23.按对应的crc行校验值,对待读取的用户数据进行行crc校验;
24.如果用户数据的行crc校验失败,按对应的crc块校验值,对待读取的用户数据进行块crc校验;
25.如果用户数据的行crc校验成功,或块crc校验成功,读取并返回用户数据;
26.如果用户数据的块crc校验失败,按对应的ecc块校验值,对待读取的用户数据的数据块执行ecc纠错处理。
27.可选的,所述ecc纠错处理,包括:
28.按对应的ecc块校验值,对读操作指示所指征的元数据的数据块或待读取的用户数据的数据块执行ecc纠错;
29.对纠错结果进行crc检查,判断纠错结果是否正确;
30.如果纠错结果正确,根据读操作指示所指征的元数据的数据块查询待读取的用户数据的数据块,或读取并返回用户数据;
31.如果纠错结果错误,返回表征错误状态的提示信息。
32.可选的,在判断纠错结果错误之后,返回表征错误状态的提示信息之前,还包括:
33.在设定的次数上限内,进行投机性纠错处理;
34.对投机性纠错处理的纠错结果进行crc检查,判断纠错结果是否正确;
35.如果纠错结果正确,触发根据读操作指示所指征的元数据的数据块查询待读取的用户数据的数据块,或读取并返回用户数据的处理;
36.如果纠错结果错误,触发返回表征错误状态的提示信息的处理。
37.一种文件的操作处理装置,所述装置包括:
38.写处理模块,用于在文件的写操作中:
39.将用户数据写入基于写操作指示所确定的数据块,并同步更新元数据;
40.分别对写入的用户数据及其元数据进行ecc校验,得到用户数据及其元数据分别
对应的ecc块校验值并记录;分别对写入的用户数据及其元数据进行crc校验,得到用户数据及其元数据分别对应的crc块校验值并记录;分别对写入的用户数据及其元数据各自所在的行进行crc校验处理,得到用户数据及其元数据各自所在的行对应的crc行校验值并记录;
41.读处理模块,用于在文件的读操作中:
42.按对应的crc行校验值和/或crc块校验值,对读操作指示所指征的元数据进行校验处理;
43.如果元数据校验成功,根据所述读操作指示所指征的元数据的数据块确定待读取的用户数据的数据块,并按对应的crc行校验值和/或crc块校验值,对待读取的用户数据进行校验处理,在校验成功的情况下,读取用户数据并返回;如果元数据校验失败,或用户数据校验失败,按对应的ecc块校验值进行相应的ecc纠错处理。
44.可选的,上述装置中:
45.所述写处理模块在记录用户数据及其元数据分别对应的ecc块校验值时,具体用于:将用户数据对应的ecc块校验值写入用户数据所在的数据块;将元数据对应的ecc块校验值写入元数据所在的数据块;
46.所述写处理模块在记录用户数据及其元数据分别对应的crc块校验值时,具体用于:将用户数据对应的crc块校验值写入用户数据所在的数据块;将元数据对应的crc块校验值写入元数据所在的数据块;
47.所述写处理模块在记录用户数据及其元数据各自所在的行对应的crc行校验值时,具体用于:将用户数据所在的行对应的crc行校验值写入用户数据所在的行中的最后一个数据块;将元数据所在的行对应的crc行校验值写入元数据所在的行中的最后一个数据块。
48.可选的,上述装置中:
49.所述读处理模块在按对应的crc行校验值和/或crc块校验值,对读操作指示所指征的元数据进行校验处理时,具体用于:
50.按对应的crc行校验值,对读操作指示所指征的元数据进行行crc校验;
51.如果元数据的行crc校验失败,按对应的crc块校验值,对读操作指示所指征的元数据进行块crc校验;
52.如果元数据的行crc校验成功,或块crc校验成功,根据读操作指示所指征的元数据的数据块查询待读取的用户数据的数据块;
53.如果元数据的块crc校验失败,按对应的ecc块校验值,对读操作指示所指征的元数据的数据块执行ecc纠错处理;
54.所述读处理模块在按对应的crc行校验值和/或crc块校验值,对待读取的用户数据进行校验处理时,具体用于:
55.按对应的crc行校验值,对待读取的用户数据进行行crc校验;
56.如果用户数据的行crc校验失败,按对应的crc块校验值,对待读取的用户数据进行块crc校验;
57.如果用户数据的行crc校验成功,或块crc校验成功,读取并返回用户数据;
58.如果用户数据的块crc校验失败,按对应的ecc块校验值,对待读取的用户数据的
数据块执行ecc纠错处理。
59.可选的,所述读处理模块在执行ecc纠错处理时,具体用于:
60.按对应的ecc块校验值,对读操作指示所指征的元数据的数据块或待读取的用户数据的数据块执行ecc纠错;
61.对纠错结果进行crc检查,判断纠错结果是否正确;
62.如果纠错结果正确,根据读操作指示所指征的元数据的数据块查询待读取的用户数据的数据块,或读取并返回用户数据。
63.如果纠错结果错误,返回表征错误状态的提示信息。
64.由以上方案可知,本技术公开的文件的操作处理方法、装置,通过提供一种基于crc检错和ecc纠错的双重机制,来同时保证用户数据和其元数据的可靠性,ecc纠错配合两级crc检错,使得为文件系统提供了一定程度上的纠错能力,并且,具体通过对用户数据及其元数据同时提供ecc纠错和crc检错功能,不但能提高文件系统的稳定性,还能提高用户数据的安全性,从而,本技术通过向文件系统引入上述的校验和纠错机制,提高了数据存储的可靠性,可有效解决基于tlc/qlc等存储介质的设备,在工业嵌入式领域存储可靠性不足的问题。
附图说明
65.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
66.图1是本技术提供的文件的操作处理方法的处理流程图;
67.图2是本技术提供的写操作的细化实施流程图;
68.图3是本技术提供的读操作的细化实施流程图;
69.图4是本技术提供的crc的校验流程;
70.图5是本技术提供的文件的操作处理装置的结构示意图。
具体实施方式
71.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
72.本技术公开一种文件的操作处理方法、装置,通过在文件系统中引入一定的校验和纠错机制,来提高数据存储的可靠性,更好的服务于嵌入式的使用场景。
73.以下首先对本技术的操作处理方法、装置所涉及的技术术语、基本数据结构,以及所适用的运行环境进行说明。
74.1)技术术语:
75.ecc:error correcting code的简写,中文名称是“错误检查和纠正”,是一种基于奇偶校验码来进行纠错的算法;
76.crc:cyclical redundancy check的简写,中文名称是“循环冗余码校验”,它是利用除法及余数的原理来作错误侦测(error detecting),计算出crc值并随数据一同发送给检查端,检查端对收到的数据重新计算crc值并与收到的crc值相比较,若两个crc值不同,则说明数据出现错误;
77.block:文件系统存取的最小单位,一个文件系统存取的block可能对应n个物理block或者sector。
78.2)基本数据结构:
79.本技术中,基于ecc纠错和crc校验的文件系统数据组织的主要格式,具体如以下的表1所示:
80.表1
[0081][0082]
在上述表1中:
[0083]
块内ecc校验结果,保存了所属块内容(用户数据或元数据)的ecc结果值(块内crc结果不参与ecc校验);
[0084]
块内crc结果,保存了所属块内容(用户数据或元数据)的crc校验结果值,例如meta data(元数据)和user data(用户数据)各个块中都包含了各自块的校验结果的校验值;
[0085]
行内ecc结果,表示的是上表的某一行包含的n个块内所有内容(用户数据或元数据)进行ecc校验的结果;
[0086]
行内crc结果,表示的是上表的某一行包含的n个块内所有内容(用户数据或元数据)进行crc校验的结果。
[0087]
上述表1中,n的取值可由技术人员根据需求设定,优选的,n的取值不超过4。本实施例中,将上述表1的数据表格中每一行记作一个row。
[0088]
3)运行环境
[0089]
包括软件运行环境和硬件运行环境,分别参见如下的表2和表3。
[0090]
表2
[0091]
软件运行环境详细说明操作系统ubuntu 12(x86/x64)
[0092]
表3
[0093][0094][0095]
基于上文对本技术所涉及的技术术语、基本数据结构等的相关说明,接下来继续描述本技术公开的文件的操作处理方法的处理过程。
[0096]
该文件的操作处理方法包括文件的写操作流程和读操作流程。
[0097]
一、写操作流程:
[0098]
如图1所示,文件的写操作至少对应以下的写操作流程:
[0099]
步骤111、将用户数据写入基于写操作指示所确定的数据块,并同步更新元数据。
[0100]
本技术实施例中所述的数据块是指物理block,且本技术实施例中的英文描述不以大小写区分。
[0101]
当os(operation system,操作系统)基于上层的写行为(如用户向文件输入数据)传入用户数据及写入位置信息时,文件系统相应接收到os的携带用户数据及写入位置信息的操作指示。
[0102]
可选的,写入位置信息为偏移地址。
[0103]
在此基础上,基于表1的基本数据结构,结合参见图2提供的写操作的细化实施流程,本步骤111可进一步实现为图2中所示的步骤a

b,具体如下:
[0104]
步骤a:根据操作系统写入的偏移地址确定待写入数据的逻辑地址,并根据逻辑地址查询、选择待写入的物理block。
[0105]
在该阶段,文件系统会优先在各个row(行)中的空闲block中选取待写入的物理block。
[0106]
步骤b:将用户数据写入到选取的block内,同时更新meta data。
[0107]
其中,meta data即用户数据的元数据,主要保存操作系统下发的写入地址和真实物理地址之间的映射关系,以及操作系统下发的其他配置信息,例如文件的读写权限、共享权限、目录/文件描述信息等。
[0108]
步骤112、分别对写入的用户数据及其元数据所在的数据块进行ecc校验,得到用户数据及其元数据所在的数据块分别对应的ecc块校验值并记录;分别对写入的用户数据及其元数据所在的数据块进行crc校验,得到用户数据及其元数据所在的数据块分别对应的crc块校验值并记录;分别对写入的用户数据及其元数据各自所在的行进行crc校验处理,得到用户数据及其元数据各自所在的行对应的crc行校验值并记录。
[0109]
其中,用户数据及其元数据分别对应的ecc块校验值的记录过程,包括:
[0110]
将用户数据对应的ecc块校验值写入用户数据所在的数据块;将元数据对应的ecc块校验值写入元数据所在的数据块。
[0111]
用户数据及其元数据分别对应的crc块校验值的记录过程,包括:
[0112]
将用户数据对应的crc块校验值写入用户数据所在的数据块;将元数据对应的crc块校验值写入元数据所在的数据块;
[0113]
用户数据及其元数据各自所在的行对应的crc行校验值的记录过程,包括:将用户
数据所在的行对应的crc行校验值写入用户数据所在的行中的最后一个数据块;将元数据所在的行对应的crc行校验值写入元数据所在的行中的最后一个数据块。
[0114]
进一步参见图2,该步骤112具体可通过图2中的步骤c

步骤e实现:
[0115]
步骤c:分别对meta data和user data所在的block进行ecc校验,并写入校验值到对应的block中,即,meta data的ecc校验值写入到meta data所在的block内,user data的ecc校验值写入到user data所在的block内。
[0116]
这里,meta data的ecc校验值即指用户数据的元数据所在的数据块对应的ecc块校验值,user data的ecc校验值即指用户数据所在的数据块对应的ecc块校验值。
[0117]
步骤d:分别对meta data和user data所在的block进行crc校验,并写入校验值到对应的block中,即,meta data的crc校验值写入到meta data所在的block内,user data的crc校验值写入到user data所在的block内。
[0118]
这里,meta data的crc校验值即指用户数据的元数据所在的数据块对应的crc块校验值,user data的crc校验值即指用户数据所在的数据块对应的crc块校验值。
[0119]
步骤e:分别对meta data和user data所在的行(row)进行crc校验,并写入校验值。
[0120]
这里的校验值,是指meta data或user data所在的行对应的crc行校验值。
[0121]
通过上述处理,可使得meta data数据块和user data数据块分别有各自的ecc校验数据和crc校验数据。同时,meta data数据块和user data数据块,又按照行进行了编组,并拥有了组一级的crc校验数据。
[0122]
二、在文件的读操作中:
[0123]
进一步参见图1,在文件的读操作中,至少对应以下的读操作流程:
[0124]
步骤121、按对应的crc行校验值和/或crc块校验值,对读操作指示所指征的元数据的数据块进行校验处理。
[0125]
本步骤121是对元数据的读取及校验处理。具体包括:按对应的crc行校验值,对读操作指示所指征的元数据进行行crc校验;如果元数据的行crc校验失败,按对应的crc块校验值,对读操作指示所指征的元数据进行块crc校验;如果元数据的行crc校验成功,或块crc校验成功,根据读操作指示所指征的元数据的数据块查询待读取的用户数据的数据块;如果元数据的块crc校验失败,按对应的ecc块校验值,对读操作指示所指征的元数据的数据块执行ecc纠错处理。
[0126]
基于表1的基本数据结构,结合参见图3提供的读操作的细化实施流程,本步骤121可进一步实现为图3中所示的步骤a.1

a.6。
[0127]
其中,步骤a.1

a.3是正常状态下的meta data读取流程,步骤a.4

a.6是异常状态下的meta data读取流程,具体如下:
[0128]
步骤a.1:根据操作系统下发的偏移地址,选择要读取的meta block。
[0129]
步骤a.2:根据meta block的crc行校验值对meta block进行row crc校验。
[0130]
步骤a.3:如果row crc校验成功,则进入根据meta data去查询用户数据user data的步骤。
[0131]
步骤a.4:如果row crc校验失败,根据meta block的crc块校验值对meta block进行block crc校验。
[0132]
步骤a.5:如果block crc校验成功,则进入根据meta data去查询用户数据user data的步骤。
[0133]
步骤a.6:如果block crc校验失败,则进入ecc纠错处理流程。
[0134]
步骤122、如果元数据的数据块校验成功,根据所述读操作指示所指征的元数据的数据块确定待读取的用户数据的数据块,并按对应的crc行校验值和/或crc块校验值,对待读取的用户数据的数据块进行校验处理,在校验成功的情况下,读取用户数据并返回;如果元数据的数据块校验失败,或用户数据的数据块校验失败,按对应的ecc块校验值进行相应的ecc纠错处理。
[0135]
本步骤122具体包括在元数据校验成功情况下对用户数据的读取及校验处理,以及元数据校验失败或用户数据校验失败情况下的ecc纠错处理。
[0136]
其中,对用户数据的读取及校验处理过程包括:按对应的crc行校验值,对待读取的用户数据进行行crc校验;如果用户数据的行crc校验失败,按对应的crc块校验值,对待读取的用户数据进行块crc校验;如果用户数据的行crc校验成功,或块crc校验成功,读取并返回用户数据;如果用户数据的块crc校验失败,按对应的ecc块校验值,对待读取的用户数据的数据块执行ecc纠错处理。
[0137]
ecc纠错处理的过程包括:按对应的ecc块校验值,对读操作指示所指征的元数据的数据块或待读取的用户数据的数据块执行ecc纠错;对纠错结果进行crc检查,判断纠错结果是否正确;如果纠错结果正确,根据读操作指示所指征的元数据的数据块查询待读取的用户数据的数据块,或读取并返回用户数据;如果纠错结果错误,返回表征错误状态的提示信息。
[0138]
优选的,在另一实施例中,ecc纠错处理的流程,在判断纠错结果错误之后,返回表征错误状态的提示信息之前,还可以包括:
[0139]
在设定的次数上限内,进行投机性纠错处理;对投机性纠错处理的纠错结果进行crc检查,判断纠错结果是否正确;如果纠错结果正确,触发根据读操作指示所指征的元数据的数据块查询待读取的用户数据的数据块,或读取并返回用户数据的处理;如果纠错结果错误,触发返回表征错误状态的提示信息的处理。
[0140]
该实施方式,在判断纠错结果错误的情况下,通过设定的次数上限内的投机性纠错处理来进一步提升用户数据的安全性。
[0141]
基于表1的基本数据结构,结合参见图3提供的读操作的细化实施流程的示例,本步骤122可进一步实现为图3中所示的步骤b.1

b.5以及步骤s.1

s.5。
[0142]
其中,步骤b.1

b.5为元数据校验成功情况下对用户数据的读取及校验处理,步骤b.1

b.2具体是正常状态下(校验成功)的user data读取流程,步骤b.3

b.5是异常状态下(校验失败)的user data读取流程。分别如下:
[0143]
步骤b.1:如果meta block的row crc校验成功或block crc校验成功,根据meta data block,选择要读取的user data block。
[0144]
步骤b.2:根据user data block所在行的crc行校验值,对user data row进行row crc校验,如果row crc校验成功,向操作系统返回成功状态,并返回用户数据。
[0145]
步骤b.3:如果row crc校验失败,根据user data block的块校验值,对user data进行block crc校验。
[0146]
步骤b.4:如果user data block crc校验成功,返回读取到的用户数据,并向操作系统返回成功状态。
[0147]
步骤b.5:如果user data block crc校验失败,进入ecc纠错处理流程。
[0148]
参见图3,步骤s.1

s.5为本实施例一个示例性的ecc纠错处理流程,具体如下:
[0149]
步骤s.1:对meta data block或user data block进行ecc纠错,并在ecc纠错后进行crc检查,判断纠错结果是否正确。
[0150]
步骤s.2:如果纠错结果正确,则根据meta data block选择要读取的user data block,或返回读取到的用户数据,并返回给os正确状态。
[0151]
步骤s.3:如果纠错结果错误,则尝试进行投机性纠错。
[0152]
步骤s.4:如果进行了n次以内的投机性纠错能够挽救数据,那么返回读取到的用户数据,并返回给os正确状态。
[0153]
步骤s.5:如果投机性纠错机制不能挽救数据,那么给os返回错误状态。
[0154]
进一步的,参见图4所示,在ecc纠错后进行crc检查时,具体可采用如下的crc的校验流程:
[0155]
将meta data block或user data block去除最后4字节后,对其进行crc校验,将校验值和该block去除的最后4字节进行比较,判定两者是否一致,若一致,则表明数据内容正确,即,ecc纠错结果正确,反之,若不一致,则表明数据内容损坏,即,ecc纠错结果错误。
[0156]
由以上方案可知,本技术公开的文件的操作处理方法,通过提供一种基于crc检错和ecc纠错的双重机制,来同时保证用户数据和其元数据的可靠性,ecc纠错配合两级crc检错,使得为文件系统提供了一定程度上的纠错能力,并且,具体通过对用户数据及其元数据同时提供ecc纠错和crc检错功能,不但能提高文件系统的稳定性,还能提高用户数据的安全性,从而,本技术通过向文件系统引入上述的校验和纠错机制,提高了数据存储的可靠性,可有效解决基于tlc/qlc等存储介质的设备,在工业嵌入式领域存储可靠性不足的问题。
[0157]
对应于上述的文件的操作处理方法,本技术实施例还公开一种文件的操作处理装置,该装置的组成结构如图5所示,具体包括:
[0158]
写处理模块501,用于在文件的写操作中:
[0159]
将用户数据写入基于写操作指示所确定的数据块,并同步更新元数据;
[0160]
分别对写入的用户数据及其元数据进行ecc校验,得到用户数据及其元数据分别对应的ecc块校验值并记录;分别对写入的用户数据及其元数据进行crc校验,得到用户数据及其元数据分别对应的crc块校验值并记录;分别对写入的用户数据及其元数据各自所在的行进行crc校验处理,得到用户数据及其元数据各自所在的行对应的crc行校验值并记录;
[0161]
读处理模块502,用于在文件的读操作中:
[0162]
按对应的crc行校验值和/或crc块校验值,对读操作指示所指征的元数据进行校验处理;
[0163]
如果元数据校验成功,根据所述读操作指示所指征的元数据的数据块确定待读取的用户数据的数据块,并按对应的crc行校验值和/或crc块校验值,对待读取的用户数据进行校验处理,在校验成功的情况下,读取用户数据并返回;如果元数据校验失败,或用户数
据校验失败,按对应的ecc块校验值进行相应的ecc纠错处理。
[0164]
在一实施方式中,写处理模块501在记录用户数据及其元数据分别对应的ecc块校验值时,具体用于:将用户数据对应的ecc块校验值写入用户数据所在的数据块;将元数据对应的ecc块校验值写入元数据所在的数据块;
[0165]
写处理模块501在记录用户数据及其元数据分别对应的crc块校验值时,具体用于:将用户数据对应的crc块校验值写入用户数据所在的数据块;将元数据对应的crc块校验值写入元数据所在的数据块;
[0166]
写处理模块501在记录用户数据及其元数据各自所在的行对应的crc行校验值时,具体用于:将用户数据所在的行对应的crc行校验值写入用户数据所在的行中的最后一个数据块;将元数据所在的行对应的crc行校验值写入元数据所在的行中的最后一个数据块。
[0167]
在一实施方式中,读处理模块502在按对应的crc行校验值和/或crc块校验值,对读操作指示所指征的元数据进行校验处理时,具体用于:
[0168]
按对应的crc行校验值,对读操作指示所指征的元数据进行行crc校验;如果元数据的行crc校验失败,按对应的crc块校验值,对读操作指示所指征的元数据进行块crc校验;如果元数据的行crc校验成功,或块crc校验成功,根据读操作指示所指征的元数据的数据块查询待读取的用户数据的数据块;如果元数据的块crc校验失败,按对应的ecc块校验值,对读操作指示所指征的元数据的数据块执行ecc纠错处理;
[0169]
读处理模块502在在按对应的crc行校验值和/或crc块校验值,对待读取的用户数据进行校验处理时,具体用于:
[0170]
按对应的crc行校验值,对待读取的用户数据进行行crc校验;如果用户数据的行crc校验失败,按对应的crc块校验值,对待读取的用户数据进行块crc校验;如果用户数据的行crc校验成功,或块crc校验成功,读取并返回用户数据;如果用户数据的块crc校验失败,按对应的ecc块校验值,对待读取的用户数据的数据块执行ecc纠错处理。
[0171]
在一实施方式中,读处理模块502在执行ecc纠错处理时,具体用于:
[0172]
按对应的ecc块校验值,对读操作指示所指征的元数据的数据块或待读取的用户数据的数据块执行ecc纠错;对纠错结果进行crc检查,判断纠错结果是否正确;如果纠错结果正确,根据读操作指示所指征的元数据的数据块查询待读取的用户数据的数据块,或读取并返回用户数据。如果纠错结果错误,返回表征错误状态的提示信息。
[0173]
在一实施方式中,读处理模块502在判断纠错结果错误之后,返回表征错误状态的提示信息之前,还用于:
[0174]
在设定的次数上限内,进行投机性纠错处理;对投机性纠错处理的纠错结果进行crc检查,判断纠错结果是否正确;如果纠错结果正确,触发根据读操作指示所指征的元数据的数据块查询待读取的用户数据的数据块,或读取并返回用户数据的处理;如果纠错结果错误,触发返回表征错误状态的提示信息的处理。
[0175]
对于本技术实施例公开的文件的操作处理装置而言,由于其与上文各方法实施例公开的文件的操作处理方法相对应,所以描述的比较简单,相关相似之处请参见上文相应方法实施例的说明即可,此处不再详述。
[0176]
综上所述,本技术实施例公开的文件的操作处理方法、装置,具备以下技术优势:
[0177]
1)对元数据和用户数据同时提供ecc纠错和crc检错功能。不但能提高文件系统的
稳定性,也能提高用户数据的安全性;
[0178]
2)ecc可以通过奇偶校验算法,提供1/8的数据容错能力,如果block内部出现数据跳变,ecc在一定程度上可以直接把数据纠正过来,而不是直接报错;
[0179]
3)由于crc能提供全方位的检错能力,在纠错的过程中,如果ecc提供的纠错强度不足以提供足够的支持,那么文件系统可以通过有限的试错方式尝试恢复数据,在一定程度上能够进一步扩大ecc的容错和纠错能力。
[0180]
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
[0181]
为了描述的方便,描述以上系统或装置时以功能分为各种模块或单元分别描述。当然,在实施本技术时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
[0182]
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例或者实施例的某些部分所述的方法。
[0183]
最后,还需要说明的是,在本文中,诸如第一、第二、第三和第四等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0184]
以上所述仅是本技术的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本技术原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本技术的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献