Asynchronous event notification method, control apparatus, communication apparatus and storage system

By having the control device actively notify the communication device when an asynchronous event occurs in the storage system, the problem of asynchronous event request command context information occupying memory for a long time is solved, thus achieving rapid use and resource conservation.

WO2026060940A1PCT designated stage Publication Date: 2026-03-26HUAWEI TECH CO LTD
View PDF 7 Cites 0 Cited by

Patent Information

Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Filing Date
2025-04-18
Publication Date
2026-03-26

AI Technical Summary

Technical Problem

In storage systems based on non-volatile memory standards, the context information of asynchronous event request commands occupies the memory space of the control device for a long time, especially when there are many communication devices, which leads to an increase in the memory space occupation time.

Method used

When an asynchronous event occurs in the storage system, the control device sends an event notification command to the communication device to proactively notify the occurrence of the asynchronous event. The communication device then requests asynchronous event information based on this command, thus avoiding the storage of context information while waiting for the event to occur and reducing memory usage.

Benefits of technology

It enables the rapid use of asynchronous event request command context information, avoiding long-term memory occupation and saving communication and memory resources.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN2025089740_26032026_PF_FP_ABST
    Figure CN2025089740_26032026_PF_FP_ABST
Patent Text Reader

Abstract

The present application belongs to the technical field of communications. Disclosed are an asynchronous event notification method, a control apparatus, a communication apparatus and a storage system. In the method, when an asynchronous event occurs in a storage system, an event notification command is used to notify a communication apparatus that the asynchronous event occurs in the storage system, such that the communication apparatus requests the asynchronous event on the basis of an asynchronous event request command; since the asynchronous event has occurred in the storage system, after context information of the asynchronous event request command is stored, there is no need to wait for the asynchronous event to occur in the storage system, and a response command associated with the context information of the asynchronous event request command can be quickly returned to the communication apparatus. Thus, after the context information of the asynchronous event request command is stored, the context information can be quickly used within a short time, thereby preventing the asynchronous context information from occupying memory space for a long time.
Need to check novelty before this filing date? Find Prior Art

Description

Asynchronous event notification method, control device, communication device and storage system

[0001] The present application claims priority from the Chinese patent application No. 202411314983.6, filed on September 19, 2024, and entitled "Asynchronous event notification method, control device, communication device and storage system", the content of which is incorporated herein by reference in its entirety. TECHNICAL FIELD

[0002] The present application relates to the field of communication technology, and in particular to an asynchronous event notification method, a control device, a communication device and a storage system. BACKGROUND

[0003] In a storage system based on a non-volatile memory express (NVMe) specification, a plurality of control devices and a plurality of storage devices (such as solid-state drives (SSDs)) are usually deployed, each control device manages at least one storage device, and a communication device (such as a host) can establish a connection with the control device in the storage system, and the communication device performs read and write access to the storage device managed by the control device through the control device.

[0004] The control device in the storage system can report an asynchronous event to the communication device to notify the communication device of the current state, error or health information of the storage system, etc. At present, the reporting process of the asynchronous event can be: the communication device first sends at least one asynchronous event request command to the control device to request the control device to report the asynchronous event; the control device stores the context information of the asynchronous event request command every time it receives an asynchronous event request command, and does not execute the asynchronous event request, but waits for the occurrence of the asynchronous event; when an asynchronous event occurs in the storage system, the control device executes the corresponding asynchronous event request command according to the previously stored context information of the asynchronous event request command, returns a response command of the asynchronous event request command to the communication device, and the response command includes the event information of the asynchronous event, so as to realize the notification of the asynchronous event to the communication device.

[0005] In the reporting of the asynchronous event described above, the control device needs to store the context information of the asynchronous event request command before executing each asynchronous event request, and after waiting for the asynchronous event to occur in the storage system, the context information of the asynchronous event request command is used (that is, the corresponding asynchronous event request command is executed according to the context information), which causes the context information of the asynchronous event request command to occupy the memory space of the control device for a long time. Especially in the case where the number of communication devices connected to the control device is relatively large, the control device will receive a large number of asynchronous event request commands, and it will take a longer time to store the context information of a large number of asynchronous event request commands in the memory space, and the context information of the asynchronous event request command will further increase the occupation time of the memory space of the control device. SUMMARY

[0006] Embodiments of the present application provide an asynchronous event notification method, a control device, a communication device and a storage system, which can avoid the context information of the asynchronous event request command occupying the memory space for a long time. The technical solution is as follows:

[0007] In a first aspect, an asynchronous event notification method is provided. In the method, in the case where an asynchronous event occurs in a storage system, a control device in the storage system sends an event notification command to a communication device to notify that an asynchronous event has occurred in the storage system; the communication device receives the event notification command and returns an asynchronous event request command associated with the event notification command to the control device; the control device receives the asynchronous event request command and sends a response command of the asynchronous event request command to the communication device, and the communication device receives the response command. The event notification command indicates that an asynchronous event has occurred in the storage system, the asynchronous event request command indicates to obtain event information of the asynchronous event, the response command includes the event information of the asynchronous event, and the response command is associated with the context information of the asynchronous event request command.

[0008] The method actively notifies the communication device that an asynchronous event has occurred in the storage system through the event notification command in the case where an asynchronous event occurs in the storage system, so that the communication device requests the control device for the asynchronous event that has occurred based on the asynchronous event request command. Since the asynchronous event has occurred in the storage system before the asynchronous event request command is received, after the control device stores the context information of the asynchronous event request command, it does not need to wait for the asynchronous event to occur in the storage system, and can quickly return the response command associated with the context information of the asynchronous event request command to the communication device, so that after the context information of the asynchronous event request command is stored, the context information can be quickly used in a short time, thereby avoiding the context information occupying the memory space for a long time.

[0009] In a possible implementation, the event notification command is a response command of a non-volatile memory standard command, and based on this, before the event notification command is sent to the communication device, the method further includes: the communication device sends the non-volatile memory standard command to the control device, and the communication device receives the non-volatile memory standard command. So that after receiving the non-volatile memory standard command, the control device returns the response command of the non-volatile memory standard command to the communication device, so as to realize sending the event notification command to the communication device.

[0010] Based on the above possible implementation, for the non-volatile memory standard command issued by the communication device, the control device can also notify the communication device that there is an asynchronous event in the storage system by means of the response command of the non-volatile memory standard command when the non-volatile memory standard command is completed, thereby saving communication resources.

[0011] In a possible implementation, the non-volatile memory standard command is a keep-alive command or an input / output command.

[0012] Based on the above possible implementation, for the keep-alive command or the input / output command issued by the communication device, the control device can also notify the communication device that there is an asynchronous event in the storage system by means of the response command of the keep-alive command or the input / output command when the keep-alive command or the input / output command is executed, thereby saving communication resources.

[0013] In a possible implementation, the event notification command includes at least one of an asynchronous event occurrence identifier or an asynchronous event number, the asynchronous event occurrence identifier indicates that an asynchronous event has occurred in the storage system, and the asynchronous event number is a number of asynchronous events that have occurred in the storage system.

[0014] Based on the above possible implementation, the asynchronous event occurrence identifier is used to notify the communication device that there is an asynchronous event in the storage system, and the asynchronous event number is used to make the communication device send an asynchronous event request command of the asynchronous event number, so that the communication device can obtain each asynchronous event that has occurred in the storage system, and avoid unnecessary or waste of asynchronous event requests.

[0015] In a possible implementation, at least one of the asynchronous event occurrence identifier or the asynchronous event number is located in a reserved field of the response command of the non-volatile memory standard command.

[0016] Based on the above possible implementation, at least one of the asynchronous event occurrence identifier or the asynchronous event number is used to avoid affecting the normal use of the defined field in the response command of the non-volatile memory standard command.

[0017] In a possible implementation, the event notification command includes at least one of an asynchronous event occurrence identifier or an asynchronous event quantity, the asynchronous event occurrence identifier indicates that an asynchronous event has occurred in the storage system, and the asynchronous event quantity is a quantity of asynchronous events that have occurred in the storage system. In this possible implementation, the storage system can or can not be a non-volatile memory express storage system. When the storage system is a non-volatile memory express storage system, the event notification command can be a response command of a non-volatile memory express command involved in the possible implementation.

[0018] Based on the possible implementation, the asynchronous event occurrence identifier is used to notify the communication device that an asynchronous event has occurred in the storage system, and the asynchronous event quantity is used to enable the communication device to send an asynchronous event request command of the asynchronous event quantity, so that the communication device can obtain each asynchronous event that has occurred in the storage system, and asynchronous event requests are not redundant or wasted.

[0019] In a possible implementation, the communication device sending the asynchronous event request command to the control device includes: when the event notification command includes the asynchronous event quantity, sending the asynchronous event request command of the asynchronous event quantity to the control device; and the control device receiving the asynchronous event request command includes: receiving the asynchronous event request command of the asynchronous event quantity.

[0020] In a possible implementation, before the event notification command is sent to the communication device, the method further includes: the control device sending a capability notification command to the communication device, and the communication device receiving the capability notification command. The capability notification command indicates that the control device in the storage system supports an asynchronous event notification capability, and the asynchronous event notification capability refers to a capability of the control device to actively notify the communication device of an occurrence of an asynchronous event when an asynchronous event occurs in the storage system.

[0021] Based on the possible implementation, the communication device can learn whether the control device supports the asynchronous event notification capability, and when the control device supports the asynchronous event notification capability, the communication device can flexibly select whether to actively send an asynchronous event request command to the control device.

