PROCESSING DATA STORAGE COMMANDS FOR ENCLOSURE SERVICES

DE112016000164B4Active Publication Date: 2025-03-06SANDISK TECHNOLOGIES LLC
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
DE112016000164
Authority / Receiving Office
DE · DE
Patent Type
Patents
Current Assignee / Owner
Priority Date
2015-03-05
Filing Date
2016-02-22
Publication Date
2025-03-06
Estimated Expiration
2036-02-22

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader

Abstract

Data storage device (220) comprising the following: a non-volatile memory (245); and a controller (230) coupled to the non-volatile memory, the controller being designed to: Identifying (405) a virtual ATA packet interface, VATAPI, of the data storage device as a SCSI enclosure services, SES, device opposite a computer device (210) coupled to the data storage device; Receiving (410) one or more data storage commands from a communication interface (240, 310) of the data storage device; Feeding (415) one or more data storage commands to the VATAPI (331); and Receiving (435) one or more results of one or more data store commands from the VATAPI.
Need to check novelty before this filing date? Find Prior Art

Description

BACKGROUND

[0001] Distribution of data across one or more data storage devices can provide increased data security through data redundancy. One type of data storage device may be a direct-attached storage (DAS) device. DAS devices may provide one or more computing devices with direct access to data via an interconnect cable (e.g., via a direct or physical connection). Another type of data storage device may be a network-attached storage (NAS) device. NAS devices may provide access to data via computer networks (e.g., via a wired and / or wireless network). US 8 683 172 B2 discloses methods and apparatus for managing virtual machines and virtual storage systems. US 2008 / 0 065 824 A1 relates to communication across virtual enclosure boundaries. BRIEF DESCRIPTION OF THE DRAWINGS

[0002] Various embodiments are depicted in the accompanying drawings for illustrative purposes and should not be construed as limiting the scope of this disclosure in any way. Additionally, various features of different disclosed embodiments may be combined to form additional embodiments that are part of this disclosure. Fig. 1 is a diagram of a data storage system according to one embodiment. Fig. 2 is a diagram of a data storage system according to one embodiment. Fig. 3 is a diagram of a data storage device according to an embodiment. Fig. 4 is a flowchart illustrating a process for processing one or more data storage instructions according to one embodiment. Fig. 5 is a flowchart illustrating a process for processing one or more data storage instructions according to one embodiment. DETAILED DESCRIPTION

[0003] Although certain embodiments are described, they are presented only by way of example and are not intended to limit the scope of the invention. It should be understood that the novel methods and systems described herein may be embodied in a variety of other forms. Furthermore, various omissions, substitutions, and changes in the form of the methods and systems described herein may be made without departing from the scope of the invention.

[0004] The headings provided herein are for convenience only and do not necessarily affect the scope or meaning of the claimed invention. Disclosed herein are embodiments, configurations, and / or embodiments related to monitoring input voltages for data storage devices. Overview

[0005] According to the invention, a data storage device and a method having the features of the independent claims are provided; dependent claims relate to preferred embodiments.

[0006] Data storage devices / systems may provide one or more computing devices with file-level data storage. An example of a data storage device / system may be a DAS device. The DAS device may be coupled to a computing device (e.g., a laptop computer, a desktop computer, etc.) via an interconnect cable (e.g., a Thunderbolt cable, an External Serial Advanced Technology Attachment (eSATA) cable, a Universal Serial Bus (USB) cable, etc.). A DAS device may provide a convenient mechanism for transferring data between computing devices, increasing the storage capacity (e.g., increasing the storage space) of a computing device, and / or providing enhanced data security through data redundancy. Another example of a data storage device / system may be a NAS device.A NAS device can provide file-level data storage over a computer network, with the stored data accessible by a group of clients. For example, a NAS device can include hardware, software, or a combination of such elements configured so that the NAS device operates as a file server. NAS devices / systems can provide a convenient mechanism for sharing data among multiple computers and / or remotely accessing data stored on NAS devices / systems. Compared with traditional file servers, advantages of NAS devices / systems can include the ability to access data from different locations (e.g., remote locations), faster data access, easier management, and / or simpler configuration.

[0007] Certain embodiments disclosed herein provide the ability for a data storage device to provide enclosure services (e.g., SES) and / or use SES operations / commands with a data storage device using ATAPI. The data storage device may provide the enclosure services without using an additional driver for the enclosure services and / or without using tunneling techniques. The data storage device may identify at least a portion of the data storage device as an SES device, which may enable the data storage device to receive and / or process data storage commands, such as SES commands, SCSI commands, RAID commands, and / or vendor-specific commands.

