Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
NON-VOLATILE STORAGE DEVICE
Document Type and Number:
WIPO Patent Application WO/2016/048272
Kind Code:
A1
Abstract:
Example implementations relate to a non-volatile storage device. An example implementation includes an electronic device including a non-volatile storage device that includes a first partition and a second partition. The first partition is associated with a first file system permission type and the second partition is associated with a second file system permission type. The electronic device also includes a controller coupled to the non-volatile storage device to create a virtual file system partition (VFSP) in the second partition based an operational parameter of a client. The controller is also to selectively erase first data in the first physical block or second data in the second physical block based on a first version number and based on a second version number.

Inventors:
TUMMAPUDI SATHISH BABU (IN)
G SREENIVASA CHAKRAVARTHY (IN)
Application Number:
PCT/US2014/056847
Publication Date:
March 31, 2016
Filing Date:
September 22, 2014
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
HEWLETT PACKARD ENTPR DEV LP (US)
International Classes:
G06F12/02; G06F12/06
Domestic Patent References:
WO2004102326A22004-11-25
Foreign References:
US20120173595A12012-07-05
US20110072188A12011-03-24
US20020136406A12002-09-26
US20140279911A12014-09-18
Attorney, Agent or Firm:
SU, Benjamin et al. (3404 E. Harmony RoadMail Stop 7, Fort Collins CO, US)
Download PDF:
Claims:
What is claimed is:

1 - An electronic device comprising:

a non-volatile storage device, wherein the non-volatile storage device includes a first partition and a second partition, wherein the first partition is associated with a first file system permission type, and wherein the second partition is associated with a second file system permission type: and

a controller coupled to the non-volatile storage device, wherein the controller is to:

create a virtual file system partition (VFSP) in the second

partition based an operational parameter of a client, wherein the VFSP is associated with a first physical block;

assign the first physical block a first version number: and format the VFSP using a file allocation table (FAT) file system: and

in response to a reception of an write request associated with the first physical block:

allocate a second physical block to the VFSP;

assign the second physical block a second version

number different from the first version number; and selectively erase first data in the first physical block or second data in the second physical block based on the first version number and based on the second version number,

2. The electronic device of claim 1 , wherein the first file system permission type includes a read-only permission, and wherein the second file system permission type includes a read-write permission.

3. The electronic device of ciaim 1 , wherein the non-volatile storage device is a flash memory implemented using at least one NAND logic gate.

4. The electronic device of claim 1 , wherein the first physical block and the second physical block have an identical logical address.

5. The electronic device of claim 1 , wherein the controller is to:

erase the first data in the first physical block when the write request is completed; and

erase the second data in the second physical block when a fulfillment of the write request is interrupted.

8. The electronic device of ciaim 1 , wherein the operational parameter includes a VFSP size and a VFSP name.

7. A method comprising:

creating, at a non-volatile storage device, a plurality of partitions,

wherein the plurality of partitions includes a first partition and a second partition, wherein the first partition is associated with a first file system permission type, and wherein the second partition is associated with a second file system permission type; creating a virtual file system partition (VFSP) in the second partition based an operational parameter of a client, wherein the VFSP is associated with a first physical block and a second physical block;

formatting the VFSP using a file allocation table (FAT) file system; and in response to a determination that the first physical block and the

second physical block have an identical logical address during a !ogica!-to-physical address mapping operation, selectively erasing first data in the first physical block or second data in the second physical block based on a first version number associated with the first physical block and based on a second version number associated with the second physical block.

8. The method of claim 7, further comprising erasing the second data in the second physical block when the first version number is lower than the second version number.

9. The method of claim 7, further comprising:

assigning the first version number to the first physical block when the first physical block is allocated to the VFSP; and

in response to an write request associated with the first physical block, assigning the second version number to the second physical block,

10. The method of claim 7, wherein the first file system permission type includes a read-only permission, and wherein the second file system permission type includes a read-write permission.

1 1 . A computer-readable storage medium comprising instructions that when executed cause a processor of an electronic device to:

create, at a non-volatile storage device, a plurality of partitions, wherein the plurality of partitions includes a first partition and a second partition, wherein the first partition is associated with a first file system permission type, and wherein the second partition is associated with a second file system permission type;