[0022] In a possible implementation, the capability notification command is a response command of an identification command defined in a non-volatile memory express protocol, and before the capability notification command is sent to the communication device, the method further includes: the communication device sending the identification command to the control device, and the control device receiving the identification command. After receiving the identification command, the control device returns a response command of the identification command to the communication device, so as to send the capability notification command to the communication device.

[0023] Based on the possible implementation, in the process of requesting the information of the control device by the communication device, the control device not only announces the information of the control device to the communication device, but also announces whether the control device supports the asynchronous event notification capability to the communication device, thereby saving the communication resource.

[0024] In a possible implementation, the capability notification command includes at least one of a capability support identifier or a command type of the event notification command, and the capability support identifier indicates that the control device in the storage system supports the asynchronous event notification capability.

[0025] Based on the possible implementation, the capability support identifier is used to enable the communication device to learn that the control device supports the asynchronous event notification capability, and the command type of the event notification command is used to enable the communication device to identify the event notification command.

[0026] In a possible implementation, the at least one of the capability support identifier or the command type of the event notification command is located in a reserved field of the response command of the identification command.

[0027] Based on the possible implementation, the at least one of the capability support identifier or the command type of the event notification command does not affect the normal use of the defined field in the response command of the identification command.

[0028] In a possible implementation, the capability notification command includes at least one of a capability support identifier or a command type of the event notification command, and the capability support identifier indicates that the control device in the storage system supports the asynchronous event notification capability. In this possible implementation, the storage system can or can not be a non-volatile memory standard storage system. When the storage system is a non-volatile memory standard storage system, the capability notification command can be the response command of the identification command in the possible implementation.

[0029] Based on the possible implementation, the capability support identifier is used to enable the communication device to learn that the control device supports the asynchronous event notification capability, and the command type of the event notification command is used to enable the communication device to identify the event notification command.

[0030] In a second aspect, a control device is provided, which is used to execute the method steps performed by the control device in the first aspect or any of the optional manners of the first aspect. For example, the control device includes function modules used to execute the method steps performed by the control device in the first aspect or any of the optional manners of the first aspect.

[0031] In a third aspect, a communication apparatus is provided, which is configured to execute the method steps performed by the communication apparatus in the first aspect or any of the possible implementation manners of the first aspect. For example, the communication apparatus comprises function modules for executing the method steps performed by the communication apparatus in the first aspect or any of the possible implementation manners of the first aspect.

[0032] In a fourth aspect, a control apparatus is provided, which is applied to a storage system, and the control apparatus comprises a processor configured to execute the method steps performed by the control apparatus in the first aspect or any of the possible implementation manners of the first aspect. The fourth aspect and the second aspect are two different product forms of the control apparatus, and both of the two different product forms of the control apparatus are configured to execute the method steps performed by the control apparatus in the first aspect or any of the possible implementation manners of the first aspect.

[0033] In a fifth aspect, a communication apparatus is provided, which comprises a processor configured to execute the method steps performed by the communication apparatus in the first aspect or any of the possible implementation manners of the first aspect. The fifth aspect and the third aspect are two different product forms of the communication apparatus, and both of the two different product forms of the communication apparatus are configured to execute the method steps performed by the communication apparatus in the first aspect or any of the possible implementation manners of the first aspect.

[0034] In a sixth aspect, a storage system is provided, which comprises the control apparatus provided in any of the second aspect and the fourth aspect.

[0035] In a seventh aspect, a computer readable storage medium is provided, which stores at least one program code, and the program code is read by a processor to make a control apparatus in a storage system execute the method steps performed by the control apparatus in the first aspect or any of the possible implementation manners of the first aspect.

[0036] In an eighth aspect, a computer readable storage medium is provided, which stores at least one program code, and the program code is read by a processor to make a communication apparatus execute the method steps performed by the communication apparatus in the first aspect or any of the possible implementation manners of the first aspect.

[0037] In a ninth aspect, a computer program product or a computer program is provided, which comprises a program code stored in a computer readable storage medium, and the program code is read by a processor to make a control apparatus in a storage system execute the method steps performed by the control apparatus in the first aspect or any of the possible implementation manners of the first aspect.

[0038] In a tenth aspect, a computer program product or computer program is provided, which includes program code stored in a computer readable storage medium, the program code being read by a processor from the computer readable storage medium, and the processor executing the program code to cause a communication apparatus to perform the method steps performed by the communication apparatus in the first aspect or any of the optional modes of the first aspect.

[0039] On the basis of the implementation manners of the aspects provided by the present application, further combinations can be made to provide more implementation manners. BRIEF DESCRIPTION OF DRAWINGS

[0040] FIG. 1 is a schematic diagram of an implementation environment of an asynchronous event notification method according to an embodiment of the present application;

[0041] FIG. 2 is a flowchart of an asynchronous event notification method according to an embodiment of the present application;

[0042] FIG. 3 is a flowchart of an asynchronous event notification method based on a keep-alive command according to an embodiment of the present application;

[0043] FIG. 4 is a flowchart of an asynchronous event notification method based on an I / O command according to an embodiment of the present application;

[0044] FIG. 5 is a schematic diagram of an asynchronous event notification according to an embodiment of the present application;

[0045] FIG. 6 is a schematic diagram of a control apparatus according to an embodiment of the present application;

[0046] FIG. 7 is a schematic diagram of a communication apparatus according to an embodiment of the present application;

[0047] FIG. 8 is a schematic diagram of another control apparatus according to an embodiment of the present application;

[0048] FIG. 9 is a schematic diagram of another communication apparatus according to an embodiment of the present application. DETAILED DESCRIPTION

[0049] In order to facilitate understanding of the specific embodiments of the present application, some of the terms involved in the specific embodiments are introduced as follows.

[0050] Non-volatile memory express (NVMe): A protocol for highly parallel data transfer, allowing solid-state drives (SSDs) to use the peripheral component interconnect express (PCIe) bus at high speeds, reducing system overhead per input / output (I / O) used in flash storage and SSDs.

[0051] NVMe storage system: A storage system based on the NVMe protocol.

[0052] NVMe command: Refers to a command defined in the NVMe protocol. In the NVMe protocol, NVMe commands are divided into administrator (Admin) commands and I / O commands. Admin commands are used to manage storage devices in an NVMe storage system. There are many Admin commands, such as keep live commands, identify commands, asynchronous event request commands, abort commands, delete I / O submission queue commands, and other Admin commands. I / O commands are used to transfer data, such as NVMe read commands, NVMe write commands, and other I / O commands.

[0053] Asynchronous event: An asynchronous event defined in the NVMe protocol, which is a feedback from the NVMe storage system to the connected host during operation, describing some special working status of the NVMe storage system, such as current status, error or health information, etc.

[0054] NVMe over fabrics (NVMe-oF): A high-speed storage protocol based on the NVMe specification, used to access solid-state storage across network structures such as Ethernet, fiber channel, InfiniBand (IB), or remote direct memory access (RDMA). NVMe-oF defines a common architecture for using NVMe message-based commands to interface with storage systems. The NVMe-oF protocol can support many NVMe devices and extend the distance between NVMe devices and their subsystems.

[0055] Next, the embodiments of the present application will be further described in detail in combination with the accompanying drawings.

[0056] FIG. 1 is a schematic diagram of an implementation environment of an asynchronous event notification method provided by an embodiment of the present application. As shown in FIG. 1, the implementation environment includes N communication devices 11, a network 12, and a storage system 13. N is the number of communication devices 11 in the implementation environment, and N is any integer greater than or equal to 1. The value of N varies in different application scenarios, and the value of N in the implementation environment is not limited in the embodiments of the present application. The communication devices 11 communicate with the storage system 13 through the network 12 and access the storage system 13, and communicate with a control device 131 in the storage system 13.

[0057] The communication device 11 is a user-side device. The communication device 11 is any device that is outside the storage system 13 and can communicate with the control device 131 in the storage system 13. The communication device 11 can be a standalone device, such as a communication device including but not limited to a host, a server, a desktop computer, a storage controller of a storage array, a mobile phone, a cell phone, a laptop computer, a tablet computer, a vehicle computer, a game console, a printer, a positioning device, a wearable electronic device, or a smart sensor. Alternatively, the communication device 11 can also be a part of a device, such as a processing chip in a communication device. The processing chip can be implemented by a central processing unit (CPU), an application-specific integrated circuit (ASIC), a programmable logic device (PLD), or any combination thereof. The PLD can be a complex programmable logic device (CPLD), a field-programmable gate array (FPGA), a generic array logic (GAL), a data processing unit (DPU), a system on chip (SoC), or any combination thereof.

[0058] The network 12 is configured to provide data transmission service for the communication device 11 and the storage system 13 based on the NVMe protocol. The NVMe protocol is run in the storage system 13. In the case where the NVMe protocol is NVMe-oF, the network 12 is a fabric network such as Ethernet, Fibre Channel, IB, RDMA, etc. In this case, the communication device 11, the network 12 and the storage system 13 communicate with each other based on the NVMe-oF protocol, and the implementation environment is a storage architecture based on the NVMe-oF protocol. In other embodiments, the NVMe protocol run in the network 12 can also be other types of NVMe protocol in addition to the NVMe-oF protocol, and the communication device 11, the network 12 and the storage system 13 communicate with each other based on other types of NVMe protocol. In this case, the type of NVMe protocol run in the network 12 is not limited in the embodiments of the present application.

[0059] The storage system 13 is a storage system based on the NVMe protocol, i.e., the storage system 13 is an NVMe storage system such as an NVMe subsystem.