[0008] Although certain embodiments are disclosed herein in the context of a particular communication interface (e.g., a bus interface such as Thunderbolt or eSATA), the principles disclosed herein may be applicable to any suitable or desired communication interface. Examples of communication interfaces may include, but are not limited to, SATA, USB, IEEE 1394 (FireWire), Serial Attached SCSI (SAS), PCIe, etc. Furthermore, the examples, embodiments, and / or implementations described herein may be applicable to any data storage device that utilizes ATA and / or ATAPI. Data storage devices

[0009] Fig. 1 is a diagram of a data storage system 100 according to one embodiment. In the data storage system 100, a data storage device 110 may be communicatively coupled to one or more client devices (e.g., computing devices) to provide file-based data storage services to the one or more client devices (e.g., one or more computing devices). Types of client devices (e.g., computing devices) that may have access to the data storage device 110 may include, but are not limited to, telephones 137 (e.g., smartphones, cellular phones, etc.), cable set-top boxes 136, smart TVs 135, video game consoles 134, laptop computers 133, tablet computers 132, desktop computers 131, portable computers, and / or other types of computing devices.

[0010] The data storage device 110 may provide various client devices (e.g., telephones 137, cable set-top boxes 136, smart TVs 135, video game consoles 134, laptop computers 133, tablet computers 132, desktop computers 131) with access to various types of user data stored on the data storage device 110. The data storage device 110 may also allow users to store various types of user data on the data storage device 110. The data storage device 110 may include magnetic media, hard disk media, and / or solid-state media.Although certain descriptions herein refer to solid-state memory in general, it is understood that solid-state memory may include one or more different types of non-volatile solid-state memory devices, such as flash integrated circuits, chalcogenide random access memory (C-RAM), phase-change memory (PC-RAM or PRAM), programmable metallization cell RAM (PMC-RAM or PMCm), ovonic unified memory (OUM), resistive random access memory (RRAM), NAND memory (e.g., single-level cell (SLC) memory, multi-level cell (MLC) memory, or any combination thereof), NOR memory, EEPROM, ferroelectric memory (FeRAM), magnetoresistive RAM (MRAM), other discrete NVM (nonvolatile memory) chips, or any combination thereof.

[0011] In one embodiment, the data storage device 110 may be a DAS device. The DAS device may be directly coupled to one or more of client devices 131-137 via a connection cable 120. In another embodiment, the data storage device 110 may also be a NAS device. The NAS device may also be connected to the client device via a (in Fig. 1 not shown) network may be coupled to the client devices (e.g., computing devices) 131-137. In one embodiment, the network may include a public network (e.g., the Internet), a private network (e.g., a local area network (LAN)), a wide area network (WAN) such as the Internet, a wired network (e.g., an Ethernet network), a wireless network (e.g., an 802.11 network or a Wi-Fi network), a cellular network (e.g., a Long Term Evolution (LTE) network), routers, hubs, switches, server computers, other types of computer networks, and / or a combination thereof.

[0012] With further reference to Fig. 1, the data storage device 110 (e.g., a magnetic disk drive, hybrid hard disk drive, solid state drive, etc.) may include a controller (in Fig. 1 not shown) configured to receive data commands (e.g., data storage commands) and to execute such commands in one or more non-volatile memory components of the data storage device 110. Such commands may include data read / write commands and the like. The controller may be configured to receive data commands from a communications interface residing on a computing device. Data commands (e.g., data storage commands) may specify a block address in the data storage device 110, and data may be accessed and transferred based on such commands.

[0013] The data storage device 110 may be configured to store data on one or more magnetic recording disks and / or the solid-state storage devices / arrays. In one embodiment, the data storage device 110 may be a cable box, a backup disk drive, a media storage unit, a streaming media device, a digital camera, or any other electronic device capable of storing data that needs to be accessed directly or wirelessly.

[0014] In certain embodiments, the data storage device 110 may store data received from a client device so that the data storage device 110 functions as a data store for the client device. To facilitate this function, the data storage device 110 may implement a logical interface. The logical interface may present memory to the client device as a set of logical addresses (e.g., sequential / consecutive addresses) where data may be stored. Internally, the controller may map logical addresses to various physical memory addresses in the non-volatile memory of the data storage device 110. Mapping data specifying the mapping of logical addresses to physical memory addresses may be maintained in the data storage device 110.

[0015] As discussed above, the data storage device 110 may be a DAS device coupled to the one or more client devices via an interconnect cable 120 (e.g., a Thunderbolt cable, a SATA cable, etc.). The data storage device 110 may use the ATA Packet Interface (ATAPI) to perform read and write operations on data (e.g., blocks of data) stored on the data storage device 110. For example, the ATAPI may use ATA commands (e.g., data storage commands) and / or operations to perform read and write operations on the data stored on the data storage devices. If the data storage device 110 identifies itself as a CD-ROM device type (e.g.,responds with the value 0x05 when the data storage device 110 receives an INQUIRY command), the data storage device 110 may only be permitted to use the multimedia commands (MMC) provided by the ATAPI. ATAPI may allow a SCSI command (e.g., a SCSI command descriptor block (CDB)) to be tunneled through the ATA command set. For example, the ATAPI may allow a SCSI CDB to be included as the payload in an ATA Frame Information Structure (ATA FIS) packet.

