Ruggedized block device driver
First Claim
1. A method for writing or otherwise changing data in a non-volatile storage device supported by a block device driver so as to provide ruggedized or multitasking-ruggedized operation, the method comprising the steps of:
- a. sending a command to the device driver for defining the start of a transaction;
b. sending a sequence of one or more commands which are part of said transaction to the device driver, each command potentially changing the data contents of the device; and
c. sending a command to the device driver for defining the end of said transaction.
4 Assignments
0 Petitions
Accused Products
Abstract
A ruggedized file system, which provides ruggedness to non-volatile storage media at the device driver level. The ruggedized block device driver implementation provides ruggedness at the device driver level, thereby allowing atomic sequences of operations by the file system. Accordingly, the device driver is told that the current data state is a “fall-back” consistent state, into which the system should wake up if interrupted prior to completion of the sequence, following which operations are executed as required by the file system, including erasing, writing or overwriting blocks. The device driver is further told when the atomic sequence is complete, such that a new consistent state is thereby defined. It is, accordingly, the responsibility of the device driver to ensure that either the sequence completes and the file system reaches the target consistent state, or if power is lost or any other failure occurs in the middle, the file system will wake up in the initial fallback state. Except for activating this “atomicity” feature as described above, the file system does not have to be aware of any implementation detail of the ruggedness solution.
-
Citations
49 Claims
-
1. A method for writing or otherwise changing data in a non-volatile storage device supported by a block device driver so as to provide ruggedized or multitasking-ruggedized operation, the method comprising the steps of:
-
a. sending a command to the device driver for defining the start of a transaction;
b. sending a sequence of one or more commands which are part of said transaction to the device driver, each command potentially changing the data contents of the device; and
c. sending a command to the device driver for defining the end of said transaction. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A method for writing or otherwise changing data in a non-volatile storage device supported by a block device driver so as to provide ruggedized or multitasking-ruggedized operation, the method comprising the steps of:
-
a. sending a command to the device driver for defining the start of a transaction, and getting from the device driver a transaction handle associated with said transaction;
b. sending a sequence of one or more commands to the device driver, each command made part of said transaction by associating it with said transaction handle, and each command potentially changing the data contents of the device; and
c. sending a command to the device driver for defining the end of said transaction. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24)
-
-
25. A method for enabling a file system to write or otherwise change data in a non-volatile storage device supported by a ruggedized or multitasking-ruggedized block device driver, so as to provide ruggedized or multitasking-ruggedized operation of the file system, the method comprising the steps of:
-
a. examining each command received by said file system, for determining whether said command should be protected from failures; and
b. for each said command determined to be protected from failures;
i. sending a command to said device driver for starting a transaction;
ii. performing said command received by said file system according to algorithms of said file system, generating at least one command to said device driver, said at least one command potentially changing the data contents of said device; and
iii. sending a command to the device driver for ending said transaction. - View Dependent Claims (26)
-
-
27. A method for enabling a file system to write or otherwise change data in a non-volatile storage device supported by a ruggedized or multitasking-ruggedized block device driver, so as to provide ruggedized or multitasking-ruggedized operation of the file system, the method comprising the steps of:
-
a. examining each command received by said file system, for determining whether said command should be protected from failures; and
b. for each said command determined to be protected from failures;
i. sending a command to said device driver for starting a transaction, and getting from the device driver a transaction handle associated with said transaction;
ii. performing said command received by said file system according to algorithms of said file system, generating at least one command to said device driver, said at least one command potentially changing the data contents of said device, and making said at least one command part of said transaction by associating it with said transaction handle; and
iii. sending a command to the device driver for ending said transaction. - View Dependent Claims (28)
-
-
29. A method for converting an existing non-ruggedized file system on a non-volatile storage device supported by a ruggedized or multitasking-ruggedized block device driver, into a ruggedized or multitasking-ruggedized file system, the method comprising the steps of:
-
a. adding, in the beginning of the file system code implementing each file system command which might change data contents of the storage device, new code for sending a command to the device driver for starting a transaction; and
b. adding, at the end of the file system code implementing each file system command which might change said data contents of the storage device, new code for sending a command to the device driver for ending said transaction. - View Dependent Claims (30)
-
-
31. A method for converting an existing non-ruggedized file system on a non-volatile storage device supported by a ruggedized or multitasking-ruggedized block device driver, into a ruggedized or multitasking-ruggedized file system, the method comprising the steps of:
-
a. adding, in the beginning of the file system code implementing each file system command which might change data contents of the storage device, new code for sending a command to the device driver for starting a transaction and getting from the device driver a transaction handle associated with said transaction;
b. for each driver command within the file system code implementing each file system command which might change data contents of the storage device, where said driver command potentially changes the data contents of said device, making it part of said transaction by associating it with said transaction handle; and
c. adding, at the end of the file system code implementing each file system command which might change said data contents of the storage device, new code for sending a command to the device driver for ending said transaction. - View Dependent Claims (32)
-
-
33. A method for a software application to write or otherwise change data on a non-volatile storage device, where the storage device is supported by a ruggedized or multitasking-ruggedized block device driver and a file system, so as to provide ruggedized or multitasking-ruggedized operation of the application, the method comprising the steps of:
-
a. sending a command to the device driver for starting a transaction;
b. sending a sequence of at least one command to the file system, each said command potentially changing said data contents of the device; and
c. sending a command to the device driver for ending said transaction.
-
-
34. A method for converting an existing non-ruggedized application using a non-volatile storage device supported by a ruggedized or multitasking-ruggedized block device driver and a file system, into a ruggedized or multitasking-ruggedized application, the method comprising the steps of:
-
a. adding, before code sending any sequence of commands to the file system which might change the file system'"'"'s data contents, new code for sending a command to the device driver, which starts a transaction; and
b. adding, after said code sending any sequence of commands to the file system which might change the file system'"'"'s data contents, new code for sending a command to the device driver, which ends said transaction.
-
-
35. A system providing ruggedized or multitasking-ruggedized operation of a non-volatile storage device, comprising:
-
physical non-volatile storage media; and
a software block device driver which is ruggedized or multitasking-ruggedized by itself, independently of a file system or other software application using it, where said device driver supports the joining of driver calls into transactions. - View Dependent Claims (36, 37, 38, 39, 40, 41, 42, 43, 44, 45)
-
-
46. A system providing ruggedized or multitasking-ruggedized operation of a file system on a non-volatile storage device, comprising the following:
-
a. physical non-volatile storage media;
b. a software block device driver for operating said storage media, said device driver being ruggedized or multitasking-ruggedized by itself, independently of the file system or other software applications using it, where said device driver supports the joining of driver calls into transactions; and
c. a ruggedized or multitasking-ruggedized file system wherein ruggedness or multitasking-ruggedness of said file system is achieved by using the ruggedized or multitasking-ruggedized features of said block device driver. - View Dependent Claims (47, 48)
-
-
49. A system providing ruggedized or multitasking-ruggedized operation of a software application on a non-volatile storage device, comprising the following:
-
a. physical non-volatile storage media;
b. a software block device driver for operating said storage media, said device driver being ruggedized or multitasking-ruggedized by itself, independently of the file system or other software applications using it, where said device driver supports the joining of driver calls into transactions;
c. a file system; and
d. a software application, such that ruggedness or multitasking-ruggedness of said application is achieved by using the ruggedized or multitasking-ruggedized features of said block device driver.
-
Specification