[0060] The storage system 13 includes M control devices 131, where M is the number of control devices 131 in the storage system, M is any integer greater than or equal to 1, and the value of M is different in different application scenarios. In this case, the value of M in the storage system 13 is not limited in the embodiments of the present application.

[0061] The control device 131 is configured to manage and control the storage medium, which can be a flash or other type of storage medium. In this case, the type of storage medium managed by the control device 131 is not limited in the embodiments of the present application.

[0062] The control device 131 can be a standalone device, such as a control device including a server, a desktop computer or other computing device. In this case, each control device 131 is connected to at least one NVMe device (not shown in FIG. 1), and each control device 131 is configured to manage and control the storage medium in the NVMe device connected thereto. The NVMe device refers to a storage device supporting the NVMe protocol, which communicates with the outside through the NVMe protocol. The NVMe device can be, but is not limited to, an SSD. In this case, the type of NVMe device is not limited in the embodiments of the present application.

[0063] Alternatively, the control device 131 can also be a partial component in a device, for example, the control device 131 is a controller in an NVMe device, taking an SSD as an example, the control device 131 is an SSD controller. In this case, the storage system 13 includes at least one NVMe device, each NVMe device includes at least one control device 131 and at least one storage medium, and at this time, the control device 131 is used to manage and control the storage medium in the NVMe device where the control device 131 is located.

[0064] Any communication device 11 establishes a connection (association) with a control device 131 in the storage system 13 through the network 12 to realize access to the storage system 13. The communication device 11 communicates with the control device 131 through the connection. For example, the communication device 11 sends an NVMe command to the control device 131 through the connection, the control device 131 executes the NVMe command, and returns a response command of the NVMe command to the communication device 11, which is the execution result of the NVMe command. Taking an NVMe command as an asynchronous event request command as an example, the response command includes event information of an asynchronous event occurring in the storage system 13. Taking an NVMe command as an I / O command as an example, if the NVMe command is an NVMe read command, the control device 131 reads data stored in the storage medium it manages based on the NVMe read command to execute the NVMe read command, and at this time, the response command includes the data read by the control device 131. If the NVMe command is an NVMe write command, the control device 131 writes data to the storage medium it manages based on the NVMe write command to execute the NVMe write command, and at this time, the response command includes a write result indicating whether the data is successfully written.

[0065] In other embodiments, the implementation environment does not include the network 12, the communication device 11 is directly connected with the control device 131 in the storage system 13, and the communication device 11 directly communicates with the control device 131. In this case, the embodiments of the present application do not limit whether the implementation environment includes the network 12.

[0066] For the above storage system, the present application provides an event notification command, which indicates that an asynchronous event has occurred in the storage system. In the case that an asynchronous event occurs in the storage system, the control device in the storage system can notify the communication device that an asynchronous event has occurred in the storage system through the event notification command, so that the communication device can timely obtain the asynchronous event from the control device according to the notification.

[0067] Next, the structure of the event notification command is introduced.

[0068] The event notification command includes at least one of an asynchronous event notify capability (AENC) identifier or an asynchronous event number (AEN), the AENC identifier indicating whether an asynchronous event has occurred in the storage system, the AENC identifier being an asynchronous event occurrence identifier or an asynchronous event non-occurrence identifier, the asynchronous event occurrence identifier indicating that an asynchronous event has occurred in the storage system, and the asynchronous event non-occurrence identifier indicating that an asynchronous event has not occurred in the storage system. The asynchronous event occurrence identifier and the asynchronous event non-occurrence identifier are represented differently, for example, the AENC identifier occupies 1 bit, the asynchronous event occurrence identifier is represented by 1, and the asynchronous event non-occurrence identifier is represented by 0. The AEN is the number of asynchronous events that have occurred in the storage system.

[0069] For example, the event notification command includes the AENC identifier and does not include the AEN, if the AENC identifier is the asynchronous event occurrence identifier, it indicates that an asynchronous event has occurred in the storage system, and if the AENC identifier is the asynchronous event non-occurrence identifier, it indicates that an asynchronous event has not occurred in the storage system. For another example, the event notification command includes the AEN and does not include the AENC identifier, if the AEN is 0, it indicates that no asynchronous event has occurred in the storage system, and if the AEN is greater than 0, it indicates that an asynchronous event has occurred in the storage system, and the number of asynchronous events that have occurred in the storage system is the AEN. For another example, the event notification command includes the AENC identifier and the AEN, if the AENC identifier is the asynchronous event occurrence identifier and the AEN is greater than 0, it indicates that an asynchronous event has occurred in the storage system and the number of asynchronous events that have occurred in the storage system is the AEN, and if the AENC identifier is the asynchronous event non-occurrence identifier and the AEN is 0, it indicates that no asynchronous event has occurred in the storage system.

[0070] The AENC identifier is an identifier in the event notification command for indicating whether an asynchronous event has occurred in the storage system, and the identifier can also have a name other than the AENC identifier. For example, in another embodiment, the identifier for indicating whether an asynchronous event has occurred in the storage system is referred to as an asynchronous event occurrence indication identifier, and in this case, the event notification command includes at least one of the asynchronous event occurrence indication identifier or the AEN, the asynchronous event occurrence indication identifier being the asynchronous event occurrence identifier or the asynchronous event non-occurrence identifier. In this application, the name of the identifier in the event notification command for indicating whether an asynchronous event has occurred in the storage system is not limited.

[0071] In a possible implementation, the event notification command is an NVMe command extended by the application, so that the extended NVMe command has the capability of notifying an asynchronous event. For example, the event notification command is a response command of an NVMe command (referred to as a first NVMe command), the first NVMe command and the response command of the first NVMe command are different types of NVMe commands, and the event notification command is the extended response command. In other words, the event notification command is a command completion response of the first NVMe command, which is the execution result of the first NVMe command. For example, the first NVMe command is an NVMe request command, and the event notification command is a response command of the NVMe request command.

[0072] The first NVMe command can be a keep live command or an I / O command, where the keep live command is used to ensure that the connection between the communication device and the control device remains active to prevent disconnection. The communication device can detect whether the connection between the communication device and the control device is normal (i.e., whether it remains active) through a keep live mechanism, which can be any one of the following first keep live mechanism or second keep live mechanism.

[0073] (1) First keep live mechanism

[0074] The communication device periodically sends a keep live command to the control device. For example, the communication device sends a keep live command to the control device once every first time length, and the first time length can be set according to a specific implementation scenario. In this application, the first time length is not limited.

[0075] For each keep live command sent by the communication device, if the control device receives the keep live command, the control device returns a response command of the keep live command to the communication device, and if the control device does not receive the keep live command or the control device fails, the control device does not return a response command of the keep live command to the communication device. Accordingly, if the communication device receives the response command of the keep live command, it indicates that the connection between the communication device and the control device is normal, and if the communication device cannot receive the response command of the keep live command, it indicates that the connection between the communication device and the control device has failed.

[0076] (2) Second keep live mechanism

[0077] The second keep-alive mechanism can be a traffic based keep alive support (TBKAS) mechanism. In the TBKAS mechanism, the communication device sends an I / O command to the control device, and the I / O command sent by the communication device to the control device forms traffic between the communication device and the control device. If the control device receives the I / O command, the control device executes the I / O command and returns a response command of the I / O command to the communication device, and if the control device does not receive the I / O command or the control device fails, the control device will not return the response command of the I / O command to the communication device. Accordingly, if the communication device receives the response command of the I / O command, it indicates that the connection between the communication device and the control device is normal, and if the communication device does not receive the response command of the I / O command, it indicates that the connection between the communication device and the control device has failed.

[0078] In the case where the keep-alive mechanism used by the communication device is the first keep-alive mechanism, the first NVMe command can be a keep-alive command or an I / O command. In the case where the keep-alive mechanism used by the communication device is the second keep-alive mechanism, the first NVMe command can be an I / O command.

[0079] Next, for ease of description, the response command of the first NVMe command is referred to as the first response command, and the way of extending the first response command to an event notification command is introduced.

[0080] In a conventional NVMe storage system, the first response command includes a reserved field, and the reserved field includes a plurality of bits. In order not to affect the normal use of the defined fields in the first response command, the present application extends the reserved field in the first response command. For example, an asynchronous event field is defined in the reserved field, and the asynchronous event field includes at least one bit in the reserved field, such as the at least one bit including a first bit and / or a plurality of second bits, the first bit is used to carry an AENC identifier, and the plurality of second bits are used to carry an AEN, the plurality of second bits are a plurality of consecutive bits in the reserved field, and the number of second bits can be set according to the actual application scenario, such as 7 or 8, but not limited to 7 or 8, and in this embodiment, the number of second bits is not limited. The first response command with the asynchronous event field is the event notification command, and at this time, the AENC identifier is located in the reserved field of the event notification command.

[0081] In NVMe, the first response command uses the completion queue entry (CQE) double word (DW) 0 of the first NVMe command to define, for example, the completion queue entry DW 0 defined in the NVMe 2.0 protocol, the reserved field in the completion queue entry DW 0 includes 4 bytes from the 0th byte to the 3rd byte, the jth byte in the 4 bytes is recorded as byte 0j, for example, the 0th byte is recorded as byte 00, and the 3rd byte is recorded as byte 03, j is an integer greater than 0 and less than or equal to 3. Each byte includes 8 bits from the 0th bit to the 7th bit, and the ith bit is recorded as bit 0i, for example, the 0th bit is recorded as bit 00, and the 7th bit is recorded as bit 07, i is an integer greater than 0 and less than or equal to 7.

