IP Library › Granted Patent US 12,613,647
Granted Patent B2
US 12,613,647 · App. 18/590,268 · Granted Apr 28, 2026

I/O request processing method, apparatus, and system, device, and storage medium

Inventors: Shuo Liu (Shenzhen, CN); Junyi Zhang (Waterloo, CA); Qiaoling Wang (Shenzhen, CN); Peng Zhang (Chengdu, CN)
Assignee: HUAWEI TECHNOLOGIES CO., LTD.
G06F3/0635G06F3/0604G06F3/067
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,613,647
App. No.
18/590,268
Granted
Apr 28, 2026
Kind
B2
Abstract

An input/output (I/O) request processing method includes: receiving a target I/O request, where the target I/O request carries a destination address and a target logical block address, and the destination address is a node address of a first storage node; determining, based on a preset correspondence between a logical block address and a storage node, a second storage node corresponding to the target logical block address; if the second storage node is inconsistent with the first storage node, modifying the destination address in the target I/O request to a node address of the second storage node, to obtain a target I/O request having a modified destination address; and sending the target I/O request having the modified destination address.

Claims (82)

1 . A method comprising:

receiving a first target input/output (I/O) request, wherein the first target I/O request carries a first destination address and a target logical block address, and wherein the first destination address is a first node address of a first storage node;

determining, based on a preset correspondence between a logical block address and a storage node, a second storage node corresponding to the target logical block address;

modifying, when if the second storage node is not the first storage node, the first destination address in the first target I/O request to a second node address of the second storage node, to obtain a second target I/O request; and

sending the second target I/O request to the second storage node.

2 . The method according to claim 1 , wherein modifying the first destination address in the first target I/O request to obtain the second target I/O request comprises adding the first node address to the first target I/O request, wherein the second target I/O request indicates to the second storage node to perform, based on the second target I/O request, I/O request processing and send, based on the first node address, a first I/O request processing completion notification to the first storage node.

3 . The method according to claim 2 , further comprising:

adding a processed identifier to the first target I/O request to obtain a third target I/O request;

sending the third target I/O request to the first storage node, wherein the processed identifier indicates to the first storage node to skip performing the I/O request processing on the third target I/O request and send a second I/O request processing completion notification based on the first I/O request processing completion notification;

receiving the second I/O request processing completion notification from the first storage node; and

forwarding the second I/O request processing completion notification to a client device associated with the first target I/O request.

4 . The method according to claim 3 , further comprising:

determining whether the first target I/O request is an immediate data write request;

determining, when the first target I/O request is the immediate data write request, write request information corresponding to the immediate data write request, wherein the write request information comprises a first source address of the immediate data write request, a second destination address of the immediate data write request, and a first sequence number range of at least one write data packet corresponding to the immediate data write request;

obtaining, when receiving a non-I/O request packet, a second source address, a third destination address, and a second sequence number of the non-I/O request packet;

determining, based on the write request information, whether the non-I/O request packet is a write data packet corresponding to the immediate data write request;

modifying, when the non-I/O request packet is the write data packet, a fourth destination address of the write data packet to the second node address to obtain a modified write data packet; and

sending the modified write data packet to the second storage node.

5 . The method according to claim 4 , wherein the immediate data write request carries a channel connection identifier for establishing a channel connection using a remote direct memory access (RDMA) protocol between the client device and the second storage node.

6 . The method according to claim 4 , wherein modifying, when the non-I/O request packet is the write data packet, the fourth destination address of the write data packet to obtain the modified write data packet comprises:

copying the write data packet to obtain a copy of the write data packet; and

modifying the fourth destination address in the copy of the write data packet to the second node address to obtain the modified write data packet.

7 . The method according to claim 4 , further comprising:

removing, when the non-I/O request packet is the write data packet, write data carried in the write data packet to obtain a reduced write data packet comprising only header information corresponding to the write data packet; and

sending the reduced write data packet to the first storage node.

8 . The method according to claim 1 , further comprising:

receiving a submission queue entry (SQE) packet comprising an SQE field; and

determining that the SQE packet comprises the first target I/O request based on metadata of a command carried by a first four bytes in the SQE field.

9 . The method according to claim 1 , further comprising sending, when the second storage node is the first storage node, the first target I/O request to the first storage node.

10 . The method according to claim 1 , further comprising adding a forwarded identifier to the second target I/O request to indicate that the second target I/O request is an I/O request with a destination address that was modified from the first node address to the second node address.

11 . A system comprising:

a first storage node;

a second storage node; and

a network forwarding device configured to:

receive a first target I/O request, wherein the first target I/O request carries a first destination address and a target logical block address, and wherein the first destination address is a first node address of the first storage node;

determine, based on a preset correspondence between a logical block address and a storage node, the second storage node corresponding to the target logical block address;

modify, when the second storage node is not the first storage node, the first destination address in the first target I/O request to a second node address of the second storage node, to obtain a second target I/O request;

send the second target I/O request to the second storage node; and

send a third target I/O request to the first storage node,

wherein the second storage node is configured to:

receive the second target I/O request from the network forwarding device;

perform I/O request processing based on the second target I/O request; and

send, after completing the I/O request processing and using the first node address, a first I/O request processing completion notification to the first storage node, and

wherein the first storage node is configured to:

receive the third target I/O request;

