diff -Nru zfs-linux-0.6.5.6/debian/changelog zfs-linux-0.6.5.6/debian/changelog --- zfs-linux-0.6.5.6/debian/changelog 2016-04-08 09:33:23.000000000 -0500 +++ zfs-linux-0.6.5.6/debian/changelog 2016-04-12 15:01:55.000000000 -0500 @@ -1,3 +1,10 @@ +zfs-linux (0.6.5.6-0ubuntu7~rlaager1) xenial; urgency=medium + + * zfs-initramfs: Set elevator=noop on disks used by the root pool. + (LP: #1550301) + + -- Richard Laager Tue, 12 Apr 2016 15:01:38 -0500 + zfs-linux (0.6.5.6-0ubuntu6) xenial; urgency=medium * Remove adm, admin, staff groups from /etc/sudoers.d/zfs diff -Nru zfs-linux-0.6.5.6/debian/tree/zfs-initramfs/usr/share/initramfs-tools/scripts/zfs zfs-linux-0.6.5.6/debian/tree/zfs-initramfs/usr/share/initramfs-tools/scripts/zfs --- zfs-linux-0.6.5.6/debian/tree/zfs-initramfs/usr/share/initramfs-tools/scripts/zfs 2016-02-08 09:11:37.000000000 -0600 +++ zfs-linux-0.6.5.6/debian/tree/zfs-initramfs/usr/share/initramfs-tools/scripts/zfs 2016-04-12 15:00:57.000000000 -0500 @@ -67,6 +67,23 @@ Hint: Try: zpool import -f -R / -N $ZFS_RPOOL" fi + # Set elevator=noop on the root pool's vdevs' disks. ZFS already + # does this for wholedisk vdevs (for all pools), so this is only + # important for partitions. + zpool status -L "$ZFS_RPOOL" 2>/dev/null | + awk '/^\t / && !/(mirror|raidz)/ { + dev=$1; + sub(/[0-9]+$/, "", dev); + print dev + }' | + while read i + do + if [ -e "/sys/block/$i/queue/scheduler" ] + then + echo noop > "/sys/block/$i/queue/scheduler" + fi + done + # Force the mountpoint to the only correct value for a root filesystem. [ "$quiet" != "y" ] && log_begin_msg "Setting mountpoint=/ on ZFS filesystem $ZFS_BOOTFS" ZFS_STDERR=$(zfs set mountpoint=/ "$ZFS_BOOTFS" 2>&1)