[0016] In one embodiment, the data storage device 110 may support other types of operations, such as redundant array of inexpensive disks (RAID) operations, encryption / decryption operations, and other non-data-related operations (e.g., power management operations, cooling / temperature control, password management, etc.). The data storage device may use enclosure services to perform the other types of operations (e.g., operations other than reading and / or writing data to / from a data storage device). The SCSI Enclosure Service (SES) may be an example of an enclosure service. Although the present disclosure may refer to SES, it should be understood that other types of enclosure services may be used in other embodiments. SES may include additional commands (e.g.,Data storage commands) and / or operations to perform the other types of operations. For example, SES may use SCSI commands and / or RAID commands to change the RAID mode of the data storage device 110. In another example, SES may use manufacturer-specific commands (e.g., commands / operations defined by and / or specific to a manufacturer of the data storage device 110) to allow a user to control the speed of a cooling fan that may be part of the data storage device 110. The multimedia commands may not include the additional commands and / or operations that may be used to perform the other types of operations (e.g., that may be used to implement / perform SES operations / commands and / or enclosure services).

[0017] Although data storage devices / drives / systems, as described above, may offer various advantages in certain configurations, such systems may be associated with various issues and / or disadvantages. For example, data storage devices may utilize Thunderbolt and eSATA communication interfaces because Thunderbolt and eSATA communication interfaces enable faster data transfers (e.g., potentially faster data transfer rates) than other communication interfaces (such as USB). Many data storage devices that utilize these communication interfaces (e.g., Thunderbolt, eSATA, etc.) also utilize ATAPI's Multimedia Commands (MMC) to perform read and / or write operations on the data storage device.Data storage devices that are CD-ROM-type devices may not support the commands for performing / implementing SES commands and / or enclosure services because the ATAPI multimedia commands do not support the operations / commands. Additionally, some operating systems may not allow the use of certain ATA commands (e.g., SMART READ LOG and SMART WRITE LOG commands) that can be used to implement SES commands and / or enclosure services. Thus, the data storage devices may not be able to perform / implement SES commands and / or enclosure services if the data storage devices identify themselves as CD-ROM-type devices (e.g., using ATAPI multimedia commands).

[0018] Manufacturers of data storage devices may implement (e.g., create or write) a device driver to access certain commands / operations (e.g., SMART READ LOG, SMART WRITE LOG, etc.) that are restricted by an operating system. However, users may prefer not to install a driver to use a data storage device, and the manufacturer of the data storage device may be required to provide support for the driver (e.g., technical support for installing and / or using the driver). Manufacturers of data storage devices may also use tunneling techniques or methods to circumvent operating system restrictions. For example, a multi-byte instruction (e.g.,A 12-byte instruction, a 16-byte instruction) can be delivered using the logical block address (LBA) field of other ATA instructions that are not restricted by the operating system. However, these tunneling techniques can be more error-prone and may not work depending on the operating system and / or drivers used in a client device. Thus, some types of operations (e.g., RAID operations, power management operations, encryption / decryption operations, and other non-data-related operations, etc.) may not be performed by a data storage device without the use of additional drivers and / or tunneling techniques.

[0019] It may be beneficial to provide a data storage device that allows the use of communication interfaces with faster data transfer rates (e.g., Thunderbolt, eSATA) and that supports SES (or other enclosure service) operations / commands. Certain embodiments disclosed herein provide the ability to provide enclosure services and / or use SES commands with a data storage device that uses ATAPI. In one embodiment, the data storage device 110 may include a Virtual ATA Packet Interface (VATAPI). The VATAPI may identify itself as an SES device (rather than a CD-ROM-type device). The VATAPI may allow the data storage device to use SES operations / commands to perform operations / commands in addition to reading / writing data to the data storage device. Virtual ATA packet interface

[0020] Fig. 2 is a diagram of a data storage system 200 according to one embodiment. The data storage system 200 includes a host system 210, a connection cable 250, and a data storage device 220. The host system 210 may be a computing device (e.g., a laptop computer, a desktop computer, a server computer, a tablet computer, a smartphone, a set-top box, a smart TV, a video game console, etc.). The data storage device 220 may include a controller 230, a communications interface 240, and non-volatile storage components 245. In one embodiment, the non-volatile storage components 245 may include non-volatile magnetic media and / or solid-state memory, such as NAND flash. The controller 230 may provide overall control for the data storage device 220. In certain embodiments, the data storage device 220 may be a hard disk drive.The non-volatile storage components 245 may include one or more disks, and the data storage device 220 may further include one or more heads (not shown) driven radially across the disk(s) and a spindle motor for rotating the disk(s). Alternatively or additionally, rotating magnetic media, solid-state memory, and / or other non-volatile memory may be used, such as MRAM and / or phase-change memory. For example, in certain embodiments, the data storage device 220 may be a hybrid hard disk drive that includes both magnetic media and solid-state media.

