Patents by Inventor Ebrahim Hashemi

Ebrahim Hashemi has filed for patents to protect the following inventions. This listing includes patent applications that are pending as well as patents that have already been granted by the United States Patent and Trademark Office (USPTO).

  • Publication number: 20080091916
    Abstract: A data storage system includes at least one first storage device and at least one second storage device, and a storage controller coupled to the first storage device and the second storage device. The storage controller is configured to emulate a virtual storage device by grouping the first storage device and the second storage device. Each of the first storage device and the second storage device includes a plurality of blocks for storing data. The storage controller is also configured to expand a capacity of the virtual storage device by adding at least one third storage device to the first storage device. Each block of the third storage device has a 0 or 1 formatted in it, and a capacity of the virtual storage device is increased by a capacity of the third storage device.
    Type: Application
    Filed: October 17, 2007
    Publication date: April 17, 2008
    Applicant: Agere Systems, Inc.
    Inventor: Ebrahim HASHEMI
  • Publication number: 20070067665
    Abstract: A storage system and method are disclosed for providing redundant arrays of storage devices such as magnetic disks. Each array includes a data portion with available data space and a spare portion. A controller monitors the size of available space as data fills up the array, and reconfigures the array when the available space reaches a predetermined minimum size or when the spare portion is filled. The number of disks is minimized since the spare portions utilize the unfilled portion of the disks that would normally include only data.
    Type: Application
    Filed: September 19, 2005
    Publication date: March 22, 2007
    Inventor: Ebrahim Hashemi
  • Patent number: 6993676
    Abstract: A method and apparatus for fast initialization of storage devices. An apparatus is described including a redundant array of storage devices that comprises a logical volume of storage. The logical volume further comprises a plurality of stripes. A bit mapped vector provides state initialization information for each of the plurality of stripes in lieu of initializing each of the stripes. A storage controller initializes each of the plurality of stripes by using accesses to the redundant array while concurrently allowing access to the plurality of stripes. Initialization of a stripe can be done by processing a write access. Associated written data to the stripe and updating its corresponding redundancy effectively initializes that stripe. The bit mapped vector is updated to reflect the initialization of that stripe. In addition, while the redundant array is idle, further initialization of un-initialized stripes occurs while concurrently allowing access to the redundant array.
    Type: Grant
    Filed: June 12, 2002
    Date of Patent: January 31, 2006
    Assignee: Sun Microsystems, Inc.
    Inventors: John Corbin, Ebrahim Hashemi
  • Patent number: 6981171
    Abstract: A data storage array employing block verification information to invoke initialization procedures. In one embodiment, a data storage subsystem includes a plurality of storage devices configured in an array and a storage controller coupled to the storage devices. The storage controller is configured to store data in the form of stripes where each stripe includes a plurality of data blocks stored across the plurality of storage devices. Each of the data blocks is associated with block verification information. Upon certain write operations, the storage controller is configured to initialize a given stripe in response to detecting a mismatch in the block verification information in at least one data block of the given stripe. In one particular implementation, the block verification contained in each of the data blocks includes a logical block address and/or a cyclic redundancy code.
    Type: Grant
    Filed: June 5, 2001
    Date of Patent: December 27, 2005
    Assignee: Sun Microsystems, Inc.
    Inventor: Ebrahim Hashemi
  • Patent number: 6934804
    Abstract: Method and apparatus for striping spare storage in a data storage system. Specifically the present invention describes a method and apparatus for storing data and spare storage in a data storage system having a plurality of physical storage devices. The plurality of physical storage devices is partitioned into a plurality of slices. Logical units of storage (LUNs) are created, wherein each LUN contains data, spare, and data redundancy. Each of the plurality of slices is assigned to one of the plurality of LUNs so as to distribute storage of data, data redundancy, and spare across all of the plurality of physical storage devices. Distribution of spare storage is concentrated at the inner zone of each of the plurality of physical storage devices. The data and spare storage can be distributed uniformly or with varying granularities across all of the plurality of physical storage devices.
    Type: Grant
    Filed: May 28, 2002
    Date of Patent: August 23, 2005
    Assignee: Sun Microsystems, Inc.
    Inventor: Ebrahim Hashemi
  • Patent number: 6845465
    Abstract: A method and apparatus for leveraging spare disks in a data storage system. Specifically the present invention describes a method for data recovery and redundancy in a data storage system having a plurality of disk drives. The data storage system is grouped into a plurality of arrays having data redundancy. The plurality of arrays is arranged in an optimum combination of arrays of mirrored pairs of disk drives, arrays of three disk drives in a redundant array of independent disks (RAID) configuration, and arrays of more than three disk drives in a RAID configuration to maximize performance while providing data redundancy. For every failure of one of said plurality of arrays due to a failed disk drive, a new array having data redundancy in a RAID configuration is dynamically created in said plurality of arrays. The new array is optimized for best performance and contains information from the failed disk drive.
    Type: Grant
    Filed: September 17, 2001
    Date of Patent: January 18, 2005
    Assignee: Sun Microsystems, Inc.
    Inventor: Ebrahim Hashemi
  • Patent number: 6748488
    Abstract: A data storage subsystem including an array of storage devices and a storage controller is disclosed. In one embodiment, the array of storage devices stores information in multiple stripes. Each stripe may include a plurality of data blocks and redundancy information in the form of plurality of redundancy blocks. The redundancy information may be generated using an nth order generator polynomial such as a Reed Solomon code. The storage controller may be configured to perform modified read/write stripe updates by: (a) reading original data from a subset of data blocks in a target stripe; (b) reading the original redundancy information for that stripe; (c) comparing the original data with the new data to determine a data difference; (d) calculating a redundancy difference from the data difference; (e) applying the redundancy difference to the original redundancy information to obtain updated redundancy information, (f) writing the new data and updated redundancy information to the target stripe.
    Type: Grant
    Filed: September 28, 2001
    Date of Patent: June 8, 2004
    Assignee: Sun Microsystems, Inc.
    Inventors: James Byrd, Ebrahim Hashemi, Manuel Cisneros, Alex Umino, John Schell
  • Patent number: 6708242
    Abstract: The present invention provides methods for addressing an extended number of peripheral devices over a bus. A bus having an N-bit datapath is provided in a computer system. An extended address space is defined for a set of extended peripheral devices by assigning a bus ID to each extended peripheral device. Each bus ID includes a group ID and a group member ID. Each group ID and group member ID also indicates a priority of said associated device. One or more peripheral devices arbitrate for the bus. In this process, a peripheral device having the highest priority group ID and the highest priority group member ID among the arbitrating devices wins the arbitration. After arbitration, the winning device selects, for transferring data, a device by placing on the bus the bus IDs of the selecting and selected devices.
    Type: Grant
    Filed: August 9, 2000
    Date of Patent: March 16, 2004
    Assignee: Adaptec, Inc.
    Inventors: Charles A. Monia, Lawrence J. Lamers, Ebrahim Hashemi, Andrew J. Roy
  • Publication number: 20030233596
    Abstract: A method and apparatus for fast initialization of storage devices. An apparatus is described including a redundant array of storage devices that comprises a logical volume of storage. The logical volume further comprises a plurality of stripes. A bit mapped vector provides state initialization information for each of the plurality of stripes in lieu of initializing each of the stripes. A storage controller initializes each of the plurality of stripes by using accesses to the redundant array while concurrently allowing access to the plurality of stripes. Initialization of a stripe can be done by processing a write access. Associated written data to the stripe and updating its corresponding redundancy effectively initializes that stripe. The bit mapped vector is updated to reflect the initialization of that stripe. In addition, while the redundant array is idle, further initialization of un-initialized stripes occurs while concurrently allowing access to the redundant array.
    Type: Application
    Filed: June 12, 2002
    Publication date: December 18, 2003
    Inventors: John Corbin, Ebrahim Hashemi
  • Publication number: 20030225970
    Abstract: Method and apparatus for striping spare storage in a data storage system. Specifically the present invention describes a method and apparatus for storing data and spare storage in a data storage system having a plurality of physical storage devices. The plurality of physical storage devices is partitioned into a plurality of slices. Logical units of storage (LUNs) are created, wherein each LUN contains data, spare, and data redundancy. Each of the plurality of slices is assigned to one of the plurality of LUNs so as to distribute storage of data, data redundancy, and spare across all of the plurality of physical storage devices. Distribution of spare storage is concentrated at the inner zone of each of the plurality of physical storage devices. The data and spare storage can be distributed uniformly or with varying granularities across all of the plurality of physical storage devices.
    Type: Application
    Filed: May 28, 2002
    Publication date: December 4, 2003
    Inventor: Ebrahim Hashemi
  • Publication number: 20030084261
    Abstract: Commands requesting access to a storage medium may be reordered by locating an insertion point for a new command in a first list of commands in a command queue and checking at least one of the following conditions: that the end of the command queue is within a first number of queue elements from the first insertion point; and/or that inserting the new command at the insertion point would not cause the first list to exceed a maximum list size. If the condition(s) are met, the new command may be inserted at the insertion point; otherwise, another insertion point may be selected. Thus, insertion points may be restricted to those that occur within a first number of queue elements from the end of the queue and/or to those that do not cause any lists within the command queue to exceed a certain size.
    Type: Application
    Filed: October 29, 2001
    Publication date: May 1, 2003
    Inventors: James M. Byrd, Ebrahim Hashemi
  • Publication number: 20030070042
    Abstract: A data storage subsystem including an array of storage devices and a storage controller is disclosed. In one embodiment, the array of storage devices stores information in multiple stripes. Each stripe may include a plurality of data blocks and redundancy information in the form of plurality of redundancy blocks. The redundancy information may be generated using an nth order generator polynomial such as a Reed Solomon code. The storage controller may be configured to perform modified read/write stripe updates by: (a) reading original data from a subset of data blocks in a target stripe; (b) reading the original redundancy information for that stripe; (c) comparing the original data with the new data to determine a data difference; (d) calculating a redundancy difference from the data difference; (e) applying the redundancy difference to the original redundancy information to obtain updated redundancy information, (f) writing the new data and updated redundancy information to the target stripe.
    Type: Application
    Filed: September 28, 2001
    Publication date: April 10, 2003
    Inventors: James Byrd, Ebrahim Hashemi, Manuel Cisneros, Alex Umino, John Schell
  • Publication number: 20030056142
    Abstract: A method and apparatus for leveraging spare disks in a data storage system. Specifically the present invention describes a method for data recovery and redundancy in a data storage system having a plurality of disk drives. The data storage system is grouped into a plurality of arrays having data redundancy. The plurality of arrays is arranged in an optimum combination of arrays of mirrored pairs of disk drives, arrays of three disk drives in a redundant array of independent disks (RAID) configuration, and arrays of more than three disk drives in a RAID configuration to maximize performance while providing data redundancy. For every failure of one of said plurality of arrays due to a failed disk drive, a new array having data redundancy in a RAID configuration is dynamically created in said plurality of arrays. The new array is optimized for best performance and contains information from the failed disk drive.
    Type: Application
    Filed: September 17, 2001
    Publication date: March 20, 2003
    Inventor: Ebrahim Hashemi
  • Publication number: 20020194427
    Abstract: A storage system may include an array of storage devices and a storage controller. The storage controller may store data in stripes across the storage devices. Each stripe includes a plurality of stripe units that may be data stripe units and/or one or more redundancy stripe units. For each stripe, the stripe units are stored on different ones of the storage devices so that the stripe units are recoverable if one of the storage devices fails. Each of the storage devices is partitioned into a data slice and a redundancy slice. A data slice includes a plurality of contiguous segments of a storage device on which all data stripe units for that storage device are stored. The redundancy slice includes a plurality of contiguous segments independent from the data slice and on which all redundancy stripe units for that storage device are stored.
    Type: Application
    Filed: June 18, 2001
    Publication date: December 19, 2002
    Inventor: Ebrahim Hashemi
  • Publication number: 20020184556
    Abstract: A data storage array employing block verification information to invoke initialization procedures. In one embodiment, a data storage subsystem includes a plurality of storage devices configured in an array and a storage controller coupled to the storage devices. The storage controller is configured to store data in the form of stripes where each stripe includes a plurality of data blocks stored across the plurality of storage devices. Each of the data blocks is associated with block verification information. Upon certain write operations, the storage controller is configured to initialize a given stripe in response to detecting a mismatch in the block verification information in at least one data block of the given stripe. In one particular implementation, the block verification contained in each of the data blocks includes a logical block address and/or a cyclic redundancy code.
    Type: Application
    Filed: June 5, 2001
    Publication date: December 5, 2002
    Inventor: Ebrahim Hashemi
  • Patent number: 6425052
    Abstract: An array of storage devices may be provided in which data is both striped and mirrored across the array. Data may be organized in stripes in which each stripe is divided into a plurality of stripe units. The stripe units may be mapped sequentially to consecutive storage devices in the array for each data stripe. Each data stripe is also mirrored within the array as a mirrored data stripe. Each mirrored data stripe is also divided into a plurality of stripe units. The stripe units of the mirrored stripes are distributed throughout the array according to a mapping that provides for load balancing during a reconstruction operation. According to one embodiment, stripe units for mirrored stripes are distributed according to a rotational group such that each mirrored stripe is rotated on the array by one more position than the previous mirrored stripe and wherein the rotational group is repeated as necessary.
    Type: Grant
    Filed: October 28, 1999
    Date of Patent: July 23, 2002
    Assignee: Sun Microsystems, Inc.
    Inventor: Ebrahim Hashemi
  • Patent number: 5857112
    Abstract: The present invention provides a system of hardware and software that combine to efficiently integrate the various requirements for system performance and system reliability in a RAID system. A user of the present invention is able to select from a range of system performance and reliability configurations, independently of each other. From user specifications, the present invention initially constructs a user space which must be mapped onto the physical storage space in the array of disk drives. The present invention preserves the orthogonality of performance and reliability concepts through a series of mappings that relate to these concepts independently as it transforms user space into the physical space of the disk array.
    Type: Grant
    Filed: September 9, 1992
    Date of Patent: January 5, 1999
    Inventors: Ebrahim Hashemi, Martin Schulze, Jim Morris, Bob Harper, Swami Nathan, Paul Boulay, Dave Scheffey
  • Patent number: 5671349
    Abstract: The present invention provides a system of hardware and software that combine to form a redundant array of disk drives. This array provides a double means of redundancy that can reconstruct data from two simultaneously failed disks. The double redundancy means is implemented by two separate algorithms, DRR1 and DRR2. DRR1 takes the exclusive-or of all the commercial data and stores the result as redundancy data. DRR2 is similar to the algorithm described in Patel's article. As an additional feature, the implementation of DRR1 and DRR2 in the present invention is flexible enough to support either on-the-fly or read-modify-write level operation. Although both algorithms are in the prior art, the present invention improves on the run-time and space requirements of the algorithm. This improvement arises because of a novel relationship, discussed below, that exist between the individual T.sup.
    Type: Grant
    Filed: December 6, 1994
    Date of Patent: September 23, 1997
    Assignee: Hitachi Computer Products America, Inc.
    Inventors: Ebrahim Hashemi, Martin E. Schulze