[0082] In the case where the asynchronous event field includes the first bit and does not include the second bit, for example, the reserved field in the completion queue entry DW 0 is defined as an asynchronous field, a certain bit in a certain byte of the reserved field is defined as an asynchronous event field, and the bits of other bytes in the reserved field are still reserved bits. For example, as shown in Table 1, the 1st bit to the 7th bit in a certain byte of the reserved field are still reserved bits, the 0th bit in the byte is defined as the first reserved bit, and the 0th bit is defined as an AENC identifier, as described in Table 2.

[0083] Table 1

[0084] In other embodiments, the 0th bit in the byte is not defined as an asynchronous event field, and any one of the 1st bit to the 7th bit in the byte is defined as an asynchronous event field in a similar manner.

[0085] In the case where the asynchronous event field includes the second bit and does not include the first bit, for example, the reserved field in the completion queue entry DW 0 is defined as an asynchronous field, and a certain byte in the reserved field is defined as an asynchronous event field. For example, as shown in Table 2, the bits in the 1st byte to the 3rd byte in the reserved field are still reserved bits, the 0th byte in the reserved field is defined as AEN, and the 0th byte is defined as an asynchronous event field, as described in Table 3.

[0086] Table 2

[0087] In other embodiments, the 0th byte in the reserved field can also not be defined as an asynchronous event field, and any one of the 1st byte to the 3rd byte in the reserved field is defined as an asynchronous event field in a similar manner.

[0088] In the case that the asynchronous event field includes the first bit and the plurality of second bits, taking the case that the asynchronous field in the completion queue entry DW0 is defined in a reserved field as an example, a certain byte in the reserved field is defined as the asynchronous event field, and the bits of other bytes in the reserved field are still reserved bits. Wherein, the manner of defining a certain byte in the reserved field as the asynchronous event field is taking Table 3 as an example, the 1st bit to the 7th bit in the byte are defined as the AEN field, which is used to carry the asynchronous event number AEN, the bits in the AEN field are the second bits, the 0th bit in the byte is defined as the first bit, which is used to carry the AENC identifier, and the specific definition is described in Table 3 corresponding to the 0th bit.

[0089] Table 3

[0090] In other embodiments, the 0th bit to the 6th bit in the byte can also be defined as the AEN field, and the 7th bit in the byte is defined as the first bit. Herein, the embodiments of the present application do not limit the positions of the first bit and the second bit in the asynchronous event field.

[0091] The fields other than the reserved field in the first response command can also include reserved bits, and if the reserved bits in a certain other field of the first response command are sufficient to define the asynchronous event field, the reserved bits in the other field can also be defined as the asynchronous event field in a similar manner. In other embodiments, a new field can also be extended on the basis of the first response command as the asynchronous event field, so as to extend the first response command into the event notification command. Herein, the embodiments of the present application do not limit the position of the asynchronous event field in the event notification command. In other embodiments, the first response command defined by other versions of the NVMe protocol other than the NVMe 2.0 protocol can also be extended into the event notification command in a similar manner. Herein, the embodiments of the present application do not limit the manner of extending the first response command into the event notification command.

[0092] In other embodiments, the first NVMe command can also be other NVMe commands other than the I / O command and the keep-alive command, and the response command of the other NVMe command can be extended into the event notification command. The extension manner can refer to the above-mentioned extension manner of extending the response command of the I / O command or the keep-alive command, which will not be described herein again. In some application scenarios, the control device will actively send the NVMe command to the host. In other embodiments, the NVMe command actively sent by the control device can also be extended into the event notification command. The extension manner can refer to the above-mentioned extension manner of extending the response command of the I / O command or the keep-alive command, which will not be described herein again.

[0093] In some embodiments, the event notification command can also be a new message defined by the application, the new message including at least one of the AENC identifier or the AEN, as long as the new message can be transmitted between the control device and the communication device. After an asynchronous event has occurred in the storage system, the communication device requests the asynchronous event, and the control device can notify the communication device that the storage system has an asynchronous event by the event notification command. In this embodiment of the application, whether the event notification command is an NVMe command is not limited.

[0094] The control device in the storage system described above can monitor the asynchronous events occurring in the storage system. By executing the asynchronous event notification method provided by the application, the control device actively notifies the communication device connected thereto that there is an asynchronous event in the storage system by the event notification command, so that the communication device acquires the asynchronous event from the control device according to the notification. Next, in combination with FIG. 2, the flow of the asynchronous event notification method is introduced.

[0095] FIG. 2 is a flowchart of an asynchronous event notification method provided by an embodiment of the application, which includes the following steps.

[0096] 201. The control device in the storage system sends an event notification command to the communication device, the event notification command indicating that an asynchronous event has occurred in the storage system.

[0097] The storage system can be any of the storage systems described above, such as the storage system 13, and the control device can be any control device in the storage system, such as the control device 131 in the storage system 13. The communication device can be any communication device connected to the control device.

[0098] The control device determines whether an asynchronous event occurs in the storage system. Each time an asynchronous event occurs in the storage system, the control device records event information of the asynchronous event, and adds 1 to the number of recorded asynchronous events to count the asynchronous events occurring in the storage system. The event information of any asynchronous event is used to describe the asynchronous event.

[0099] In the case where the event notification command is a new message defined by the application, if the number of asynchronous events counted reaches a number threshold, the control device generates an event notification command and sends the event notification command to the communication device, the event notification command including an asynchronous event occurrence identifier and / or the number of asynchronous events. The number threshold is an integer greater than 0, and the number threshold can be set according to the specific implementation scenario. In this embodiment of the application, the number threshold is not limited. For example, the control device executes step 201 once for every number threshold of asynchronous events.

[0100] In the case that the event notification command is the first response command, the communication device first sends the first NVMe command to the control device, the control device receives the first NVMe command, and sends a response command of the first NVMe command to the communication device, the response command of the first NVMe command is both the first response command and the event notification command. For example, after receiving the first NVMe command, the control device executes the first NVMe command, obtains the execution result of the first NVMe command, and generates the first response command based on the execution result of the first NVMe command and the asynchronous event occurring in the storage system. In the process of generating the first response command, the asynchronous event field in the first response command is set based on the count of the number of asynchronous events, so that the generated first response command has the function of responding to the first NVMe command and the ability of notifying the asynchronous event, so that the generated first response command can serve as an event notification command. The control device sends the event notification command to the communication device. In this way, in the scenario where the communication device issues the first NVMe command to the control device, the control device completes the first NVMe command, and at the same time, the control device can also notify the communication device that there is an asynchronous event occurring in the storage system by means of the response command of the first NVMe command, thereby saving the communication resources between the communication device and the control device.

[0101] In the process of generating the first response command, the asynchronous event field is set. For example, in the case that the asynchronous event field includes the first bit and does not include the second bit, if the count of the number of asynchronous events is equal to 0, the first bit in the asynchronous event field in the first response command is set to 0, so as to configure the first bit as an asynchronous event non-occurrence identifier, and if the count of the number of asynchronous events is greater than 0, the first bit in the asynchronous event field in the first response command is set to 1, so as to configure the first bit as an asynchronous event occurrence identifier. In the case that the asynchronous event field includes the second bit and does not include the first bit, the second bit in the asynchronous event field in the first response command is set to the count of the number of asynchronous events. In the case that the asynchronous event field includes the first bit and the second bit, if the count of the number of asynchronous events is equal to 0, the first bit and the second bit in the asynchronous event field in the first response command are both set to 0, and if the count of the number of asynchronous events is greater than 0, the first bit in the asynchronous event field in the first response command is set to 1, and the second bit in the asynchronous event field is set to the count of the number of asynchronous events.

[0102] Taking the first keep-alive mechanism scenario as an example, it is assumed that the first NVMe command is a keep-alive command, the event notification command is a response command of the keep-alive, the control device is a controller in an NVMe device in the storage system, and the communication device is a host. As shown in the asynchronous event notification flowchart based on the keep-alive command provided by the embodiment of the application in FIG. 3, in step 4, the controller determines that X asynchronous events occur in the storage system, and X is an integer greater than or equal to 1. In step 5, the host periodically sends a keep-alive command to the controller. In step 6, the host receives the keep-alive command, and replies to the host with a response command of the keep-alive command, which is marked with the occurrence of X asynchronous events in the storage system. In step 7, the host sends an asynchronous event request command to the controller according to the number X of asynchronous events marked in the response command, to obtain the asynchronous events that occur in the storage system (as described in steps 202 to 206 below). As can be seen, in the case where the event notification command is the response command of the keep-alive command, in the scenario where the host issues a keep-alive command to the controller, the controller can also notify the host of the occurrence of asynchronous events in the storage system by means of the response command of the keep-alive command while completing the keep-alive command, thereby saving the communication resources between the host and the controller.

[0103] Taking the second keep-alive mechanism scenario as an example, it is assumed that the first NVMe command is an I / O command, the event notification command is a response command of the I / O command, the control device is a controller in an NVMe device in the storage system, and the communication device is a host. As shown in the asynchronous event notification flowchart based on the I / O command provided by the embodiment of the application in FIG. 4, in step 4, the controller determines that X asynchronous events occur in the storage system, and X is an integer greater than or equal to 1. In step 5, the host issues an I / O command to the controller in the case of business demand. In step 6, the host receives the I / O command, executes the I / O command, and replies to the host with a response command of the I / O command, which is marked with the occurrence of X asynchronous events in the storage system. In step 7, the host sends an asynchronous event request command to the host according to the number X of asynchronous events marked in the response command, to obtain the asynchronous events of the storage system (as described in steps 202 to 206 below). As can be seen, in the case where the event notification command is the response command of the I / O command, in the scenario where the host issues an I / O command to the controller, the controller can also notify the host of the occurrence of asynchronous events in the storage system by means of the response command of the I / O command while completing the I / O command, thereby saving the communication resources between the host and the controller.