[0021] The controller 230 may receive data and memory access commands (e.g., data storage commands) from a communication interface 212 of a host system 210. Memory access commands communicated by the communication interface 212 may include write and read commands issued by the host system 210. The memory access commands may specify an LBA or LBA range in the data storage device 220, and the controller 230 may execute the received memory access commands in the non-volatile storage components 245. In a hybrid hard disk drive, data may be stored in a magnetic media storage component as well as in non-volatile solid-state memory.

[0022] The data storage device 220 may store data received from the host system 210, such that the data storage device 220 functions as a memory for the host system 210. To facilitate this storage function, the controller 230 may implement a logical interface. The logical interface may present the memory of the data storage device 220 to the host system 210 as a set of logical addresses (e.g., consecutive addresses) where data may be stored. The controller 230 may map logical addresses to various physical memory addresses in the non-volatile storage components 245 and / or the memory module(s).

[0023] The data storage device 220 may be configured to implement data redundancy, wherein user data stored in the non-volatile storage components 245 is maintained in one or more internal and / or external drives. For example, the controller 230 may Fig. 2 not shown) configured to implement redundancy functionality. The data redundancy management module may implement RAID (Redundant Array of Independent Disks - RAID) technology, wherein the non-volatile storage components 245 include a plurality of internal drives, disks, or other data storage partitions combined into logical units for data redundancy and performance improvement purposes. Additionally or alternatively, the data redundancy management module may be configured to implement RAID using one or more internal storage modules in combination with one or more external storage devices, as described in more detail below.

[0024] For RAID purposes, the non-volatile storage components 245 may include an array of one or more storage devices, such as hard drives or other memory modules, configured to store user data. In certain embodiments, such internal memory modules / disks may each be directly coupled to the controller 230 to provide a high-bandwidth interface for reading and writing user data. The non-volatile storage components 245 may include one or more additional memory modules configured to store parity information.

[0025] The controller 230 may be configured to partition and replicate user data among the physical RAID modules, thereby achieving storage virtualization; the array may be accessed by the host system 210 as a single drive. Data may be distributed across the RAID storage modules / drives according to any desired or practical RAID level, depending on the desired level of redundancy and / or performance. For example, the data storage device 220 may be configured to implement RAID 0, RAID 1, RAID 5, RAID 10, or other RAID technology, depending on data reliability, availability, performance, and / or capacity considerations or requirements.

[0026] The host system 210 may be coupled to the data storage device 220 via an interconnect cable 250. The interconnect cable 250 may directly connect the host system 210 and the data storage device 220. The interconnect cable 250 may use one or more communication interfaces (such as a bus interface) and / or protocols that allow the host system 210 to communicate with the data storage device 220. In one embodiment, the communication interface 240 and the communication interface 212 may be Thunderbolt interfaces. In another embodiment, the communication interface 240 and the communication interface 212 may be eSATA interfaces. In other embodiments, the communication interface 240 and the communication interface 212 may be any communication interfaces that use ATAPI.Other examples of communication interfaces may include SATA, USB, IEEE 1394 (FireWire), Serial Attached SCSI (SAS), PCIe, etc.

[0027] In one embodiment, the connecting cable 250 may comprise a (in Fig. 2) bridge unit. For example, the connecting cable 250 may include a USB bridge, a Thunderbolt bridge, or another type of bridge. The bridge unit may translate between two different types of communication interfaces and / or protocols. For example, if a connected storage device communicates in a first protocol but not a second protocol, the bridge unit may translate the second protocol to the first protocol, or vice versa.

[0028] In one embodiment, the interconnect cable 250 may include one or more data lines (e.g., one or more wires, pins, etc.) that allow the host system 210 to communicate data with the data storage device 220. For example, the interconnect cable 250 (in Fig. 2) that the host system 210 can use to read data from and / or write data to the data storage device 220. The host system 210 can communicate data to and from the data storage device using the communication interface 212 (e.g., via the communication interface 212). In another embodiment, the host system 210 can supply an input voltage to the data storage device 220, and the data storage device 220 can use the input voltage to operate one or more components of the data storage device 220 (e.g., the controller 230, the non-volatile storage components 245, a motor, etc.). The interconnect cable 250 can include one or more voltage lines (e.g., wires, pins, etc.) that receive the input voltage from the host system 210 via the communication interface 212.The one or more voltage lines may supply the input voltage (received from the host system 210) to the data storage device 220 via the communication interface 240.

