]> git.baikalelectronics.ru Git - kernel.git/commit
net/sched: sch_plug - Queue traffic until an explicit release command
authorShriram Rajagopalan <rshriram@cs.ubc.ca>
Sun, 5 Feb 2012 13:51:32 +0000 (13:51 +0000)
committerDavid S. Miller <davem@davemloft.net>
Tue, 7 Feb 2012 17:54:56 +0000 (12:54 -0500)
commit7660d38049c37b685451f3c65031e419a4ca0c57
tree18e5635982b69c7d8369e441d3233c437d2262df
parent649120338ab31bb2f21dcb23625925590b0624f9
net/sched: sch_plug - Queue traffic until an explicit release command

The qdisc supports two operations - plug and unplug. When the
qdisc receives a plug command via netlink request, packets arriving
henceforth are buffered until a corresponding unplug command is received.
Depending on the type of unplug command, the queue can be unplugged
indefinitely or selectively.

This qdisc can be used to implement output buffering, an essential
functionality required for consistent recovery in checkpoint based
fault-tolerance systems. Output buffering enables speculative execution
by allowing generated network traffic to be rolled back. It is used to
provide network protection for Xen Guests in the Remus high availability
project, available as part of Xen.

This module is generic enough to be used by any other system that wishes
to add speculative execution and output buffering to its applications.

This module was originally available in the linux 2.6.32 PV-OPS tree,
used as dom0 for Xen.

For more information, please refer to http://nss.cs.ubc.ca/remus/
and http://wiki.xensource.com/xenwiki/Remus

Changes in V3:
  * Removed debug output (printk) on queue overflow
  * Added TCQ_PLUG_RELEASE_INDEFINITE - that allows the user to
    use this qdisc, for simple plug/unplug operations.
  * Use of packet counts instead of pointers to keep track of
    the buffers in the queue.

Signed-off-by: Shriram Rajagopalan <rshriram@cs.ubc.ca>
Signed-off-by: Brendan Cully <brendan@cs.ubc.ca>
[author of the code in the linux 2.6.32 pvops tree]
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/pkt_sched.h
net/sched/Kconfig
net/sched/Makefile
net/sched/sch_plug.c [new file with mode: 0644]