[0104] In some embodiments, before performing the present step 201, the control device notifies the communication device that the control device supports an asynchronous event notification capability, where the asynchronous event notification capability refers to the capability of the control device to actively notify the communication device of an asynchronous event occurring in the storage system in the case that the asynchronous event occurs in the storage system. Relative to the control device in a conventional NVMe storage system (such as the storage system introduced in the background), the asynchronous event notification capability is a new capability extended to the control device by the present application, so that the control device can actively notify the communication device that the asynchronous event has occurred in the storage system based on the asynchronous event notification capability, i.e., notify the communication device that the asynchronous event has occurred in the storage system, so that the communication device can timely notify the control device to report the asynchronous event occurring according to the notification.

[0105] For example, the control device notifies the communication device that the control device supports the asynchronous event notification capability by sending a capability notification command to the communication device, where the capability notification command indicates that the controller supports the asynchronous event notification capability.

[0106] The capability notification command includes an asynchronous event notification support (AENS) identifier, where the AENS identifier indicates whether the control device supports the asynchronous event notification capability, and the AENS identifier is divided into a first capability support identifier and a second capability support identifier, where the first capability support identifier indicates that the control device supports the asynchronous event notification capability, and the second capability support identifier indicates that the control device does not support the asynchronous event notification capability. The first capability support identifier and the second capability support identifier are represented differently, for example, the first capability support identifier is represented by 1, and the second capability support identifier is represented by 0. As a capability of the control device, the asynchronous event notification capability is supported by the control device in the case that the control device enables the asynchronous event notification capability, and in this case, the AENS identifier in the capability notification command is the first capability support identifier. In the case that the control device does not enable the asynchronous event notification capability, the control device does not support the asynchronous event notification capability, and in this case, the AENS identifier in the capability notification command is the second capability support identifier.

[0107] Optionally, the AENS identifier occupies 1 bit in the capability notification command, for example, the AENS identifier is 1, indicating that the control device supports the asynchronous event notification capability, and in this case, the AENS identifier is the first capability support identifier, and the AENS identifier is 0, indicating that the control device does not support the asynchronous event notification capability, and in this case, the AENS identifier is the second capability support identifier.

[0108] In a possible implementation, the capability notification command is an NVMe command extended by the application, so that the extended NVMe command supports notification of whether the control device supports the asynchronous event notification capability. For example, the capability notification command is a response command of an identify command defined in the NVMe protocol, and for ease of description, the response command of the identify command is referred to as a second response command, where the identify command is used to obtain information of the control device, the information of the control device includes capability information of the control device, the second response command includes the capability information of the control device, and the capability information includes a capability support identifier corresponding to at least one capability, and the capability support identifier corresponding to any capability indicates whether the control device supports the corresponding capability. The at least one capability includes the asynchronous event notification capability.

[0109] In the conventional NVMe storage system, the second response command includes a reserved field, and the reserved field includes at least one bit. The reserved field refers to a field that is not defined or not used, and a bit in the reserved field that is not defined or not used is referred to as a reserved bit. A field that is already defined or already used in various messages, commands, and responses is referred to as a defined field. In order not to affect the normal use of the defined field in the second response command, the application extends the reserved field in the second response command, for example, defines any reserved bit in the reserved field to carry the AENS identifier. The second response command that meets the definition is also referred to as the capability notification command. At this time, the AENS identifier is located in the reserved field of the capability notification command.

[0110] In the NVMe, the second response command is defined using an identify controller data structure. For example, in the NVMe 2.0 protocol, bytes 384 to 511 of the identify controller data structure are defined as a reserved field, where each byte includes 8 bits, 0 bit to 7 bit, and the i-th bit is referred to as bit 0i, for example, the 0 bit is referred to as bit 00, and the 7 bit is referred to as bit 07, where i is an integer greater than 0 and less than or equal to 7.

[0111] For example, as shown in Table 4, bits 1 to 7 in byte 384 are still reserved bits, and bit 0 in byte 384 is defined as the AENS identifier. The specific definition is described in Table 1.

[0112] Table 4

[0113] In some other embodiments, the 0th bit in the 384th byte can not be defined as the AENS identifier, and any reserved bit in the 1st bit to the 7th bit in the 384th byte can be defined as the AENS identifier in a similar manner, or any reserved bit in the 385th byte to the 511th byte of the control device data structure can be defined as the AENS identifier. In the embodiments of the present application, the position of the AENS identifier in the reserved field of the second response command is not limited.

[0114] The other field in the second response command except the reserved field can include a reserved bit, and in some other embodiments, any reserved bit in the other field can be defined as the AENS identifier in a similar manner. In some other embodiments, the AENS identifier can also reuse a bit (referred to as a defined bit) that has been defined or used in the second response command. For example, the defined bit in the second response command can be used by the control device in a specific scenario or a specific time period, and the bit can be extended as the AENS identifier. During the period of the function defined before the control device uses the bit, the control device can use the bit as the AENS identifier. In some other embodiments, the second response command defined in other versions of the NVMe protocol except the NVMe 2.0 protocol can also be extended as the capability notification command in a similar manner. In the embodiments of the present application, the manner of extending the second response command as the capability notification command is not limited.

[0115] Optionally, the capability notification command also indicates the command type of the event notification command (referred to as the first command type), and accordingly, the capability notification command also includes the first command type, so that the communication device can identify the event notification command for notifying the asynchronous event according to the first command type. In the case where the capability notification command includes the first command type, the first command type can also be defined in the reserved field in the second response command in a similar manner of defining the AENS identifier, which will not be described herein. In summary, the capability notification command includes at least one of the AENS identifier or the first command type.

[0116] In the case where the event notification command is the second response command, the control device does not actively send the event notification command to the communication device, and after receiving the identification command from the communication device, the control device executes the step of sending the event notification command to the communication device based on the identification command.

[0117] For example, before sending the event notification command to the communication device, the communication device sends an identification command to the control device to request information of the control device. The control device receives the identification command, executes the identification command, generates a second response command, sets the AENS identifier in the second response command during the generation of the second response command, and obtains the event notification command including the AENS identifier. The event notification command is sent to the communication device to realize that, during the process in which the communication device requests information of the control device, the control device not only notifies the communication device of the information of the control device, but also notifies the communication device of whether the control device supports the asynchronous event notification capability, thereby saving the communication resources between the communication device and the control device.

[0118] For example, referring to FIG. 3 and FIG. 4, in step 1, after the host establishes a connection with the controller in the NVMe, the host sends an identification command to the controller to request information of the controller. In step 2, after the controller receives the identification command, the controller returns a response command (i.e., a second response command) of the identification command to the host. The response command includes a first capability support identifier corresponding to the asynchronous event notification capability, to realize the notification of the host that the controller supports the asynchronous event notification capability. In step 3, after the host obtains the notification that the controller supports the asynchronous event notification capability, the host no longer actively sends an asynchronous event request command to the controller, and obtains the asynchronous event from the controller when the controller notifies the host that an asynchronous event has occurred in the storage system.

[0119] In some embodiments, the capability notification command is a new message defined by the present application, and is used to notify the communication device of whether the control device supports the asynchronous event notification capability. The capability notification command includes the AENS identifier. If the AENS identifier is the first capability support identifier, it indicates that the controller supports the asynchronous event notification capability. If the AENS identifier is the second capability support identifier, it indicates that the controller does not support the asynchronous event notification capability.

[0120] For the custom capability notification command, after the connection between the communication device and the control device is established, the control device can actively send the capability notification command to the communication device to notify the communication device of whether the control device supports the asynchronous event notification capability. Alternatively, after the connection between the communication device and the control device is established, the communication device sends a capability confirmation command to the control device. The capability confirmation command indicates whether the control device supports the asynchronous event notification capability. The control device receives the capability confirmation command, and sends the capability notification command to the communication device based on the capability confirmation command to notify the communication device of whether the control device supports the asynchronous event notification capability. The embodiments of the present application do not limit the sending of the capability notification command from the control device to the communication device.

[0121] The control device sends a capability notification command to the communication device, so that the communication device can learn whether the control device supports the asynchronous event notification capability. If the control device supports the asynchronous event notification capability, the communication device can flexibly select whether to actively send an asynchronous event request command to the control device. For example, the communication device can select to actively send an asynchronous event request command to the control device to instruct the control device to report an asynchronous event to the communication device if an asynchronous event occurs in the storage system. Alternatively, the communication device can select not to actively send an asynchronous event request command to the control device, but wait for the control device to notify that an asynchronous event occurs in the storage system, and then the communication device sends an asynchronous event request to the control device, such as steps 201 to 203.

[0122] The control device sending the capability notification command to the communication device is an optional step. In other embodiments, the control device does not perform the step of sending the capability notification command to the communication device. For example, the communication device is manually configured with a capability support identifier corresponding to the asynchronous event notification capability of the control device, or the communication device already knows whether the control device supports the asynchronous event notification capability, or the communication device defaults that the control device supports the asynchronous event notification capability. Therefore, the control device does not need to notify the communication device whether it supports the asynchronous event notification capability, and the control device does not need to perform the step of sending the capability notification command to the communication device.