[0029] The host system 210 includes an application 211. In one embodiment, the application 211 may be a storage management application. The application 211 (e.g., the storage management application) may allow a user (e.g., an administrator, a user of the host system 210) to configure and / or manage the data storage device 220. For example, the application 211 may allow the user to configure performance management settings, configure password settings, configure RAID settings / configurations, encrypt / decrypt data, configure keys used to encrypt / decrypt data, configure temperature / cooling settings, etc. The application 211 may send data storage commands to the data storage device 220 to configure and / or manage the data storage device 220.These data storage commands may include SES commands / operations, SCSI commands / operations, and / or vendor-specific commands / operations (e.g., commands / operations defined by a manufacturer of the data storage device 220).

[0030] The data storage device 220 may perform additional commands / operations (instead of reading data and / or writing data to the data storage device 220) based on one or more data storage commands received from the application 211. For example, a user may change the RAID mode of the data storage device 220 using the application 211 (e.g., to change from RAID 0 to RAID 1). The application 211 may send (e.g., transmit) one or more data storage commands to the data storage device 220. The controller 230 may receive the one or more data storage commands and may execute and / or perform the one or more data storage commands to change the RAID mode. For example, the controller 230 may parse and / or process the one or more data storage commands (as discussed in more detail below).Controller 230 may optionally perform one or more data transfers (e.g., read data, write data, etc.) based on the one or more data storage commands. For example, controller 230 may write data (received from host system 210) to a non-volatile storage component 245. In another example, controller 230 may read data from a non-volatile storage component 245 and provide the data to host system 210. Controller 230 may also provide one or more results of the one or more data storage commands to application 211. For example, controller 230 may provide application 211 with a result indicating that a data storage command was successfully performed.

[0031] The controller 230 may include a VATAPI, as described in more detail below in connection with Fig. 3. The controller 230 may identify the VATAPI to the host system 210 as an SES device (rather than a CD-ROM-type device). Identifying the VATAPI as an SES device may indicate to the host system that at least some portion / component of the data storage device 220 may support the one or more data storage commands (such as SES commands, SCSI commands, RAID commands, vendor-specific commands, etc.). The host system 210 may allow the application 211 to send the data storage commands because the host system 210 may know that at least some portion / component of the data storage device 220 is capable of supporting the data storage commands. For example, the host system 210 may allow the application 211 to change the RAID mode of the data storage device 220 using one or more SES commands.

[0032] Fig. 3 is a diagram of a data storage device 220 according to one embodiment. The data storage device 220 includes a printed circuit board assembly (PCBA) 305. A Thunderbolt interface 310 (e.g., a communications interface), an Advanced Host Controller Interface (AHCI) controller 315, a port multiplier 320, SATA interfaces 325, and a controller 230 are located on the PCBA 305. The Thunderbolt interface 310 can be connected to a computing device (such as the Fig. 2) via a connecting cable (such as the one shown in Fig. 2 illustrated connecting cable 250). Although in Fig. 3 illustrates a Thunderbolt interface 310, other communication interfaces (e.g., eSATA interfaces) may be used in other embodiments.

[0033] The Thunderbolt interface 310 is coupled to the AHCI controller 315. In one embodiment, the Thunderbolt interface 310 is coupled to the AHCI controller 315 via a Peripheral Component Interconnect Express (PCIe) bus. The AHCI controller 315 may allow the data storage device 220 to communicate with one or more ATA and / or SATA devices. For example, the AHCI controller 315 may allow the data storage device 220 to communicate with a SATA hard drive.

[0034] The AHCI controller 315 is coupled to a port multiplier 320, and the port multiplier 320 is coupled to the SATA interfaces 325. In one embodiment, the port multiplier 320 may be a device that allows multiple ATA and / or SATA devices to be connected to a single ATA and / or SATA port / interface. For example, the port multiplier 320 may allow three SATA hard drives to communicate with the AHCI controller 315. Each of the three SATA hard drives may be coupled to the port multiplier 320 via a respective SATA interface 325. The port multiplier 320 may also include software, hardware, firmware, or a combination thereof that provides RAID functionality. For example, the port multiplier 320 may include a device / component that allows SATA hard drives to be configured for different RAID modes.

[0035] The port multiplier 320 is coupled to the controller 230. In one embodiment, the controller 230 may receive one or more data storage commands (e.g., commands to read, write, and / or update data, etc.) to access data stored in a non-volatile memory of the data storage device 220. The controller 230 may, based on the data storage commands, read and / or write data stored in a non-volatile memory (e.g., on a hard drive or in flash memory coupled to the SATA interface 325). The controller 230 includes a control port 332. The control port 332 may allow the controller 230 to access and / or communicate with the SATA devices coupled to the port multiplier 320. The control port 332 may enable the host system (e.g.,an application on the host system) to access and / or communicate with the SATA devices coupled to the port multiplier 320.

