#compdef astraceroute # # astraceroute.zsh -- zsh completion function for astraceroute # # Copyright (C) 2013 Hideo Hattori # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 as # published by the Free Software Foundation. typeset -A opt_args _interfaces () { _wanted interfaces expl 'network interface' \ _net_interfaces _values "Pseudo-device that captures on all interfaces" "any" } _arguments -s -S \ "(-H --host)"{-H,--host}"[Host/IPv4/IPv6 to lookup AS route to]:host:_hosts" \ "(-p --port)"{-p,--port}"[Hosts port to lookup AS route to]:port:_gnu_generic" \ "(-i -d --dev)"{-i,-d,--dev}"[Networking device i.e., eth0]:device:_interfaces" \ "(-b --bind)"{-b,--bind}"[IP address to bind to, Must specify -6 for an IPv6 address]" \ "(-4 --ipv4)"{-4,--ipv4}"[Use IPv4 requests (default)]" \ "(-6 --ipv6)"{-6,--ipv6}"[Use IPv6 requests]" \ "(-n --numeric)"{-n,--numeric}"[Do not do reverse DNS lookup for hops]" \ "(-u --update)"{-u,--update}"[Update GeoIP databases]" \ "(-L --latitude)"{-L,--latitude}"[Show latitude and longitude]" \ "(-N --dns)"{-N,--dns}"[Do a reverse DNS lookup for hops]" \ "(-f --init-ttl)"{-f,--init-ttl}"[Set initial TTL]:ttl:_gnu_generic" \ "(-m --max-ttl)"{-m,--max--ttl}"[Set maximum TTL]:ttl:_gnu_generic" \ "(-q --num-probes)"{-q,--num-probes}"[Number of max probes for each hop (default: 3)]:num:_gnu_generic" \ "(-x --timeout)"{-x,--timeout}"[Probe response timeout in sec (default: 3)]:timeout:_gnu_generic" \ "(-S --syn)"{-S,--syn}"[Set TCP SYN flag in packets]" \ "(-A --ack)"{-A,--ack}"[Set TCP ACK flag in packets]" \ "(-F --fin)"{-F,--fin}"[Set TCP FIN flag in packets]" \ "(-P --psh)"{-P,--psh}"[Set TCP PSH flag in packets]" \ "(-U --urg)"{-U,--urg}"[Set TCP URG flag in packets]" \ "(-R --rst)"{-R,--rst}"[Set TCP RST flag in packets]" \ "(-E --ecn-syn)"{-E,--ecn-syn}"[Send ECN SYN packets (RFC3168)]" \ "(-t --tos)"{-t,--tos}"[Set the IP TOS field]:tos:_gnu_generic" \ "(-G --nofrag)"{-G,--nofrag}"[Set do not fragment bit]" \ "(-X --payload)"{-X,--payload}"[Specify a payload string to test DPIs]:string:_gnu_generic" \ "(-Z --show-packet)"{-Z,--show-packet}"[Show returned packet on each hop]" \ "(-l --totlen)"{-l,--totlen}"[Specify total packet len]:lengths:_gnu_generic" \ {-v,--version}"[Print version and exit]:" \ {-h,--help}"[Print help and exit]:" \ "*::args:_gnu_generic" '>
context:
space:
mode:
authorChuck Lever <chuck.lever@oracle.com>2016-09-06 11:22:58 -0400
committerTrond Myklebust <trond.myklebust@primarydata.com>2016-09-06 15:59:35 -0400
commit05c974669ecec510a85d8534099bb75404e82c41 (patch)
tree8f35a5f3dfa7f9b98781c1026e17b26c5e716097
parent78d506e1b7071b24850fd5ac22b896c459b0a04c (diff)
xprtrdma: Fix receive buffer accounting
An RPC can terminate before its reply arrives, if a credential problem or a soft timeout occurs. After this happens, xprtrdma reports it is out of Receive buffers. A Receive buffer is posted before each RPC is sent, and returned to the buffer pool when a reply is received. If no reply is received for an RPC, that Receive buffer remains posted. But xprtrdma tries to post another when the next RPC is sent. If this happens a few dozen times, there are no receive buffers left to be posted at send time. I don't see a way for a transport connection to recover at that point, and it will spit warnings and unnecessarily delay RPCs on occasion for its remaining lifetime. Commit 1e465fd4ff47 ("xprtrdma: Replace send and receive arrays") removed a little bit of logic to detect this case and not provide a Receive buffer so no more buffers are posted, and then transport operation continues correctly. We didn't understand what that logic did, and it wasn't commented, so it was removed as part of the overhaul to support backchannel requests. Restore it, but be wary of the need to keep extra Receives posted to deal with backchannel requests. Fixes: 1e465fd4ff47 ("xprtrdma: Replace send and receive arrays") Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Reviewed-by: Anna Schumaker <Anna.Schumaker@Netapp.com> Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
Diffstat