[0123] 202. The communication device receives the event notification command of the control device.

[0124] In the case where the communication device learns that the control device supports the asynchronous event notification capability, it also learns the command type (i.e., the first command type) of the event notification command. The first command type can be notified by the capability notification command, manually configured, or defaulted by the communication device. The communication device can receive multiple commands of the control device. If the command type of any received command is the first command type, the command is identified as the event notification command, and any one of the AENS identifier or the AEN is parsed from the event notification command.

[0125] For the convenience of understanding the above asynchronous event notification mechanism, taking an asynchronous event notification diagram provided by an embodiment of the present application shown in FIG. 5 as an example, the asynchronous event notification mechanism is exemplarily introduced. Taking a certain NVMe subsystem as a storage system accessed by a communication device as an example, in step 1, the communication device establishes a connection with a control device in the NVMe subsystem. In step 2, under a first keep-alive mechanism, the communication device periodically sends a keep-alive command to the control device, or under a second keep-alive mechanism, the communication device sends an I / O command to the control device. In step 3, the control device determines that an asynchronous event occurs in the storage system, and when the keep-alive command or the I / O command in step 2 is executed, the control device notifies the communication device that there is an asynchronous event in the storage system by responding to the command.

[0126] 203、The communication device sends an asynchronous event request command to the control device, the asynchronous event request command indicating to obtain event information of the asynchronous event, and the asynchronous event request command is associated with the event notification command.

[0127] For example, the asynchronous event requested by the asynchronous event request command is the asynchronous event notified by the event notification command. For another example, the asynchronous event request command is sent based on the asynchronous event request command.

[0128] After receiving the event notification command, the communication device sends an asynchronous event request command to the control device based on the event notification command. For example, if the event notification command includes an AENS identifier and no AEN, if the AENS identifier is an asynchronous event non-occurrence identifier (e.g., the AENS identifier is equal to 0), the communication device does not perform this step 203; if the AENS identifier is an asynchronous event occurrence identifier (e.g., the AENS identifier is equal to 1), it indicates that at least one asynchronous event has occurred in the storage system, and the communication device sends an asynchronous event request command to the control device. The control device can return a response command to the communication device based on the asynchronous event request command to report one asynchronous event. Of course, the communication device can also send multiple asynchronous event request commands to the control device, and the control device can report at least one asynchronous event to the communication device based on the multiple asynchronous event request commands. For example, if the number of asynchronous event request commands is less than or equal to the number of asynchronous events counted, the control device returns a response command to the communication device for each asynchronous event request command to report multiple asynchronous events. If the number of asynchronous event request commands is greater than the number of asynchronous events counted, the control device executes the asynchronous event request command for the number of asynchronous events counted, ignores the remaining asynchronous event request commands that are not executed, and returns a response command to the communication device for each asynchronous event request command executed to report the number of asynchronous events.

[0129] In the case where the event notification command includes an AEN and no AENS identifier, the communication device does not perform the step of sending an asynchronous event request command to the control device in response to the event notification command including an asynchronous event number (AEN). If the asynchronous event number is equal to 0, the communication device does not perform the step of sending an asynchronous event request command to the control device. If the asynchronous event number is greater than 0, the communication device sends an asynchronous event request command to the control device for the asynchronous event number, so that the control device returns a response command to the communication device for each asynchronous event request command. For example, in FIGS. 3 and 4, the asynchronous event number is X, and in step 7, the host sends X asynchronous event request commands to the controller, and the controller returns a response command to the host for the X asynchronous event request commands.

[0130] In the case where the event notification command includes an AEN and an AENS identifier, if the AEN is equal to 0, the communication device does not perform the step of sending an asynchronous event request command to the control device. If the AEN is greater than 0, the communication device sends an asynchronous event request command to the control device for the asynchronous event number, so that the control device returns a response command to the communication device for each asynchronous event request command, so that the communication device can obtain each asynchronous event that occurs in the storage system, and avoid unnecessary or wasteful asynchronous event requests.

[0131] 204. The control device receives an asynchronous event request command of the communication device.

[0132] 205. The control device sends a response command of the asynchronous event request command to the communication device, the response command including event information of the asynchronous event, the response command being associated with context information of the asynchronous event request command.

[0133] The context information of the asynchronous event request command includes relevant information of the communication device in the asynchronous event request command, such as address information of the communication device.

[0134] The control device sends the response command of the asynchronous event request command to the communication device based on the context information of the asynchronous event request command. For example, after the communication device receives any asynchronous event request command, the control device stores the context information of the asynchronous event request command in the memory, obtains event information of an asynchronous event from the stored event information of at least one asynchronous event, generates a response command of the asynchronous event request command based on the event information, and executes the asynchronous event request command. The control device sends the response command to the corresponding communication device based on the context information of the asynchronous event request command, where the context information indicates the communication device that sent the asynchronous event request command. For example, the context information can be address information of the communication device. The corresponding communication device refers to the communication device indicated by the context information.

[0135] After step 205 is executed, the control device can also delete the stored event information of the asynchronous event to release the memory space occupied by the event information of the asynchronous event. The control device records the number of asynchronous events by 1 to count the asynchronous events in the storage system in real time. The control device executes step 201 again to determine whether an asynchronous event occurs in the storage system. When an asynchronous event occurs in the storage system, the control device records the event information of the asynchronous event and increases the number of asynchronous events by 1 to trigger the execution of steps 201 to 205 again.

[0136] For example, in the first keep-alive mechanism scenario, after the host obtains X asynchronous events in the storage system (i.e., after step 7), the controller executes step 4 again to determine the latest asynchronous event in the storage system. After receiving the keep-alive command of the host again, the controller marks the number of the latest asynchronous event through the response command of the keep-alive command, so that the host sends an asynchronous event request command to the controller again to obtain the latest asynchronous event in the storage system.

[0137] For example, in the second keep-alive mechanism scenario, after the host obtains X asynchronous events occurred in the storage system (i.e., after step 7), the controller executes step 4 again to determine the latest asynchronous event occurred in the storage system, and after receiving the I / O command of the host next time, marks the number of the latest asynchronous event occurred through the response command of the I / O command, so that the host sends the asynchronous event request command to the controller again to obtain the latest asynchronous event occurred in the storage system.

[0138] In the process of performing the present step 205, the control device can quickly use the context information of the asynchronous event request command without waiting for the asynchronous event occurred in the storage system, and therefore, compared with the scheme in which the communication device requests to obtain the asynchronous event without knowing that the asynchronous event occurs (such as the asynchronous event reporting process in the background art), the context information of the asynchronous event request command in the present application can be quickly used, the time for the context information of the asynchronous event request command to occupy the memory space of the control device is short, and the occupancy time of the context information of the single asynchronous event request command to the memory space of the control device can be reduced. Even if the number of communication devices connected to the control device is relatively large, the control device needs to store a large amount of context information of the asynchronous event request command, and the occupancy time of the context information of the single asynchronous event request command to the memory space of the control device is reduced, which can reduce the occupancy time of a large amount of context information of the asynchronous event request command to the memory space of the control device as a whole, so that the control device can store more memory space of the control device and process more asynchronous event request commands in the same time.

[0139] For the convenience of understanding the asynchronous event notification mechanism provided in the present application, taking the asynchronous event notification diagram provided in the embodiment of the present application shown in FIG. 5 as an example, the asynchronous event notification mechanism is exemplarily introduced. Taking a certain NVMe subsystem as the storage system accessed by the communication device as an example, in step 1, the communication device establishes a connection with the control device in the NVMe subsystem. In step 2, under the first keep-alive mechanism, the communication device periodically sends a keep-alive command to the control device, or under the second keep-alive mechanism, the communication device sends an I / O command to the control device. In step 3, the control device determines that an asynchronous event occurs in the storage system, and when the response command of the keep-alive command in step 2 or the response command of the I / O command is replied to the communication device, the control device notifies the communication device that the asynchronous event occurs in the storage system through the response command. In step 4, after the communication device receives the response command, the communication device sends an asynchronous event request command to the control device according to the notification in the response command to request the asynchronous event.

[0140] The above is an example of reporting one asynchronous event based on the response command of the asynchronous event request command. In other embodiments, the response command of the asynchronous event request command can also report multiple asynchronous events. For example, in the case where the AEN in the event notification command is greater than 1, the communication device sends one asynchronous event request command to the control device based on the event notification command. During the execution of the asynchronous event request command, the control device generates a response command of the asynchronous event request command based on the event information of the AEN asynchronous events, the response command including the event information of the AEN asynchronous events, and the control device sends the response command to the corresponding communication device based on the context information of the asynchronous event request command, to report the AEN asynchronous events to the communication device.

[0141] 206、The communication device receives the response command of the asynchronous event request command.

[0142] The method provided by the embodiments of the present application can actively notify the communication device of the asynchronous event of the storage system through the event notification command based on the asynchronous event of the storage system, so that the communication device requests the control device for the asynchronous event that has occurred based on the asynchronous event request command. Since the control device has already generated the asynchronous event in the storage system before receiving the asynchronous event request command, the control device can quickly return the response command associated with the context information of the asynchronous event request command to the communication device after storing the context information of the asynchronous event request command, without waiting for the asynchronous event in the storage system. For example, the control device can quickly obtain the event information of the asynchronous event without waiting for the asynchronous event in the storage system, and return the response command including the event information to the communication device based on the stored context information of the asynchronous event request command, so that the context information can be quickly used in a short time after storing the context information of the asynchronous event request command, and the context information is prevented from occupying the memory space of the control device for a long time.