[0036] As in Fig. 3, the controller 230 also includes a VATAPI 331. The VATAPI 331 may be processing logic, such as hardware (e.g., circuits, gates, an FPGA, etc.), software (e.g., executable code), firmware, or a combination thereof. In one embodiment, the controller 230 may identify the VATAPI to the host system 210 as an SES device (rather than a CD-ROM-type device). For example, the controller 230 may identify (e.g., report) the VATAPI using the hexadecimal value 0x0D (which identifies the VATAPI 331 as an SES device) instead of using the hexadecimal value 0x05 (which identifies the VATAPI 331 as a CD-ROM-type device).As discussed above, identifying VATAPI 331 as an SES device may indicate to a host system (coupled to data storage device 220) that VATAPI 331 and / or data storage device 220 supports one or more data storage commands (such as SES commands, SCSI commands, vendor-specific commands, etc.) to perform functions other than reading and / or writing data. For example, identifying VATAPI 331 as an SES device may indicate to the host system that VATAPI 331 and / or data storage device 220 may support SCSI commands to change the RAID mode of the data storage device.

[0037] As in Fig. 3, the VATAPI 331 resides (e.g., is located within) the controller 230. For example, the VATAPI 331 may be circuitry that is part of the controller 230. In another example, the VATAPI 331 may be executable code residing within memory (e.g., instruction registers) of the controller 230. In one embodiment, the VATAPI 331 may not be associated with and / or may not advertise physical hardware. For example, the controller 230 may identify the VATAPI 331 as an SES device. However, the VATAPI 331 may not be associated with an SES device. In one embodiment, the VATAPI 331 may be a destination for data storage commands received from the host system (e.g., from an application on the host system). For example, data storage commands submitted by an application on the host system may be addressed to the VATAPI 331.The controller 230 can receive the data storage commands and supply them to the VATAPI 331.

[0038] In one embodiment, controller 230 may receive one or more data storage commands from Thunderbolt interface 310 (e.g., a communications interface). For example, controller 230 may receive one or more data storage commands from a storage management application on a host system (e.g., a computing device) coupled to data storage device 220 via an interconnect cable. Controller 230 may provide the one or more data storage commands to VATAPI 331. The one or more data storage commands may be SES commands, SCSI commands, RAID commands, and / or vendor-specific commands. In one embodiment, VATAPI 331 may parse the one or more commands. For example, extracting the one or more commands from one or more Frame Information Structure (FIS) packets (as discussed in more detail below).VATAPI 331 may also validate the one or more commands. For example, VATAPI 331 may determine whether the one or more commands are in the correct format, specify correct parameters, etc.

[0039] In one embodiment, VATAPI 331 may also process the one or more instructions. For example, VATAPI 331 may provide the one or more instructions to one or more instruction handlers (as discussed in more detail below). A command handler may be a module or component configured to process a specific set of instructions (e.g., a type of instruction, a list of instructions, etc.). The one or more command handlers may execute the one or more instructions and / or provide the one or more instructions to other components, modules, etc. of data storage device 220 to execute the one or more instructions. VATAPI 331 may provide one or more results of the one or more data storage instructions to controller 230 (e.g., controller 230 may receive the one or more results from VATAPI 331).The controller 230 may provide the one or more results to the host system (e.g., a storage management application of the host system) via the Thunderbolt interface 310.

[0040] Fig. 4 is a flowchart illustrating a process 400 for processing one or more data storage commands according to one embodiment. The process 400 may be performed by a controller and / or a VATAPI, as described above in connection with Fig. 2 and Fig. 3. In one embodiment, the VATAPI may reside in and / or be part of the controller, as described above in connection with Fig. 3. The controller and the VATAPI may each be processing logic that includes hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software (e.g., instructions running on a processor to perform hardware simulation), firmware, or a combination thereof.

[0041] The process 400 begins at block 405, where the process 400 identifies a VATAPI as an SES device. For example, the process 400 may identify the VATAPI using the hexadecimal value 0x0D (which identifies the VATAPI 331 as an SES device). At block 410, the process 400 may receive one or more data storage commands. For example, the process 400 may receive one or more SES commands, SCSI commands, RAID commands, and / or vendor-specific commands via a communications interface (e.g., via a Thunderbolt interface). At block 415, the process 400 may provide the one or more data storage commands to the VATAPI. The process 400 may parse the one or more commands at block 420. For example, at block 421, the process 400 may extract the one or more commands from one or more FIS packets.In other embodiments, process 400 may extract the one or more commands from other types of messages / packets that may contain or include the one or more commands. Process 400 may also validate the one or more commands. For example, process 400 may determine whether the syntax, parameters, and / or values ​​for the one or more commands are correct / valid.

