1*6cf2a73cSMauro Carvalho Chehab===============
2*6cf2a73cSMauro Carvalho Chehabdm-queue-length
3*6cf2a73cSMauro Carvalho Chehab===============
4*6cf2a73cSMauro Carvalho Chehab
5*6cf2a73cSMauro Carvalho Chehabdm-queue-length is a path selector module for device-mapper targets,
6*6cf2a73cSMauro Carvalho Chehabwhich selects a path with the least number of in-flight I/Os.
7*6cf2a73cSMauro Carvalho ChehabThe path selector name is 'queue-length'.
8*6cf2a73cSMauro Carvalho Chehab
9*6cf2a73cSMauro Carvalho ChehabTable parameters for each path: [<repeat_count>]
10*6cf2a73cSMauro Carvalho Chehab
11*6cf2a73cSMauro Carvalho Chehab::
12*6cf2a73cSMauro Carvalho Chehab
13*6cf2a73cSMauro Carvalho Chehab	<repeat_count>: The number of I/Os to dispatch using the selected
14*6cf2a73cSMauro Carvalho Chehab			path before switching to the next path.
15*6cf2a73cSMauro Carvalho Chehab			If not given, internal default is used. To check
16*6cf2a73cSMauro Carvalho Chehab			the default value, see the activated table.
17*6cf2a73cSMauro Carvalho Chehab
18*6cf2a73cSMauro Carvalho ChehabStatus for each path: <status> <fail-count> <in-flight>
19*6cf2a73cSMauro Carvalho Chehab
20*6cf2a73cSMauro Carvalho Chehab::
21*6cf2a73cSMauro Carvalho Chehab
22*6cf2a73cSMauro Carvalho Chehab	<status>: 'A' if the path is active, 'F' if the path is failed.
23*6cf2a73cSMauro Carvalho Chehab	<fail-count>: The number of path failures.
24*6cf2a73cSMauro Carvalho Chehab	<in-flight>: The number of in-flight I/Os on the path.
25*6cf2a73cSMauro Carvalho Chehab
26*6cf2a73cSMauro Carvalho Chehab
27*6cf2a73cSMauro Carvalho ChehabAlgorithm
28*6cf2a73cSMauro Carvalho Chehab=========
29*6cf2a73cSMauro Carvalho Chehab
30*6cf2a73cSMauro Carvalho Chehabdm-queue-length increments/decrements 'in-flight' when an I/O is
31*6cf2a73cSMauro Carvalho Chehabdispatched/completed respectively.
32*6cf2a73cSMauro Carvalho Chehabdm-queue-length selects a path with the minimum 'in-flight'.
33*6cf2a73cSMauro Carvalho Chehab
34*6cf2a73cSMauro Carvalho Chehab
35*6cf2a73cSMauro Carvalho ChehabExamples
36*6cf2a73cSMauro Carvalho Chehab========
37*6cf2a73cSMauro Carvalho ChehabIn case that 2 paths (sda and sdb) are used with repeat_count == 128.
38*6cf2a73cSMauro Carvalho Chehab
39*6cf2a73cSMauro Carvalho Chehab::
40*6cf2a73cSMauro Carvalho Chehab
41*6cf2a73cSMauro Carvalho Chehab  # echo "0 10 multipath 0 0 1 1 queue-length 0 2 1 8:0 128 8:16 128" \
42*6cf2a73cSMauro Carvalho Chehab    dmsetup create test
43*6cf2a73cSMauro Carvalho Chehab  #
44*6cf2a73cSMauro Carvalho Chehab  # dmsetup table
45*6cf2a73cSMauro Carvalho Chehab  test: 0 10 multipath 0 0 1 1 queue-length 0 2 1 8:0 128 8:16 128
46*6cf2a73cSMauro Carvalho Chehab  #
47*6cf2a73cSMauro Carvalho Chehab  # dmsetup status
48*6cf2a73cSMauro Carvalho Chehab  test: 0 10 multipath 2 0 0 0 1 1 E 0 2 1 8:0 A 0 0 8:16 A 0 0
49