[0143] The above describes the method of the embodiments of the present application, and the device of the embodiments of the present application is described below. It should be understood that the device described below has any function of the host or the controller in the above method. The above describes the asynchronous event notification method according to the embodiments of the present application in detail in combination with FIGS. 2 to 5. Based on the same inventive concept, the device of the asynchronous event notification method according to the embodiments of the present application is described below in combination with FIGS. 6 to 9. It should be understood that the technical features described in the method embodiments are also applicable to the following device embodiments.

[0144] FIG. 6 is a structural schematic diagram of a control device according to an embodiment of the present application. The device 600 shown in FIG. 6 includes:

[0145] The sending module 601 is configured to send an event notification command to the communication device, the event notification command indicating that an asynchronous event has occurred in the storage system.

[0146] The receiving module 602 is configured to receive an asynchronous event request command returned by the communication device based on the event notification command, the asynchronous event request command indicating that event information of the asynchronous event is to be acquired, and the asynchronous event request command being associated with the event notification command.

[0147] The sending module 601 is further configured to send a response command of the asynchronous event request command to the communication device, the response command including the event information of the asynchronous event, and the response command being associated with context information of the asynchronous event request command.

[0148] Optionally, the event notification command is a response command of a non-volatile memory standard command; and the receiving module 602 is further configured to receive the non-volatile memory standard command of the communication device.

[0149] Optionally, the non-volatile memory standard command is a keep-alive command or an input / output command.

[0150] Optionally, the event notification command includes at least one of an asynchronous event occurrence identifier or an asynchronous event quantity, the asynchronous event occurrence identifier indicating that the asynchronous event has occurred in the storage system, and the asynchronous event quantity being a quantity of the asynchronous events occurring in the storage system.

[0151] Optionally, the at least one of the asynchronous event occurrence identifier or the asynchronous event quantity is located in a reserved field of the response command of the non-volatile memory standard command.

[0152] Optionally, the event notification command includes at least one of an asynchronous event occurrence identifier or an asynchronous event quantity, the asynchronous event occurrence identifier indicating that the asynchronous event has occurred in the storage system, and the asynchronous event quantity being a quantity of the asynchronous events occurring in the storage system.

[0153] Optionally, the sending module 601 is further configured to send a capability notification command to the communication device, the capability notification command indicating that the control device in the storage system supports an asynchronous event notification capability, the asynchronous event notification capability being a capability of the control device to actively notify the communication device of the occurrence of the asynchronous event in the case that the asynchronous event occurs in the storage system.

[0154] Optionally, the capability notification command is a response command of an identification command defined in a non-volatile memory standard protocol; and the receiving module 602 is further configured to receive the identification command of the communication device.

[0155] Optionally, the capability notification command includes at least one of a capability support identifier or a command type of the event notification command, the capability support identifier indicating that the control device in the storage system supports the asynchronous event notification capability.

[0156] Optionally, at least one of the capability support indication or the command type of the event notification command is located in a reserved field of a response command identifying the command.

[0157] Optionally, the capability notification command comprises at least one of the capability support indication or the command type of the event notification command, and the capability support indication indicates that the control device in the storage system supports the asynchronous event notification capability.

[0158] It should be understood that the device 600 can be a control device involved in the foregoing various embodiments, and is configured to execute the asynchronous event notification method executed by the control device. The modules in the device 600 and the other operations and / or functions described above are respectively configured to implement various steps and methods performed by the control device in the method embodiments. For brevity, details are not described herein again.

[0159] It should be understood that the device 600 is only taken as an example in the division of the foregoing functional modules when notifying the asynchronous event. In actual applications, the foregoing functions can be completed by different functional modules according to needs, that is, the internal structure of the device 600 is divided into different functional modules to complete all or part of the functions described above. In addition, the device 600 provided in the foregoing embodiments and the method embodiments belong to the same concept, and the specific implementation process is described in the foregoing method embodiments, which is not described herein again.

[0160] FIG. 7 is a structural schematic diagram of a communication device according to an embodiment of the present application. The device 700 shown in FIG. 7 comprises:

[0161] The receiving module 701 is configured to receive an event notification command of a control device in a storage system, and the event notification command indicates that an asynchronous event has occurred in the storage system.

[0162] The sending module 702 is configured to send an asynchronous event request command to the control device based on the event notification command, and the asynchronous event request command indicates event information of the asynchronous event, and the asynchronous event request command is associated with the event notification command.

[0163] The receiving module 701 is further configured to receive a response command of the asynchronous event request command, and the response command comprises the event information of the asynchronous event.

[0164] Optionally, the event notification command is a response command of a non-volatile memory standard command, and the sending module 702 is further configured to send a non-volatile memory standard command to the control device.

[0165] Optionally, the non-volatile memory standard command is a keep-alive command or an input / output command.

[0166] Optionally, the event notification command comprises at least one of an asynchronous event occurrence identifier or an asynchronous event number, the asynchronous event occurrence identifier indicating that an asynchronous event has occurred in the storage system, and the asynchronous event number being a number of asynchronous events that have occurred in the storage system.

[0167] Optionally, the at least one of the asynchronous event occurrence identifier or the asynchronous event number is located in a reserved field of a response command of the non-volatile memory standard command.

[0168] Optionally, the event notification command comprises at least one of an asynchronous event occurrence identifier or an asynchronous event number, the asynchronous event occurrence identifier indicating that an asynchronous event has occurred in the storage system, and the asynchronous event number being a number of asynchronous events that have occurred in the storage system.

[0169] Optionally, the sending module 702 is configured to, in a case where the event notification command comprises the asynchronous event number, send, to the control device, an asynchronous event request command of the asynchronous event number.

[0170] Optionally, the receiving module 701 is further configured to receive a capability notification command of the control device in the storage system, the capability notification command indicating that the control device supports an asynchronous event notification capability, the asynchronous event notification capability being a capability of the control device to actively notify the communication device of an occurrence of an asynchronous event in a case where the asynchronous event occurs in the storage system.

[0171] Optionally, the capability notification command is a response command of an identification command defined by a non-volatile memory standard protocol, and the sending module 702 is further configured to send, to the control device, the identification command.

[0172] Optionally, the capability notification command comprises at least one of a capability support identifier or a command type of the event notification command, the capability support identifier indicating that the control device in the storage system supports the asynchronous event notification capability.

[0173] Optionally, the at least one of the capability support identifier or the command type of the event notification command is located in a reserved field of a response command of the identification command.

[0174] Optionally, the capability notification command comprises at least one of a capability support identifier or a command type of the event notification command, the capability support identifier indicating that the control device in the storage system supports the asynchronous event notification capability.

[0175] It should be understood that the apparatus 700 can be a communication device involved in each of the foregoing embodiments, and is configured to perform the asynchronous event notification method performed by the communication device described above. Each module in the apparatus 700 and the other operations and / or functions described above are respectively configured to implement various steps and methods performed by the communication device in the method embodiments. For specific details, refer to the foregoing method embodiments, which will not be described herein again for the sake of brevity.

[0176] It should be understood that the device 700 is only exemplified by the above division of the functional modules when acquiring the asynchronous event, and in actual application, the above functions can be distributed by different functional modules according to needs, that is, the internal structure of the device 700 is divided into different functional modules to complete all or part of the functions described above. In addition, the device 700 provided by the above embodiment and the above method embodiment belong to the same concept, and the specific implementation process is described in detail in the above method embodiment, which will not be repeated here.

[0177] FIG. 8 is a structural schematic diagram of another control device provided by the embodiment of the application. The control device 800 shown in FIG. 8 can be applied to the storage system described above. The control device 800 includes one or more processors 801 and one or more memories 802. The one or more memories 802 are coupled with the one or more processors 801. The one or more memories 802 are configured to store at least one program code. When the one or more processors 801 execute the at least one program code, the control device 800 performs the asynchronous event notification method performed by the control device.

[0178] The processor 801 can also be implemented by a CPU, or can be implemented by an ASIC, or can be implemented by a programmable logic device PLD, and the above PLD can be a CPLD, an FPGA, a GAL, a DPU, a SoC or any combination thereof.

[0179] The memory 802 can include a volatile memory (volatile memory), such as a random access memory (random access memory, RAM). The memory 906 can also include a non-volatile memory (non-volatile memory), such as a read-only memory (read-only memory, ROM), a flash memory, a mechanical hard disk (hard disk drive, HDD) or a solid state disk (solid state drive, SSD) The memory 802 is, for example, a random access memory (random access memory, RAM), a read-only memory (read-only memory, ROM), a flash memory, a mechanical hard disk (hard disk drive, HDD) or a solid state disk (solid state drive, SSD) and the like, and the type of the memory 802 is not limited here.

[0180] FIG. 9 is a structural schematic diagram of another communication apparatus provided in an embodiment of the present application. As shown in FIG. 9, the communication apparatus 900 includes a bus 902, a processor 904, a memory 906, and a communication interface 908. The processor 904, the memory 906, and the communication interface 908 communicate through the bus 902. The bus 902 can be a peripheral component interconnect (PCI) bus or an extended industry standard architecture (EISA) bus, etc. The bus can be divided into an address bus, a data bus, a control bus, etc. For ease of representation, only one line is used in FIG. 9, but it does not mean that there is only one bus or only one type of bus. The bus 902 can include a path for transmitting information between various components (for example, the memory 906, the processor 904, and the communication interface 908) of the communication apparatus 900. The implementation of the processor 904 is similar to that of the processor 801, and details are not repeated here.

