veth: Dont kfree_skb() after dev_forward_skb()

In case of congestion, netif_rx() frees the skb, so we must assume
dev_forward_skb() also consume skb.

Bug introduced by commit 445409602c092
(veth: move loopback logic to common location)

We must change dev_forward_skb() to always consume skb, and veth to not
double free it.

Bug report : http://marc.info/?l=linux-netdev&m=127310770900442&w=3

Reported-by: Martín Ferrari <martin.ferrari@gmail.com>
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Zhu Yanhai <gaoyang.zyh@taobao.com>
Patch-mainline: 6ec82562ffc6f297d0de36d65776cff8e5704867

[Note] This is a mainline patch with a slightly modification to
avoid conflicts.
Rebase to ali1089.

Commit id 51e6599559469b3bedf7956c056644c110dff06a.

Signed-off-by: Tao Ma <boyu.mt@taobao.com>
TOA: Tcp Option Address for IPv4/IPv6

This patch adds a new Tcp Option as Adress, here address including IP and Port.
By this patch, the real {IP,Port} can be added into option field of TCP header,
with LVS load balancing, the backend services are still able to receive real
{IP,Port} info.

Currently TOA supports IPv4/IPv6. This patch is initially developped by
Wu Jiaming <pukong.wjm@taobao.com>, IPv6 supported by Chen Jiajun
<mofan.cjj@taobao.com>, currently maintained by Bing Tian
<bingtian.ly@taobao.com>.

Signed-off-by: Chen Jiajun <mofan.cjj@taobao.com>
Signed-off-by: Wu Jiaming <pukong.wjm@taobao.com>
Signed-off-by: Bing Tian <bingtian.ly@taobao.com>
Signed-off-by: Coly Li <bosong.ly@taobao.com>
dm-latency: move struct mapped_device from dm.c to dm.h

Because struct mapped_device will be referenced in dm-sysfs.c, move its
definition into dm.h which is included by dm-sysfs.c

Signed-off-by: Coly Li <bosong.ly@alibaba-inc.com>
Reviewed-by: Robin Dong <sanbai@alibaba-inc.com>
dm-latency: add I/O latency measurement in device mapper

This patch adds I/O latency measurement code in dm.c. The basic idea is,
1) add timestamp in struct dm_io as unsigned long start_time_usec
2) set timestamp when dm_io issued to underlaying block layer.
3) when all sub-I/O completed, calculate time difference against
start_time_usec as I/O latency.
4) account the latency to corresponding counters like,
   - latency_stats_us
   - latency_stats_ms
   - latency_stats_s

Signed-off-by: Coly Li <bosong.ly@alibaba-inc.com>
Reviewed-by: Robin Dong <sanbai@alibaba-inc.com>
dm-latency: add sysfs interface

This patch adds sysfs interface to display io latency statistic info.
3 files are used to export statistic info based on delay unit level,
- /sys/block/dm-X/dm/io_latency_us
- /sys/block/dm-X/dm/io_latency_ms
- /sys/block/dm-X/dm/io_latency_s

The statistic counter is increasing only, a user space application
should calculate "delta" value for a sampling interval.

Signed-off-by: Coly Li <bosong.ly@alibaba-inc.com>
Reviewed-by: Robin Dong <sanbai@alibaba-inc.com>
dm-latency: add reset function to dm-latency in sysfs interface

Now echo any thing into /sys/block/dm-X/dm/io_latency_reset may
reset all counters in /sys/block/dm-X/dm/io_latency_{s,ms, us} to 0.

This function might be helpful to application developers.

Signed-off-by: Coly Li <bosong.ly@alibaba-inc.com>
Reviewed-by: Robin Dong <sanbai@alibaba-inc.com>
Merge pull request #7 from colyli/master

dm-latency
Update KGTP to 20130706
Merge pull request #8 from teawater/master

Update KGTP to 20130706
Merge pull request #10 from Rover-Yu/hotfixes.master

pull request for hotfixes
hotfixes: 'add 0xffffffffffffffHH,%rsp' support in tiny disassembler