3 # We don't have any prerequisites
10 for x
in $
(cat /proc
/cmdline
); do
16 nbdrootdev
="${x#root=}"
17 nbdbasedev
="${x#root=/dev/}"
22 # if nbd root is not requested exit early and silently
23 if [ -z "${nbdroot}" ]; then
29 log_begin_msg
"Setting up nbd-client"
34 # Support setting stuff using DHCP by overloading 'option root-path'
43 nbdroot
="${x#nbdroot=}"
44 nbdsrv
="${nbdroot%%,*}"
45 nbdport
="${nbdroot%,*}"
46 nbdport
="${nbdport##*,}"
47 # root= parameter overrides three-option nbdroot= parameter
48 if [ -z "$nbdrootdev" ]
50 nbdbasedev
="${nbdroot##*,}"
51 nbdrootdev
=/dev
/$nbdbasedev
55 nbdroot
="${x#nbdroot=}"
56 nbdsrv
="${nbdroot%,*}"
57 nbdport
="${nbdroot#*,}"
61 nbdrootdev
=${nbdrootdev%p*}
62 nbdbasedev
=${nbdbasedev%p*}
64 if [ -z "$nbdport" -o -z "$nbdrootdev" ]
66 log_failure_msg
"Insufficient information to set up nbd, quitting (nbdsrv=$nbdsrv nbdport=$nbdport nbdroot=$nbdroot root=$nbdrootdev)"
70 nondigits
=$
(echo $nbdport |
sed -e 's/[0-9]//g')
71 if [ ! -z "$nondigits" ]
73 # non-numeric characters, assume a name rather than a port
77 # Support setting the server's IP address by overloading 'option
78 # root-server'. This is separate from the "ROOTPATH" grabbing above, in
79 # that here we only specify the server's IP address through DHCP, but
80 # expect everything else to be set through the kernel's command line.
81 # Netbooting is a can of worms.
82 if [ "$nbdsrv" = "dhcp" ]
89 log_failure_msg
"Insufficient information to set up nbd, quitting (nbdsrv=$nbdsrv nbdport=$nbdport nbdroot=$nbdroot root=$nbdrootdev)"
93 /sbin
/nbd-client
$nbdsrv $nbdport $nbdrootdev -persist
94 # This should be removed once the cfq scheduler no longer deadlocks nbd
96 if grep '\[cfq\]' /sys
/block
/$nbdbasedev/queue
/scheduler
>/dev
/null
98 echo deadline
> /sys
/block
/$nbdbasedev/queue
/scheduler