[0181] The implementation of the memory 906 is similar to that of the memory 802, and details are not repeated here. The memory 906 stores executable program code, and the processor 904 reads and executes the executable program code, so that the communication apparatus 900 implements the asynchronous event notification method performed by the communication apparatus in the above method embodiments.

[0182] In an example embodiment, a computer readable storage medium, for example, a memory including program code, is also provided. The program code can be executed by a processor of a control apparatus in a storage system to complete the asynchronous event notification method performed by the control apparatus in the above embodiments. For example, the computer readable storage medium is a non-transitory computer readable storage medium, such as a read-only memory (ROM), a random access memory (RAM), a compact disc read-only memory (CD-ROM), a magnetic tape, a floppy disk, and an optical data storage device, etc.

[0183] In an example embodiment, a computer readable storage medium, for example, a memory including program code, is also provided. The program code can be executed by a processor of a control apparatus in a storage system to complete the asynchronous event notification method performed by the control apparatus in the above embodiments. For example, the computer readable storage medium is a non-transitory computer readable storage medium, such as a read-only memory (ROM), a random access memory (RAM), a compact disc read-only memory (CD-ROM), a magnetic tape, a floppy disk, and an optical data storage device, etc.

[0184] The embodiment of the present application further provides a computer program product or computer program, the computer program product or computer program comprising program codes, the computer instructions being stored in a computer readable storage medium, and the processor of the control device in the storage system reads the program codes from the computer readable storage medium, and the processor executes the program codes, so that the control device executes the asynchronous event notification method executed by the control device in the above embodiment.

[0185] The embodiment of the present application further provides a computer program product or computer program, the computer program product or computer program comprising program codes, the computer instructions being stored in a computer readable storage medium, and the processor of the control device in the storage system reads the program codes from the computer readable storage medium, and the processor executes the program codes, so that the control device executes the asynchronous event notification method executed by the control device in the above embodiment.

[0186] In the description of the present application, unless otherwise specified, " / " means "or", for example, A / B can mean A or B. "And / or" in this paper only describes the relationship between the associated objects, which means that there can be three relationships, for example, A and / or B, which can mean that A exists alone, A and B exist together, and B exists alone. In addition, "at least one" means one or more, and "multiple" means two or more. "First", "second", etc. do not limit the quantity and execution order, and "first", "second", etc. do not necessarily mean different.

[0187] In the present application, the words "exemplary" or "for example" are used to mean serving as an example, instance, or illustration. Any embodiment or design scheme described as "exemplary" or "for example" in the present application should not be interpreted as being more preferred or advantageous than other embodiments or design schemes. Rather, the use of "exemplary" or "for example" is intended to present relevant concepts in a concrete manner.

[0188] It should be noted that the information (including but not limited to user equipment information, user personal information, etc.), data (including but not limited to data for analysis, stored data, displayed data, etc.) and signals involved in the present application are authorized by the user or fully authorized by all parties, and the collection, use and processing of relevant data need to comply with relevant laws, regulations and standards of relevant countries and regions. For example, the various messages, commands, asynchronous event information, etc. involved in the present application are obtained under sufficient authorization.

[0189] All the optional technical solutions described above can be combined to form optional embodiments of the present disclosure, which will not be described here.

[0190] The above merely provides the optional embodiments of the present application, and is not intended to limit the present application. Any modification, equivalent replacement, improvement, etc. made within the spirit and principle of the present application shall be included in the protection scope of the present application.

Claims

1. An asynchronous event notification method, characterized by, The method comprises: sending an event notification command to a communication device, the event notification command indicating that an asynchronous event has occurred in a storage system; receiving an asynchronous event request command returned by the communication device, the asynchronous event request command indicating that event information of the asynchronous event is to be acquired, the asynchronous event request command being associated with the event notification command; sending a response command of the asynchronous event request command to the communication device, the response command comprising event information of the asynchronous event, the response command being associated with context information of the asynchronous event request command.

2. The method of claim 1, wherein, The event notification command is a response command of a non-volatile memory standard command, and before the event notification command is sent to the communication device, the method further comprises: receiving the non-volatile memory standard command of the communication device.

3. The method of claim 2, wherein, The non-volatile memory standard command is a keep-alive command or an input / output command.

4. The method according to any one of claims 1-3, characterized in that, The event notification command comprises at least one of an asynchronous event occurrence identifier or an asynchronous event number, the asynchronous event occurrence identifier indicating that an asynchronous event has occurred in the storage system, and the asynchronous event number being a number of asynchronous events that have occurred in the storage system.

5. The method according to any one of claims 1-4, characterized in that, Before the event notification command is sent to the communication device, the method further comprises: sending a capability notification command to the communication device, the capability notification command indicating that a control device in the storage system supports an asynchronous event notification capability, the asynchronous event notification capability being a capability of the control device to actively notify a communication device of an occurrence of an asynchronous event in the case of an occurrence of an asynchronous event in the storage system.

6. The method according to claim 5, characterized in that, The capability notification command is a response command of an identification command defined by a non-volatile memory standard protocol, and before the capability notification message is sent to the communication device, the method further comprises: receiving the identification command of the communication device.

7. The method according to claim 5 or 6, characterized in that, The capability notification command comprises at least one of a capability support identifier or a command type of the event notification command, the capability support identifier indicating that the control device in the storage system supports the asynchronous event notification capability.

8. An asynchronous event notification method, characterized by, The method comprises: receiving an event notification command of a control device in a storage system, the event notification command indicating that an asynchronous event has occurred in the storage system; sending an asynchronous event request command to the control device, the asynchronous event request command indicating that event information of the asynchronous event is to be acquired, the asynchronous event request command being associated with the event notification command; receiving a response command of the asynchronous event request command, the response command comprising event information of the asynchronous event.

9. The method of claim 8, wherein, The event notification command is a response command of a non-volatile memory standard command, and before the event notification command of the control device in the storage system is received, the method further comprises: sending the non-volatile memory standard command to the control device.

10. The method of claim 9, wherein, The non-volatile memory standard command is a keep-alive command or an input / output command.

11. The method according to any one of claims 8-10, characterized in that, The event notification command comprises at least one of an asynchronous event occurrence identifier or an asynchronous event number, the asynchronous event occurrence identifier indicating that an asynchronous event has occurred in the storage system, and the asynchronous event number being a number of asynchronous events that have occurred in the storage system.

12. The method of claim 11, wherein, The sending of the asynchronous event request command to the control device comprises: In the case that the event notification command comprises the asynchronous event number, the sending of the asynchronous event request command of the asynchronous event number to the control device.

13. The method according to any one of claims 8-12, characterized in that, Before the receiving of the event notification command of the control device in the storage system, the method further comprises: The receiving of the capability notification command of the control device, the capability notification command indicating that the control device supports an asynchronous event notification capability, the asynchronous event notification capability being a capability of the control device to actively notify a communication device of an occurrence of an asynchronous event in the case that the asynchronous event occurs in the storage system.

14. The method according to claim 13, characterized by, The capability notification command is a response command of an identification command defined by a non-volatile memory standard protocol, and before the receiving of the capability notification command of the control device, the method further comprises: The sending of the identification command to the control device.

15. The method according to claim 13 or 14, characterized in that, The capability notification command comprises at least one of a capability support identifier or a command type of the event notification command, the capability support identifier indicating that the control device in the storage system supports the asynchronous event notification capability.

16. A control device characterized by comprising: The device comprises: The sending module is configured to send an event notification command to a communication device, the event notification command indicating that an asynchronous event has occurred in a storage system; The receiving module is configured to receive an asynchronous event request command returned by the communication device, the asynchronous event request command indicating that event information of the asynchronous event is acquired, and the asynchronous event request command is associated with the event notification command; The sending module is further configured to send a response command of the asynchronous event request command to the communication device, the response command comprising event information of the asynchronous event, and the response command is associated with context information of the asynchronous event request command.

17. A communications device, characterized by The device comprises: The receiving module is configured to receive an event notification command of a control device in a storage system, the event notification command indicating that an asynchronous event has occurred in the storage system; The sending module is configured to send an asynchronous event request command to the control device, the asynchronous event request command indicating that event information of the asynchronous event is acquired, and the asynchronous event request command is associated with the event notification command; The receiving module is further configured to receive a response command of the asynchronous event request command, the response command comprising event information of the asynchronous event.

18. A control device characterized by comprising: The control device is applied to a storage system, and the control device comprises a processor configured to execute program code, so that the control device performs the method according to any one of claims 1 to 7.

19. A communications device, characterized by The communication device comprises a processor configured to execute program code, so that the communication device performs the method according to any one of claims 8 to 15.

20. A storage system, comprising: The storage system comprises the control device according to claim 16 or claim 18.

21. A computer-readable storage medium, characterized in that, The storage medium stores at least one program code, and the at least one program code is read by a processor to make a control device in a storage system perform the method according to any one of claims 1 to 7.

22. A computer-readable storage medium, characterized in that, The storage medium has at least one program code stored therein, and the at least one program code is read by the processor to enable the communication device to perform the method according to any one of claims 8 to 15.

Citation Information

Patent Citations

  • Message processing method, device and system

    CN108196794A

  • Storage device asynchronous event reporting method and application device thereof

    CN116303130A

  • Hard disk management method, device and equipment and machine readable storage medium

    CN117348805A

  • Method for providing asynchronous event notification in systems

    US20110271151A1

  • Storage device and event notification method for storage device

    US20170286205A1