diff --git a/util-linux-swapon-btrfs-limitations b/util-linux-swapon-btrfs-limitations
new file mode 100644
index 0000000..59722da
--- /dev/null
+++ b/util-linux-swapon-btrfs-limitations
@@ -0,0 +1,42 @@
+From: Jeff Mahoney <jeffm@suse.com>
+Subject: swapon: Document btrfs limitation with swapfiles
+References: bnc#616617
+
+ Btrfs, as of 2.6.35, is unable to allow swapfiles to be used on its
+ filesystems. This is due to the swapfile implementation wanting to build
+ an extent map of each block in the file and expecting it to be static
+ for the life of the swapfile.
+
+ Btrfs can't guarantee this and refuses to return the mapping. The swapfile
+ implementation just makes a comment about there being holes in the file -
+ but that's how btrfs denies the mapping.
+
+ This patch adds a section to the swapon manpage to document it.
+
+Signed-off-by: Jeff Mahoney <jeffm@suse.com>
+
+---
+ mount/swapon.8 |   12 ++++++++++++
+ 1 file changed, 12 insertions(+)
+
+--- a/mount/swapon.8
++++ b/mount/swapon.8
+@@ -167,6 +167,18 @@ automatically detects and rewrites swap
+ suspend data (e.g S1SUSPEND, S2SUSPEND, ...). The problem is that if we don't
+ do it, then we get data corruption the next time an attempt at unsuspending is
+ made.
++.PP
++.B swapon
++may not work correctly when using a swap file with some versions of btrfs.
++This is due to the swap file implementation in the kernel expecting to be able
++to write to the file directly, without the assistance of the file system.
++Since btrfs is a copy-on-write file system, the file location may not be
++static and corruption can result. Btrfs actively disallows the use of files
++on its file systems by refusing to map the file. This can be seen in the system
++log as "swapon: swapfile has holes." One possible workaround is to map the
++file to a loopback device. This will allow the file system to determine the
++mapping properly but may come with a performance impact.
++
+ .SH SEE ALSO
+ .BR swapon (2),
+ .BR swapoff (2),
diff --git a/util-linux.changes b/util-linux.changes
index 9732cbd..d84ec7b 100644
--- a/util-linux.changes
+++ b/util-linux.changes
@@ -1,3 +1,13 @@
+-------------------------------------------------------------------
+Thu Jun 24 23:24:41 CEST 2010 - jeffm@suse.de
+
+- document btrfs limitation with swapfiles (bnc#616617)
+
+-------------------------------------------------------------------
+Tue Jun 22 16:48:29 UTC 2010 - bg@novell.com
+
+- hppa specific binaries are parisc{,32,64}
+
 -------------------------------------------------------------------
 Tue Jun  1 14:23:23 UTC 2010 - puzel@novell.com
 
diff --git a/util-linux.spec b/util-linux.spec
index 1de8871..a18e67c 100644
--- a/util-linux.spec
+++ b/util-linux.spec
@@ -27,7 +27,7 @@ License:        GPLv2+
 Group:          System/Base
 AutoReqProv:    on
 Version:        2.17.2
-Release:        4
+Release:        5
 Recommends:     %name-lang = %{version}
 Summary:        A collection of basic system utilities
 Source:         ftp://ftp.kernel.org/pub/linux/utils/util-linux-ng/v%{version}/%name-ng-%{version}.tar.bz2
@@ -75,6 +75,7 @@ Patch4:         util-linux-2.17.1-losetup-honor-documented-c-option
 Patch5:         util-linux-addpart-use-atoll.patch
 # bnc#481123
 Patch6:         util-linux-mount-detect-ro-mount.patch
+Patch7:         util-linux-swapon-btrfs-limitations
 ##
 ## adjtimex
 ##
@@ -165,6 +166,7 @@ unique IDs (UUIDs).
 %patch4 -p1
 %patch5 -p1
 %patch6 -p1
+%patch7 -p1
 #
 cd adjtimex-*
 %patch50 -p1
@@ -349,10 +351,10 @@ rm -f $RPM_BUILD_ROOT%{_mandir}/man8/fdisk.8*
 %find_lang %{name}-ng %{name}.lang
 # create list of setarch(8) symlinks
 find  $RPM_BUILD_ROOT%{_bindir}/ -regextype posix-egrep -type l \
-  -regex ".*(linux32|linux64|s390|s390x|i386|ppc|ppc64|ppc32|sparc|sparc64|sparc32|sparc32bash|mips|mips64|mips32|ia64|x86_64)$" \
+  -regex ".*(linux32|linux64|s390|s390x|i386|ppc|ppc64|ppc32|sparc|sparc64|sparc32|sparc32bash|mips|mips64|mips32|ia64|x86_64|parisc|parisc32|parisc64)$" \
   -printf "%{_bindir}/%f\n" >> %{name}.files
 find  $RPM_BUILD_ROOT%{_mandir}/man8 -regextype posix-egrep  \
-  -regex ".*(linux32|linux64|s390|s390x|i386|ppc|ppc64|ppc32|sparc|sparc64|sparc32|sparc32bash|mips|mips64|mips32|ia64|x86_64)\.8.*" \
+  -regex ".*(linux32|linux64|s390|s390x|i386|ppc|ppc64|ppc32|sparc|sparc64|sparc32|sparc32bash|mips|mips64|mips32|ia64|x86_64|parisc|parisc32|parisc64)\.8.*" \
   -printf "%{_mandir}/man8/%f*\n" >> %{name}.files
 
 %clean