add a processed identifier to the third target I/O request;

receive the first I/O request processing completion notification from the second storage node; and

send a second I/O request processing completion notification to the network forwarding device in response to receiving the first I/O request processing completion notification.

12 . The system according to claim 11 , wherein the first storage node is further configured to:

determine whether the third target I/O request is an immediate data write request;

determine, when the third target I/O request is the immediate data write request, write request information corresponding to the immediate data write request, wherein the write request information comprises a first source address of the immediate data write request, a second destination address of the immediate data write request, and a packet identifier range corresponding to a plurality of write data packets corresponding to the immediate data write request;

receive a non-I/O request packet;

obtain, based on the non-I/O request packet, a second source address, a third destination address, and a sequence number of the non-I/O request packet;

determine, based on the write request information, whether the non-I/O request packet is a write data packet of the plurality of write data packets; and

skip, when the non-I/O request packet is the write data packet, processing of the write data packet.

13 . A network forwarding device comprising:

a memory configured to store computer instructions; and

a processor configured to execute the computer instructions to cause the network forwarding device to:

receive a first target input/output (I/O) request, wherein the first target I/O request carries a first destination address and a target logical block address, and wherein the first destination address is a first node address of a first storage node;

determine, based on a preset correspondence between a logical block address and a storage node, a second storage node corresponding to the target logical block address;

modify, when the second storage node is not the first storage node, the first destination address in the first target I/O request to a second node address of the second storage node, to obtain a second target I/O request; and

send the second target I/O request to the second storage node.

14 . The network forwarding device according to claim 13 , wherein the computer instructions to modify the first destination address in the first target I/O request to the second node address to obtain the second target I/O request comprises instructions to:

add the first node address to the first target I/O request, wherein the second target I/O request indicates to the second storage node to perform, based on the second target I/O request, I/O request processing and send, using the first node address, a first I/O request processing completion notification to the first storage node.

15 . The network forwarding device according to claim 14 , wherein the processor further executes the computer instructions to cause the network forwarding device to:

add a processed identifier to the first target I/O request, to obtain a third target I/O request;

send the third target I/O request to the first storage node, wherein the processed identifier indicates to the first storage node to skip performing the I/O request processing on the third target I/O request and send a second I/O request processing completion notification based on the first I/O request processing completion notification;

receive the second I/O request processing completion notification from the first storage node; and

forward the second I/O request processing completion notification to a client device associated with the first target I/O request.

16 . The network forwarding device according to claim 15 , wherein the processor further executes the computer instructions to cause the network forwarding device to:

determine whether the first target I/O request is an immediate data write request;

determine, when the first target I/O request is the immediate data write request, write request information corresponding to the immediate data write request, wherein the write request information comprises a first source address of the immediate data write request, a second destination address of the immediate data write request, and a first sequence number range of at least one write data packet corresponding to the immediate data write request;

obtain, when receiving a non-I/O request packet, a second source address, a third destination address, and a second sequence number of the non-I/O request packet;

determine, based on the write request information, whether the non-I/O request packet is a write data packet corresponding to the immediate data write request;

modify, when the non-I/O request packet is the write data packet, a fourth destination address of the write data packet to the second node address to obtain a modified write data packet; and

send the modified write data packet to the second storage node.

17 . The network forwarding device according to claim 16 , wherein the immediate data write request carries a channel connection identifier for establishing a channel connection using a remote direct memory access (RDMA) protocol between the client device and the second storage node.

18 . The network forwarding device according to claim 13 , wherein the processor is further configured to execute the computer instructions to cause the network forwarding device to:

receive a submission queue entry (SQE) packet comprising an SQE field; and

determine that the SQE packet comprises the first target I/O request based on metadata of a command carried by a first four bytes in the SQE field.

19 . The network forwarding device according to claim 13 , wherein the processor is further configured to execute the computer instructions to cause the network forwarding device to send, when the second storage node is the first storage node, the first target I/O request to the first storage node.

20 . The network forwarding device according to claim 13 , wherein the processor is further configured to executes the computer instructions to cause the network forwarding device to add a forwarded identifier to the second target I/O request to indicate that the second target I/O request is an I/O request with a destination address that was modified from the first node address to the second node address.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 18, 2024
From: LIU, SHUO; ZHANG, JUNYI; WANG, QIAOLING; ZHANG, PENG
To: HUAWEI TECHNOLOGIES CO., LTD.
Reel/Frame 068018/0212 →
Priority Claims (1)
CN 202111013237.X · Aug 31, 2021 · national
Continuity (2)
Continuation PCTCN2022115524 · Aug 29, 2022
Related Publication 20240201881A1 · Jun 20, 2024
References Cited (7)
US 11048644B1 · Volpe · 2021 [cited by examiner]
US 11474719B1 · Sular · 2022 [cited by examiner]
US 20150039792A1 · Spry · 2015 [cited by applicant]
US 20200250080A1 · Yao · 2020 [cited by examiner]
CN 113315845A · 2021 [cited by applicant]
China Academy of Telecommunication Research of MIIT (CAICT), In-memory database white paper, CCSA TC60, Jun. 2019, total 99 pages. [cited by applicant]
NVM Express Revision 1.4b, NVM Express Base Specification, Sep. 21, 2020, total 406 pages. [cited by applicant]