create a virtual file system partition (VFSP) in the second partition based an operational parameter of a client, wherein the VFSP is associated with a first physical block and a second physical block; and

in response to a reception of an write request associated with the first physical block:

store first data in the first physical block to the second physical block as second data in the second physical block;

modify the second data based on the write request; and erase the first data after a modification of the second data is completed. ί J

12. The computer-readable storage medium of claim 1 1 , wherein the instructions when executed further cause the processor to:

assign the first physical block a first version number when the first physical block is allocated to the VFSP; and

assign the second physical block a second version number based on the write request, wherein the first version number is lowe than the second version number.

13. The computer-readable storage medium of claim 12, wherein the instructions when executed further cause the processor to:

initiate a logical-to-physical address mapping operation when modifying the second physical block is interrupted: and

erase, during the iogicai-to-physical address mapping operation, the second data based on the first version number and based on the second version number.

14. The computer-readable storage medium of claim 1 1 , wherein the first file system permission type includes a read-only permission, and wherein the second file system permission type includes a read-write permission.

15. The computer-readable storage medium of claim 1 1 , wherein the first physical block and the second physical block have an identical logical address.

Description:
NON-VOLATILE STORAGE DEVICE

BACKGROUND

[0001] A non-volatile storage device may be a type of storage device that retains stored information for subsequent retrieval after power is no ionger supplied to the non-volatiie storage device. Examples of a non-volatile storage device may include flash memory and hard disk drives.

BRIEF DESCRIPTION OF THE DRAWINGS

[0002] Some examples of the present application are described with respect to the following figures:

[0003J FIG. 1 is a block diagram of an electronic device including a non-volatile storage device, according to an example;

[0004] FIG. 2 is a block diagram of an electronic device including a non-volatile storage device, according to an example;

[00051 FIG. 3 is a block diagram of a controller of an electronic device including a non-volatile storage device, according to an example; and

[0006] FIG. 4 is a flowchart illustrating a method of storing data to a non-volatile storage device of an electronic device, according to an example.

DETAILED DESCRIPTION

[0007] To utilize a non-volatiie storage device to store data, such as flash memory, a file system may be installed to the non-volatile storage device via a formatting operation. For example, a file table allocation (FAT) file system may be installed a non-volatile storage device. However, a FAT file system on a non-volatile storage device may be susceptible to data corruption when a write operation is interrupted by a power cut or a power failure, especially when the non-volatile storage device is implemented using "Not AND" (NAND) logic gates. Thus, reliability of a non-volatiie storage device may be reduced.

[0008] Examples described herein provide a non-volatile storage device to store data. For example, a non-volatiie storage device may include a first partition and a second partition. The first partition may be associated with a first file system permission type and the second partition may be associated with a second file system permission type, A controller may create a virtual file system partition (VFSP) in one of the partitions, such as the second partition, based an operational parameter of a client. The VFSP may be formatted using a FAT file system. In response to an write request associated with a first physical block of the VFSP, the controller may selectively erase the first physical block or the second physical block based on version numbers of the first physical block and the second physical block. Sn this manner, examples described herein ma increase reliability of a non-volatile storage device.

[0009J Referring now to the figures, FIG. 1 is a block diagram of an electronic device 100 including a non-volatile storage device, according to an example. Electronic device 100 may be, for example, a printer, a desktop computer, a laptop computer, a smartphone, a tablet computer, or any electronic device that utilizes a non-volatile storage device to store data. As used herein, a non-volatile storage device may be any storage medium or electronic circuits that retains stored data or information for subsequent retrieval after power is no longer supplied to the non-volatile storage device.

[0010] Electronic device 100 may include a controller 102 and a non-volatile storage device 104. Controller 102 may be, for example, a central processing unit (CPU), a semiconductor-based microprocessor, and/or other hardware devices suitable for modifying or controlling non-volatile storage device 104. Non-volatile storage device 104 may be, for example, flash memory, a hard disk drive, a magnetic tape, a ferroelectric random access memory, an optical disc, etc.

[0011] Non-volatile storage device 104 may include a plurality of partitions, such as a first partition 106 and a second partition 108. A partition may be a logical storage unit of non-volatile storage device 104. First partition 106 may be associated with a first file system permission type and second partition 108 may be associated with a second file system permission type.

[0012] In some example, the first file system permission type may include a read-only permission. The read-only permission may prevent modification to data stored in first partition 108 after the read-only permission is assigned to first partition 108. For example, data such as fonts, audio files, or any information that is not subject to subsequent modifications may be stored to first partition 106 upon creation of first partition 106. Subsequent to storing the data to first partition 106, controller 102 or another entity may assign the read-only permission to first partition 108 so that the stored data may be retrieved via a read operation and may not be modified via a write operation. Thus, a likelihood of data corruption during a write operation in first partition 108 may be reduced and reliability of non-volatile storage device 104 may be increased.

[00131 In some examples, the second file system permission type may include a read-write permission. The read-write permission may enable retrieval of data and modification to data stored in second partition 108. For example, data stored in second partition 108 may be retrieved via a read operation and may be modified via a write operation. Data that may be subject to subsequent modifications, such as data associated with a print job, may be stored in second partition 108.

[00141 Controller 102 may create a virtual file system partition (VFSP) 1 10 in second partition 108 to store data. Controller 102 may create VFSP 1 10 based an operational parameter of a client of electronic device l OOCreation of a VFSP is described in more detail with reference to FIG. 2. Although a single VFSP is shown in FIG. 1 , it should be understood that second partition 108 may include any number of VFSPs. As used herein, a client may a software application or module implemented using a set of processor executable instructions. For example, electronic device 100 may be a printer and a client of electronic device 100 may be a fax application of the printer implemented using processor executable instructions.

[0015] Controller 102 may format VFSP 1 10 using a FAT file system so that data may be stored in VFSP 1 10. VFSP 1 10 may be associated with at least one physical block where data is stored. For example, VFSP 1 10 may be associated with a first physical block 1 12 and a second physical block 1 14.

[00161 During operation, controller 102 may allocate first physical block 1 12 to store data in VFSP 1 10. When first physical block 1 12 is first allocated, controller 102 may assign a first version to first physical block 1 12 in the out-of-band of first physical block 1 12. Controller 102 may maintain a running counter so that blocks allocated subsequent to first physical block 1 12 may be assigned a version number that is higher than the first version number. When data is stored in first physical block 1 12, controller 102 may associate the data with a logical address for subsequent retrieval or modification.

[0017] Controller 102 may receive a write request 1 18 from a client of electronic device 100. Write request 1 16 may be associated with a physical block of VFSP 1 10, such as first physical block 1 12. Write request 1 16 may include a logical address of data that is to be modified. The logical address may be used to determine a corresponding physical block that holds the data. For example, write request 1 16 may include a logical address of first data stored in first physical block 1 12. Based on write request 1 16, controller 102 may determine that first physical block 1 12 is targeted to be modified or updated. In some examples, a logical address may correspond to a logical block number.

[0CI18| To fulfil or complete write request 1 16, controller 102 may allocate second physical block 1 14 and assign a second version number to second physical block 1 14. The second version number may be higher than the first version number. As described in more detail below, controller 102 may selectively erase first data or content in first physical block 1 12 or second data or content in second physical block 1 14 based on the first version number and based on the second version number.

[0019] To fulfil or complete write request 1 16, controller 102 may also copy the first data in first physical block 1 12 to second physical block 1 14 as the second data in second physical block 1 14 via a write operation. When the write operation is completed, second physical block 1 14 may become a duplicate of first physical block 1 12 since both physical blocks 1 12 and 1 14 hold the same data. Thus, physical blocks 1 12 and 1 14 may have an identical logical address.

[0020] After copying the first data from the first physical block 1 12 to second physical block 1 14, controller 102 may modify the second data in second physical block 1 14 based on write request 1 16 via a write operation. When controller 102 finishes modifying the second data, write request 1 18 is completed. Controller 102 may erase the first data in first physical block 1 12.

[0021] When there is power failure or a power cut during the modification of the second data by controller 102, controller 102 may not continue to modify the second data. Thus, a fulfillment of the write request is interrupted. Upon receiving power subsequent to the power failure or power cut (e.g., at a subsequent reboot), controller 102 may perform a iogicai-to-physical address mapping operation on non-volatile storage device 104. During the iogicai-to- physical address operation, controller 102 may map logical address in data in a physical block to a physical address of the physical block for subsequent access or modification. in response to a determination that first physical block 1 12 and second physical block 1 14 have an identical logical address, controller 102 may compare the first version number to the second version number.

[0022] Controller 102 may erase the data in a physical block with a higher version number as the physical block with a higher version number is a more recently allocated physical block that is subject to modification during a power failure. An interruption of the modification of the data caused by a power failure may corrupt the data that is being modified. Thus, controller 102 may erase the second data in second physical block 1 14 since the second version number is higher than the first version number indicating that controller 102 was modifying the second data when the power failure occurred.

[0023] By using first physical block 1 12 and second physical block 1 14 to fulfill write request 1 18, a likelihood of data corruption during the fulfillment of write request 1 16 may be reduced since the first data in first physical block 1 12 may serve as a backup copy when the modification of the second data is interrupted thus susceptible to data corruption. Thus, a reliability of nonvolatile storage device 104 may be increased.

[0024] FIG. 2 is a block diagram of an electronic device 200 including a non-volatile storage device, according to an example. Electronic device 200 may be similar to electronic device 100 of FIG. 1 . Electronic device 200 may include a controller 202 and non-volatile storage device 104.

[0025] Controller 202 may be similar to controller 102 of FIG. 1. Controller 202 may include a virtual file system partition (VFSP) manager 204, a file system driver 206, a non-volatile storage device driver 208, and a drive controller 210. VFSP manage 204, Hie system driver 208, non-volatile storage device driver 208, and drive controller 210 may be implemented using circuitry and/or processor executable instructions.

[0Θ26] During operation, VFSP manager 204 may create at least one VFSP, such as VFSP 1 10 of FIG. 1 , based on an operational parameter of a client upon a power up on electronic device 200. VFSP manager 204 may retrieve or access the operational parameter from a registration table 212. For example, a client 214 may transmit a message 216 containing one or more operational parameters of client 214 to controller 202. An operational parameter may include a VFSP name, a VFSP size, etc. VFSP manager 204 may store the one or more operational parameters in registration table 212 and associate client 214 with the one or more operational parameters.

[0027] VFSP manager 204 may create a VFSP by creating a file with a particular partition size in a read-write partition, such as second partition 108 of FIG. 1 and formatting the file using the FAT file system. The particular partition size may correspond to the VFSP size. When the VFSP is created, VFSP manager 204 may communicate a mount path of the VFSP to client 214. A mount path may indicate to a client how to access the VFSP. Using the mount path, client 214 may initiate a read and/or a write operation to the VFSP. Each VFSP may be associated with a single client. Thus, changes to the VFSP based on a write request of the client may not affect other VFSPs in the same partition.

[0028] The number of physical blocks allocated to or assigned to a particular VFSP may be based on the VFSP size requested by a client. For example, when a physical block has a size of 2048 bytes and the VFSP size is 10 kilobytes, 5 physical blocks are to be allocated or assigned to the VFSP. In some examples, the size of a VFSP sector may be selected to match a physical block size to make sure file system meta-data structures, such as a FAT table, a Partition Boot Sector, etc., are allocated to dedicated physical blocks so that update to the user data may not interfere with FAT file system meta-data structures.

[0029] Drive controller 210 may assist VFSP manager 204 to create a VFSP. Drive controller 210 may monitor interrupts from non-volatile storage device 104. Drive controller 210 may also trigger VFSP manager 204 to create a VFSP, Further, drive controller 210 may perform the mounting of file systems on non-volatile storage device 104. File system driver 206 may perform operations associated with a file system, such as formatting. Nonvolatile storage device driver 208 may perform operations associated with non-volatile storage device 104, such as a read operation, a write operation, and/or a iogical-to-physical address mapping operation.

[0030] FIG. 3 is a block diagram of a controller 300 of an electronic device including a non-volatile storage device, according to an example. Controller 300 may implement controller 102 of FIG. 1 and/or controller 202 of FIG. 2.

[0031] Controller 300 may include a processor 302 and a computer- readable storage medium 304. Processor 302 may be a central processing unit (CPU), a semiconductor-based microprocessor, and/or other hardware devices suitable for retrieval and execution of instructions stored in computer- readable storage medium 304. Processor 302 may fetch, decode, and execute instructions 306-314 to assign file system permissions to partitions of a non-volatile storage device, create a VPFS in a partition, modify data in a physical data block, and/or selectively erase data in a physical data block based on one or more version numbers. As an alternative or in addition to retrieving and executing instructions, processor 302 may include at least one electronic circuit that includes electronic components for performing the functionality of instructions 306, 308, 310, 312, 314, or a combination thereof.

[0032] Computer-readable storage medium 304 may be any electronic, magnetic, optical, or other physical storage device that contains or stores executable instructions. Thus, computer-readable storage medium 304 may be, for example, Random Access Memory (RAM), an Electrically Erasable Programmable Read-Gniy Memory (EEPROM), a storage device, an optical disc, eta. in some examples, computer-readable storage medium 304 may be a non-transitory storage medium, where the term "non-transitory" does not encompass transitory propagating signals. As described in detail below, computer-readable storage medium 304 may be encoded with a series of processor executable instructions 306-314. [0033] Partition creation instructions 306 may create one or more partitions in a non-volatile storage device, such as first partition 106 of FIG. 1 and second partition 108. Partition creation instructions 308 may also assign one or more file system permissions to a partition, such as a read-only permission.

[0034] Virtual file system partition (VFSP) instructions 308 may create one or more VFSP in a partition, such as VFSP 1 10. VFSP instructions 308 may also format a VFSP with a file system, such as the FAT file system. Block duplication instructions 310 may copy data from a physical block, such as first physical block 1 12, to another physical block, such as second physical block 1 14. Block duplication instructions 310 may also allocate a physical block and assign a version number to the allocated physical block. Block modification instructions 312 may modify data in a physical block via a write operation. Block erasure instructions 314 may selectively erase data in a physical block based on one or more version numbers.

[0035] FIG. 4 is a flowchart illustrating a method 400 of storing data to a non-volatile storage device of an electronic device, according to an example. Method 400 may be implemented by electronic device 100 of FIG. 1 , electronic device 200 of FIG. 2, and/or controller 300 of FSG. 3.

[0036] Method 400 includes creating, at a non-volatile storage device, a plurality of partitions, where the plurality of partitions includes a first partition and a second partition, where the first partition is associated with a first file system permission type, and where the second partition is associated with a second file system permission type, at 402. For example, referring to FIG. 1 , controller 102 may create first partition 106 and second partition 108 in nonvolatile storage device 104.

[0037] Method 400 also includes creating a virtual file system partition (VFSP) in the second partition based an operational parameter of a client, where the VFSP is associated with a first physical block and a second physical block, at 404. For example, referring to FIG. 1 , controller 102 may create VFSP 1 10 in second partition 108. Method 400 further includes formatting the VFSP using a file allocation table (FAT) file system, at 406. For example, referring to FSG. 1 , controller 102 may format VFSP 1 10 using the FAT file system.

[0038] Method 400 further includes, in response to a determination that the first physical block and the second physical block have an identical logical address during a logical-to-physical address mapping operation, selectively erasing first data in the first physical block or second data in the second physical block based on a first version number associated with the first physical block and based on a second version numbe associated with the second physical block, at 408. For example, referring to FIG. 1 , in response to a determination that first physical block 1 12 and second physical block 1 14 have an identical logical address, controller 102 may compare the first version number to the second version number. Controller 102 may erase the data in a physical block with a higher version number as the physical block with a higher version number is a more recently allocated physical block that is subject to modification during a power failure.

[0039] According to the foregoing, examples disclosed herein provide a non-volatile storage device to store data. For example, a controller of an electronic may create a read-only partition and a read-write partition in a non-volatile storage device. The controller may create at least one VFSP in the read-write partition. When data in a physical block associated with the VFSP is selected for update based on a write request, the controller may copy data in the physical block to another physical block. The controller may modify data in the other physical block based on the write request via a write operation. When the write operation is interrupted by a power failure, the controller may erase the data in the other physical block upon a reboot.

When the write operation is completed, the controller may erase the data in the physical block. Thus, a likelihood of data corruption in a physical block may be reduced and a reliability of the non-volatile storage device may be increased.

[0040] The use of "comprising", "including" or "having" are synonymous and variations thereof herein are meant to be inclusive or open-ended and do not exclude additional unrecited elements or method steps.