summary refs log tree commit diff
path: root/pkgs/tools/filesystems
diff options
context:
space:
mode:
authorMichael Raskin <7c6f434c@mail.ru>2014-09-03 10:11:18 +0400
committerMichael Raskin <7c6f434c@mail.ru>2014-09-03 10:11:41 +0400
commit74343ca3abe9968e1f59eda56627023a07270440 (patch)
tree1dc088c0977fa53600430a853ebadd88874d4eae /pkgs/tools/filesystems
parent9f37c1497425e48ca3c29d9f8c62bb11116a7c89 (diff)
downloadnixlib-74343ca3abe9968e1f59eda56627023a07270440.tar
nixlib-74343ca3abe9968e1f59eda56627023a07270440.tar.gz
nixlib-74343ca3abe9968e1f59eda56627023a07270440.tar.bz2
nixlib-74343ca3abe9968e1f59eda56627023a07270440.tar.lz
nixlib-74343ca3abe9968e1f59eda56627023a07270440.tar.xz
nixlib-74343ca3abe9968e1f59eda56627023a07270440.tar.zst
nixlib-74343ca3abe9968e1f59eda56627023a07270440.zip
Fix handling of paths with multuple mounts — for example rootfs first mount for /
Diffstat (limited to 'pkgs/tools/filesystems')
-rw-r--r--pkgs/tools/filesystems/btrfsprogs/default.nix2
-rw-r--r--pkgs/tools/filesystems/btrfsprogs/multiple_mounts.patch13
2 files changed, 15 insertions, 0 deletions
diff --git a/pkgs/tools/filesystems/btrfsprogs/default.nix b/pkgs/tools/filesystems/btrfsprogs/default.nix
index 02f214ad430e..79566d15bb9a 100644
--- a/pkgs/tools/filesystems/btrfsprogs/default.nix
+++ b/pkgs/tools/filesystems/btrfsprogs/default.nix
@@ -16,6 +16,8 @@ stdenv.mkDerivation rec {
     asciidoc xmlto docbook_xml_dtd_45 docbook_xsl libxslt
   ];
 
+  patches = [ ./multiple_mounts.patch ];
+
   # for btrfs to get the rpath to libgcc_s, needed for pthread_cancel to work
   NIX_CFLAGS_LINK = "-lgcc_s";
 
diff --git a/pkgs/tools/filesystems/btrfsprogs/multiple_mounts.patch b/pkgs/tools/filesystems/btrfsprogs/multiple_mounts.patch
new file mode 100644
index 000000000000..0ba6550a2d3b
--- /dev/null
+++ b/pkgs/tools/filesystems/btrfsprogs/multiple_mounts.patch
@@ -0,0 +1,13 @@
+Only in btrfs-progs-v3.16-orig: btrfs-progs-v3.16
+diff -U3 -r btrfs-progs-v3.16-orig/utils.c btrfs-progs-v3.16/utils.c
+--- btrfs-progs-v3.16-orig/utils.c	2014-09-03 09:57:45.644858545 +0400
++++ btrfs-progs-v3.16/utils.c	2014-09-03 09:59:26.968855663 +0400
+@@ -2360,7 +2360,7 @@
+ 		len = strlen(ent->mnt_dir);
+ 		if (strncmp(ent->mnt_dir, path, len) == 0) {
+ 			/* match found */
+-			if (longest_matchlen < len) {
++			if ((longest_matchlen < len) || (longest_matchlen==len && not_btrfs)) {
+ 				free(longest_match);
+ 				longest_matchlen = len;
+ 				longest_match = strdup(ent->mnt_dir);