+ If driver supports busy-polling, it tags each packet with
+ the receiving NAPI context, and kernel tags sockets
+ </li>
+ <li>
+ When busy-polling is enabled, <tt>poll()</tt>
+ and <tt>recv()</tt> call the driver's busy poll function to
+ check for packets synchronously (up to some time limit)
+ </li>
+ <li>
+ If the response usually arrives quickly, this reduces overall
+ request/response latency as there are no context switches and
+ power transitions
+ </li>
+ <li>
+ Time limit set by sysctl (<tt>net.busy_poll</tt>,
+ <tt>net.busy_read</tt>) or socket option (<tt>SOL_SOCKET,
+ SO_BUSY_POLL</tt>); requires tuning
+ </li>
+ </ul>
+</div>
+
+<div class="slide">
+ <h1>Btrfs offline dedupe [3.12]</h1>
+ <ul class="incremental">
+ <li>
+ Btrfs generally does COW rather than updating in-place, allowing
+ snapshots and file copies to defer the actual copying and save
+ space
+ </li>
+ <li>
+ Filesystems may still end up with multiple copies of the same
+ file content
+ </li>
+ <li>
+ Btrfs doesn't actively merge these duplicates, but userland can
+ tell it to do so
+ </li>
+ <li>
+ Many file dedupe tools are packaged for Debian, but not one that
+ works with this Btrfs feature, e.g. bedup
+ </li>
+ </ul>
+</div>
+
+<div class="slide">
+ <h1>nftables [3.13]</h1>
+ <ul class="incremental">
+ <li>
+ Linux has several firewall APIs - iptables, ip6tables, arptables
+ and ebtables
+ </li>
+ <li>
+ All require a specific kernel module for each type of match
+ and each possible action
+ </li>
+ <li>
+ Userland could only use the four protocol-specific APIs,
+ although the internal netfilter API is more flexible
+ </li>
+ <li>
+ nftables exposes more of this flexibility, allowing userland
+ to provide firewall code for a specialised VM (similar to BPF)
+ </li>
+ <li>
+ nftables userland tool uses this API and is already packaged
+ </li>
+ <li>
+ Eventually, the old APIs will be removed and the old userland
+ tools must be ported to use nftables
+ </li>
+ </ul>
+</div>
+
+<div class="slide">
+ <h1>User-space lockdep [3.14]</h1>
+ <ul>
+ <li>
+ Kernel threads and interrupts all run in same address space,
+ using several different synchronisation mechanisms
+ </li>
+ <li>
+ Easy to introduce bugs that can result in deadlock, but hard to
+ reproduce them
+ </li>
+ <li>
+ Kernel's 'lockdep' system dynamically tracks locking operations
+ and detects <em>potential</em> deadlocks
+ </li>
+ <li>
+ Now available as a userland library! Except we need to package
+ it (build from linux-tools source package)
+ </li>
+ </ul>
+</div>
+
+<div class="slide">
+ <h1>arm64 and ppc64el ports</h1>
+ <ul class="incremental">
+ <li>
+ 'arm64' architecture was added in Linux 3.7, but was not yet
+ usable, and no real hardware was available at the time
+ </li>
+ <li>
+ Upstream Linux arm64 kernel, and Debian packages, should now run
+ on emulators and real hardware