#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" \ "(-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 longtitude]" \ "(-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}"[Set maximum TTL (default: 30)]: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]:" \ {-h,--help}"[Print this help]:" \ "*::args:_gnu_generic" 32869774ebf8af9efe9484c597f896a7d46'/>
path: root/Documentation/devicetree
diff options
context:
space:
mode:
authorIlya Dryomov <idryomov@gmail.com>2016-07-19 03:50:28 +0200
committerIlya Dryomov <idryomov@gmail.com>2016-07-22 15:17:40 +0200
commit930c532869774ebf8af9efe9484c597f896a7d46 (patch)
tree68072d2a5c42dbf347514b8737f1abd0df044966 /Documentation/devicetree
parent92d21ac74a9e3c09b0b01c764e530657e4c85c49 (diff)
libceph: apply new_state before new_up_client on incrementals
Currently, osd_weight and osd_state fields are updated in the encoding order. This is wrong, because an incremental map may look like e.g. new_up_client: { osd=6, addr=... } # set osd_state and addr new_state: { osd=6, xorstate=EXISTS } # clear osd_state Suppose osd6's current osd_state is EXISTS (i.e. osd6 is down). After applying new_up_client, osd_state is changed to EXISTS | UP. Carrying on with the new_state update, we flip EXISTS and leave osd6 in a weird "!EXISTS but UP" state. A non-existent OSD is considered down by the mapping code 2087 for (i = 0; i < pg->pg_temp.len; i++) { 2088 if (ceph_osd_is_down(osdmap, pg->pg_temp.osds[i])) { 2089 if (ceph_can_shift_osds(pi)) 2090 continue; 2091 2092 temp->osds[temp->size++] = CRUSH_ITEM_NONE; and so requests get directed to the second OSD in the set instead of the first, resulting in OSD-side errors like: [WRN] : client.4239 192.168.122.21:0/2444980242 misdirected client.4239.1:2827 pg 2.5df899f2 to osd.4 not [1,4,6] in e680/680 and hung rbds on the client: [ 493.566367] rbd: rbd0: write 400000 at 11cc00000 (0) [ 493.566805] rbd: rbd0: result -6 xferred 400000 [ 493.567011] blk_update_request: I/O error, dev rbd0, sector 9330688 The fix is to decouple application from the decoding and: - apply new_weight first - apply new_state before new_up_client - twiddle osd_state flags if marking in - clear out some of the state if osd is destroyed Fixes: http://tracker.ceph.com/issues/14901 Cc: stable@vger.kernel.org # 3.15+: 6dd74e44dc1d: libceph: set 'exists' flag for newly up osd Cc: stable@vger.kernel.org # 3.15+ Signed-off-by: Ilya Dryomov <idryomov@gmail.com> Reviewed-by: Josh Durgin <jdurgin@redhat.com>
Diffstat (limited to 'Documentation/devicetree')