Abstract:
Described herein are method and apparatus for storing data to a low-latency random read memory (LLRRM) device using non-aligned data striping, the LLRRM device being implemented on a storage system. The LLRRM device may comprise a bank comprising a plurality of memory chips, each chip being simultaneously accessible for storing data on a plurality of erase-units (EUs). A storage operating system may maintain, for each chip, a reserve data structure listing reserve EUs and a remapping data structure for tracking remappings between defective EUs to reserve EUs in the chip. A defective EU in a chip may be mapped to a reserve EU from the reserve data structure. Upon receiving a data block to be stored to the LLRRM device at the defective EU, the storage operating system may stripe the received data block across a plurality of chips in a non-aligned manner using the remapped reserve EU.
Abstract:
The present invention implements an I/O task architecture in which an I/O task requested by the storage manager, for example a stripe write, is decomposed into a number of lower-level asynchronous I/O tasks that can be scheduled independently. Resources needed by these lower-level I/O tasks are dynamically assigned, on an as-needed basis, to balance the load and use resources efficiently, achieving higher scalability. A hierarchical order is assigned to the I/O tasks to ensure that there is a forward progression of the higher-level I/O task and to ensure that resources do not become deadlocked.
Abstract:
Some embodiments of the invention may use a single control line signal as both a wake up signal and as an indicator of a device selection command. In a command-based protocol on a non-volatile memory bus, a host memory controller may assert a signal on a control line to bring all the memory devices on the bus into an operational mode, while concurrently placing a device selection command on the input/output lines. The memory device selected by the selection command may remain operational to perform a sequence of operations as directed by the host controller. The remaining (non-selected) memory devices may return to a sleep mode until a new signal on the control line is received, indicating a new selection command.
Abstract:
In one embodiment, the present invention includes a method to supply a negative voltage to at least one deselected wordline of a memory array. Further, while the negative voltage is supplied to deselected wordlines, a positive voltage may be supplied to a selected wordline. The memory array may be a flash memory incorporating multi-level cell architecture, in one embodiment.
Abstract:
A method for managing a long-running process carried out upon a plurality of disks is disclosed. A registry is established, the registry having a plurality of entries, each entry corresponding to one of the plurality of disks, each entry having a value indicative of a respective time at which its corresponding disk was last acted-upon by the long-running process. The long-running process executes on each of the disks based upon an order in which the disk having an oldest last acted-upon time is processed first and the disk having the newest last acted-upon time is processed last.
Abstract:
System for processing programmable buttons using system control interrupts in a portable device. The system comprises a programmable button that comprises logic to generate a selected system control interrupt when actuated. The system also comprises interrupt logic coupled to receive the selected system control interrupt. The interrupt logic comprises logic to generate a button report that includes a button identifier, which indicates that the programmable button has been actuated. The system also comprises button support logic that is coupled to receive the button report, the button support logic comprises logic to determine a selectable device function associated with the button identifier, and logic to activate the selectable device function.
Abstract:
The invention provides quality-of-service (QoS) delivery services over a computer bus having isochronous data transfer capabilities. A transmitting node on the bus transmits a message to an intended recipient indicating a requested bandwidth for a connection. If the intended recipient has sufficient resources, it allocates an isochronous data channel on the bus and notifies the transmitter of the allocated channel. Thereafter, the transmitter transmits the data on the allocated channel. If the recipient cannot allocate a channel, it does not respond, and the transmitter thereafter detects a time-out condition and begins transmitting using a “best efforts” scheme (i.e., non-guaranteed time delivery). In a second variation, a receiving node detects that it is receiving large quantities of data from a transmitting node. In response, the receiving node allocates an isochronous data channel on the bus and notifies the transmitter of the allocated channel. Thereafter, the transmitter transmits using the allocated isochronous channel. In a third variation, multiple receiving nodes that need to receive streaming data from a single transmitting node share a common isochronous data channel. In any of these variations, each receiver can periodically transmit a “deadman” timer message on a broadcast channel to indicate that it is still receiving on a given channel. If a transmitter detects that the deadman timer has expired, it reverts to transmitting data using a “best-efforts” scheme. A transmitter can transmit both to receivers that can handle QoS services and those that cannot explicitly support QoS services.
Abstract:
A storage system, such as a file server, receives a request to perform a write operation that affects a data block. In response, the storage system writes to a storage device the data block together with context information which uniquely identifies the write operation with respect to the data block. When the data block is subsequently read from the storage device together with the context information, the context information that was read with the data block is used to determine whether a previous write of the data block was lost.
Abstract:
A data storage system, such as RAID, upgraded dynamically including multiple stages, providing error checking data without taking the system off-line. Checksums are computed from the data and placed in block 63 of the same disk. The combination of parity bits across the parity disk, the remaining uncorrupted data in the data disks, and checksums within each disk includes sufficient information to enable restoration of corrupt data. The system is upgraded by reserving permanent checksum blocks, writing the checksums to a volume block number, and placing the checksums in permanently reserved checksum block locations after first moving data already there to unreserved blocks.
Abstract:
A system and method for managing a time-limited long-running process that acts upon disks of a disk array is based upon a general rule of acting upon each disk in an order based upon the length of time from when it was last acted-upon. Disks having the greatest last acted-upon time value (e.g. were processed the longest-time ago) are queued first by the process for acting-upon in the present run. The greatest last acted-upon time includes disks that have no prior last acted-upon time (e.g. newly added/mounted disks). A registry key entry is maintained in a registry file for each of the RAID groups that includes the volume's file system identifier (FSID) and particular RAID group identifier to (RGID). The RGID includes the last acted-upon time for the RAID group. This is set to a positive time number if the process has last acted-upon the group to completion. Alternatively, the last acted-upon time value is set to zero if the volume has not previously been acted-upon to completion or the RAID group is newly mounted.