[0042] At block 425, process 400 may process the one or more commands. For example, process 400 may provide the one or more commands to one or more command handlers (e.g., a SCSI command handler). In one embodiment, the one or more command handlers may provide the one or more commands to another component of the data storage device. The another component of the data storage device may execute (e.g., perform) the one or more commands and may provide one or more results to the VATAPI. In another embodiment, the one or more command handlers may execute (e.g., perform) the one or more commands. At block 430, process 400 may optionally perform one or more data transfers based on the one or more commands.For example, the one or more instructions may include an instruction to read and / or write data from / to non-volatile memory (e.g., a non-volatile component such as a hard drive or flash memory). The process 400 may write data to and / or read data from non-volatile memory based on the one or more instructions. At block 435, the process 400 may receive one or more results of the one or more data storage instructions from the VATAPI. The one or more results may indicate whether the one or more instructions were successfully executed / performed. The one or more results may also include additional information, such as a reason why a instruction was not successfully executed or performed. The process 400 may provide the one or more results to a computing device (e.g., a host system) at block 440.For example, process 400 may provide one or more results to a storage management application of the computing device.

[0043] Fig. 5 is a flowchart illustrating a process 500 for processing one or more data storage commands according to one embodiment. The process 500 may be performed by a controller and / or a VATAPI, as described above in connection with Fig. 2 and Fig. 3. In one embodiment, the VATAPI may reside in and / or be part of the controller, as described above in connection with Fig. 3. The controller and the VATAPI may each be processing logic that includes hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software (e.g., instructions running on a processor to perform hardware simulation), firmware, or a combination thereof.

[0044] At block 505, the process 500 receives an FIS packet, which may include one or more initial data storage commands (e.g., a SCSI command). The process 500 may extract the one or more data storage commands from the FIS packet. At block 510, the process 500 may initiate one or more programmed input / output (PIO) data transfers between the data storage device and a computing device (e.g., a host system as in Fig.2). The PIO data transfers may be messages, packets, etc., that may be used to transfer data storage commands, data, and / or results between the data storage device and the computing device. At block 515, the process 500 may receive a SCSI command descriptor block (or SCSI CDB) in the one or more PIO data transfers. For example, the process 500 may receive an FIS packet containing the SCSI CBD. The SCSI CDB may be an example of a data storage command. At block 520, the process 500 may identify a command handler (from a plurality of command handlers) based on the SCSI CDB. For example, the process 500 may identify which command handler the SCSI CDB should be delivered to and may deliver the SCSI CDB to the identified command handler.At block 525, process 500 may perform one or more data transfers based on the SCSI CDB. For example, process 500 may execute / perform the SCSI CDB, and the SCSI CDB may be the data storage command that writes data to non-volatile memory. Process 500 may write data (e.g., transfer data) to the non-volatile memory based on the SCSI CDB.

[0045] At block 530, process 500 may receive one or more results from the command handler. For example, the command handler may execute / perform the SCSI CDB and may provide one or more results to process 500. In another example, the command handler may provide the SCSI CDB to another component of the data storage device. The other component of the data storage device may execute / perform the SCSI CDB and may provide one or more results to the command handler. The command handler may provide the one or more results (received from the other component) to process 500. At block 535, the one or more results may be provided to a computing device (e.g., a storage management application of the computing device).In one embodiment, process 500 may also perform additional PIO data transfers between the computing device and the data storage device to provide the one or more results to the computing device. Additional embodiments

[0046] Those of ordinary skill in the art will appreciate that other types of distributed data storage systems may be implemented in some embodiments while remaining within the scope of the present disclosure. Additionally, the actual steps performed in the processes discussed herein may differ from those described or shown in the figures. Depending on the embodiments, certain steps described above may be removed, and others may be added.

[0047] Although certain embodiments have been described, they are presented only by way of example and are not intended to limit the scope of protection. Of course, the novel methods and systems described herein may be embodied in a variety of other forms. Moreover, various omissions, substitutions, and changes in the form of the methods and systems described herein may be made. The appended claims and their equivalents are intended to cover such forms and modifications as would fall within the scope and spirit of the protection. For example, the various components illustrated in the figures may be implemented as software and / or firmware on a processor, ASIC / FPGA, or dedicated hardware.Also, the features and characteristics disclosed above may be combined in various ways to form additional embodiments, all of which fall within the scope of the present disclosure. While the present disclosure provides certain preferred embodiments and applications, other embodiments that would be apparent to one of ordinary skill in the art, including embodiments that do not have all of the features and advantages set forth herein, are also within the scope of this disclosure. Accordingly, the scope of the present disclosure is intended to be defined only by reference to the appended claims.

[0048] The words "example" or "exemplary" are used herein to mean that they serve as an example, instance, or illustration. Any aspect or design described herein as an "example" or "exemplary" is not necessarily to be construed as preferred or advantageous over other aspects or designs. Rather, the use of the words "example" or "exemplary" is intended to present concepts in a concrete manner. As used in this disclosure, the term "or" is intended to mean an inclusive "or" rather than an exclusive "or." That is, unless otherwise specified or clear from the context, "X includes A or B" is intended to mean any of the naturally inclusive permutations. That is, if X includes A; X includes B; or X includes both A and B, then "X includes A or B" is satisfied under all of the foregoing circumstances.Additionally, the use of the articles "a," "an," and "an" throughout this disclosure and the appended claims is to be construed as "one or more" unless expressly stated otherwise or the context clearly indicates a singular form. Furthermore, the consistent use of the phrase "an embodiment" or "an implementation" is not intended to imply that the same embodiment or implementation is meant unless described as such. Furthermore, the terms "first," "second," "third," "fourth," etc., as used herein are labels to distinguish among various elements and are not necessarily intended to have an ordinal meaning according to their numerical designation.

[0049] All of the processes described above can be implemented in, and fully automated using, software code modules executed by one or more general-purpose or special-purpose computers or processors. The code modules can be stored on any type of computer-readable medium or other computer storage device or collection of storage devices. Alternatively, some or all of the methods can be implemented in specialized computer hardware.

Claims

[1] A data storage device (220) comprising: a non-volatile memory (245); and a controller (230) coupled to the non-volatile memory, the controller being configured to: Identifying (405) a virtual ATA packet interface, VATAPI, of the data storage device as a SCSI enclosure services, SES, device to a computing device (210) coupled to the data storage device; Receiving (410) one or more data storage commands from a communication interface (240, 310) of the data storage device; Supplying (415) the one or more data storage commands to the VATAPI (331); and Receiving (435) one or more results of the one or more data storage commands from the VATAPI. [2] The data storage device of claim 1, wherein the VATAPI is not associated with a physical device. [3] The data storage device of claim 1, wherein the one or more instructions comprise one or more SES instructions. [4] The data storage device of claim 1, wherein the one or more instructions comprise one or more redundant array of inexpensive disks (RAID) instructions. [5] The data storage device of claim 1, wherein the one or more instructions comprise one or more manufacturer-specific instructions. [6] The data storage device of claim 1, wherein the VATAPI (331) comprises a destination for the one or more instructions. [7] The data storage device of claim 1, wherein the one or more commands are received from a storage management application (211) on the computing device (210) coupled to the data storage device (220) via a communications interface (212). [8] The data storage device of claim 7, wherein the controller (230) is further configured to: Supplying (440) the one or more results to the storage management application via the communication interface. [9] The data storage device of claim 1, wherein the controller (230) is further configured to: Performing (430) one or more data transfers based on the one or more data storage commands. [10] The data storage device of claim 1, wherein the communication interface comprises a Thunderbolt interface (310). [11] The data storage device of claim 1, wherein the controller (230) comprises the VATAPI (331). [12] The data storage device of claim 1, wherein the VATAPI is further configured to: Parsing (420) the one or more instructions; and Processing (425) the one or more instructions. [13] The data storage device of claim 12, wherein the VATAPI is configured to parse (420) the one or more instructions by: Extracting (421) the one or more commands from one or more frame information structure, FIS, packets. [14] The data storage device of claim 13, wherein the VATAPI is configured to process (425) the one or more instructions by: Supplying (426) the one or more instructions to one or more instruction handlers. [15] Method comprising: Identifying (406) a virtual ATA packet interface, VATAPI, of a data storage device (220) as a SCSI Enclosure Services, SES, device to a computing device (210) coupled to the data storage device; Receiving (410) one or more data storage commands from a communication interface of the data storage device; supplying (415) the one or more data storage commands to the VATAPI; and Receiving (435) one or more results of the one or more data storage commands from the VATAPI. [16] The method of claim 15, further comprising: Parsing (420) the one or more instructions; and Processing (425) the one or more instructions. [17] The method of claim 16, wherein parsing (420) the one or more instructions comprises: Extracting (421) the one or more commands from one or more frame information structure, FIS, packets. [18] The method of claim 17, wherein processing (425) the one or more instructions comprises: Supplying (426) the one or more instructions to one or more instruction handlers. [19] The method of claim 15, further comprising: Performing (430) one or more data transfers based on the one or more data storage commands.

Citation Information

Patent Citations

  • Establishing communications across virtual enclosure boundaries

    US20080065824A1

  • Method and apparatus for management between virtualized machines and virtualized storage systems

    US8683172B2