From 48e92a6469fd536066b3d85ffab4bf32de224379 Mon Sep 17 00:00:00 2001 From: Mario Fetka Date: Tue, 4 Dec 2012 20:53:25 +0100 Subject: [PATCH] backport arm alignment patch Package-Manager: portage-2.2.0_alpha142 RepoMan-Options: --force --- sys-fs/btrfs-progs/Manifest | 5 +- .../btrfs-progs-0.19_p120221.ebuild | 96 ----------- .../btrfs-progs/btrfs-progs-0.20_rc1.ebuild | 69 ++++++++ ...2-Btrfs-progs-fix-unaligned-accesses.patch | 156 ++++++++++-------- 4 files changed, 156 insertions(+), 170 deletions(-) delete mode 100644 sys-fs/btrfs-progs/btrfs-progs-0.19_p120221.ebuild create mode 100644 sys-fs/btrfs-progs/btrfs-progs-0.20_rc1.ebuild diff --git a/sys-fs/btrfs-progs/Manifest b/sys-fs/btrfs-progs/Manifest index b0b2186..feb65db 100644 --- a/sys-fs/btrfs-progs/Manifest +++ b/sys-fs/btrfs-progs/Manifest @@ -1,6 +1,7 @@ AUX 0001-btrfs-progs-unstable-darksatanic-repo-fix-arg-checki.patch 1134 SHA256 ff60cc070419b79060b44453c87e079cf55f25b4e4c12191f0f1188a1529da26 SHA512 ca20b5e8ac6fcb8cb53eebbfea6ee016b362626850c9414118d8f971aec7d5884936a9aa16b32c84368aa73986eb5a21291117f428b62a39782c163ffdb25592 WHIRLPOOL c164f2afe9c895fb25bc940e216c206271a7950327fc1ae8a77dcda07948512a6bf06677f7dc01c8000218465fc3cf9995867011a090dabffab56c10f4ebe560 AUX 0002-btrfs-progs-ignore-unavailable-loop-device-source-files.patch 1854 SHA256 ba9b505ce439db0446dad0624a18bea18873edb46f2ceab38af595d3c536892b SHA512 74802b92fe537df3fe21dfd4c1aa6f0a21eabf68307162246947ed088dca0feae5f72fd5b0a31a2f1b980eca3a9c9aa6faa1beeb7a4f863845867ccc7cb7e11d WHIRLPOOL c4678da21e822f0671f0a4b576fe4d81febe42de5ef59459f9812f4cfd787ee197e363a0865d4050a578f7282c584fe66d3b9299b8b1517f1270b2af58a0c4eb AUX btrfs-progs-Modify-Makefile-to-allow-optional-ACL-dependency.patch 1202 SHA256 7531469b262250d24198e853ce4b042f47fe23bc226d56af58e0bbc14e255ca7 SHA512 0f92d6e272b9c9c294040f902fed94f512a3cff6798d846cc4f095b0059fa5cff9eef7a6708a18950c37df1a566170ba53783543a1ef9492f921b4b207803ab1 WHIRLPOOL 605432f47fa8ea5be9203749477fd7c38231a490004da4573ea8563c616586fe38dce91c2aaf9dd8f774eb5c2a9c5e0fb5cc11be31059203ad9c6db6269c9957 -AUX v2-Btrfs-progs-fix-unaligned-accesses.patch 7864 SHA256 7d1b12bc5b7a53b533be2ebffef85d4a52c0f5783e106792ab545a119d5268db SHA512 d15fb6cee4e11177b463f65ea348a4f2bc3c3f6266746a3bb7be462d823e0fd97424f45e424f19889921371a5375f893600deb95e12114011da71d2f960af763 WHIRLPOOL 00258832256a29670aa7e0bd55afc37d8fdcec7e919d50fb45a1381f658863e6ca83f5c3e284a91d7037c33d8c93e223061c598f798cd2189ed4ec1432f4c5ba -EBUILD btrfs-progs-0.19_p120221.ebuild 2643 SHA256 c7beaf743f022989c47ee6abccd98faa90860dc2516ad3cea699190a525ce1fb SHA512 4853b4e2bfacc470505ec30b45bd57dc1551d4d5929512d83fab001c66fec8800eb45f7a26e203bdc6aecc8d30fc322c669e7a5ad1d38fb2867eba9a10fbb42a WHIRLPOOL 768fbc61fa2a5841581ed10eb912af1240d333bc2fddb5b3cdf2d4cbbc058a1ad0155114559fa3b0d72fc524acbfcc40ccabf096aca087dd6c8130fbaf47176f +AUX v2-Btrfs-progs-fix-unaligned-accesses.patch 7957 SHA256 2b5b47d0ad1b68e055932e8375cf258b8e69d852c287fa2731a5aff231aa92bc SHA512 238d14df2924566668300a3046ceec9754464795b78a1b194563de881ca0fe2274eb1e172cf55d6765d7ac8c5e6b14a9e7348b383834763ca6c7ae278c628b47 WHIRLPOOL 2f6c3bf2ed24d269a7a123235ba8581318cda652d7794d299de115346a04b3f70a3191c2b103c6b06bd29c3701fa9e6d4cd233742035d39496f384490eb3eba0 +DIST btrfs-progs-0.20-rc1.tar.gz 246563 SHA256 73383b6de89dbd1e93b45ecd8db99b3b813893d23875490e1a1132a868ce94c0 SHA512 954c3dee745e60e7f041e9858bfaf2724375ee363cbb98d35fdc4b10b0092a3ec388a8af1fb59f693be076d6caff2f1211cb03e0e22e4e5708438ad520c4fba2 WHIRLPOOL c10975d79823539dec9d76854f1b1854b75a3e589e828cb45d253cbb53f1da83d09ed4813ca15d29c8685e5159c2b6746ea7a99ae34ea0f18adf030e91820049 +EBUILD btrfs-progs-0.20_rc1.ebuild 2209 SHA256 215cf846ef03928b3daaacea600b4d7461804570453fa2273530498173bb7d92 SHA512 16a4ff86c250baaeb2941a93891882be215e14e929a7c8bccf0fd41705f4aca71ed508f89cf80ed4cfc15a3599c93281264ba09bc36e1c63acf4fc1f26957398 WHIRLPOOL adeb6528d992585a0089c56e4ba43de26d1409e7747f5ed6979f9676f392fdfd0c938fc150c0f70efea3574cde40c3ec167a6685ce642791a9f0e6aea4b30afa MISC metadata.xml 332 SHA256 9bfca7447ff362e4b98047c151d4bf4251051ad503387e49129bbbd1b96fd4c2 SHA512 cf679f23c0b6999c2a6e346b645db770197ef56bb9321c5978b1827e5289df32e1cb73822e0f11424ec6bbe76ff1e0702abbe4e9089fb30b4ae3227cc6cf24d5 WHIRLPOOL d5f888e6a516106307caf667944582e2fa2d38d353ec0f4b6ce3bab3bcff7a160085052da7b7d1fe9b427ae8826a534da14a69d4c1d4f1d72002c8b4984bad35 diff --git a/sys-fs/btrfs-progs/btrfs-progs-0.19_p120221.ebuild b/sys-fs/btrfs-progs/btrfs-progs-0.19_p120221.ebuild deleted file mode 100644 index 6bea976..0000000 --- a/sys-fs/btrfs-progs/btrfs-progs-0.19_p120221.ebuild +++ /dev/null @@ -1,96 +0,0 @@ -# Copyright 1999-2011 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/sys-fs/btrfs-progs/btrfs-progs-9999.ebuild,v 1.15 2011/10/29 05:17:45 slyfox Exp $ - -EAPI="4" - -inherit eutils git-2 - -DESCRIPTION="Btrfs filesystem utilities" -HOMEPAGE="http://btrfs.wiki.kernel.org/" -SRC_URI="" - - -LICENSE="GPL-2" -SLOT="0" -KEYWORDS="~amd64 ~arm ~ppc64 ~x86" -IUSE="acl debug-utils" - -DEPEND="debug-utils? ( dev-python/matplotlib ) - acl? ( - sys-apps/acl - sys-fs/e2fsprogs - )" -RDEPEND="${DEPEND}" - -EGIT_REPO_URI="git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-progs.git" -EGIT_COMMIT="1957076ab4fefa47b6efed3da541bc974c83eed7" - -src_unpack() { - git-2_src_unpack -} - -src_prepare() { - epatch "${FILESDIR}"/${PN}-Modify-Makefile-to-allow-optional-ACL-dependency.patch - - # See Sabayon ML -- DO NOT DROP THIS !!!!!!!!!!!!!!!!!! - # DO NOT DROP THIS !!!!!!!!!!!!!! - # DO NOT DROP THIS !!!!!!!!!!!!!! - # DO NOT DROP THIS !!!!!!!!!!!!!! - # DO NOT DROP THIS !!!!!!!!!!!!!! - # http://lists.sabayon.org/pipermail/devel/2011-October/007155.html - epatch "${FILESDIR}"/0002-btrfs-progs-ignore-unavailable-loop-device-source-files.patch - # DO NOT DROP THIS !!!!!!!!!!!!!! - # DO NOT DROP THIS !!!!!!!!!!!!!! - # DO NOT DROP THIS !!!!!!!!!!!!!! - # DO NOT DROP THIS !!!!!!!!!!!!!! - - epatch "${FILESDIR}"/v2-Btrfs-progs-fix-unaligned-accesses.patch - - # Fix hardcoded "gcc" and "make" - sed -i -e 's:gcc $(CFLAGS):$(CC) $(CFLAGS):' Makefile - sed -i -e 's:make:$(MAKE):' Makefile -} - -src_compile() { - emake CC="$(tc-getCC)" CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" \ - all || die - emake CC="$(tc-getCC)" CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" \ - btrfs-image || die - if use acl; then - emake CC="$(tc-getCC)" CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" \ - btrfs-convert || die - fi -} - -src_install() { - emake mandir="/usr/share/man" bindir="/sbin" install DESTDIR="${D}" - - # fsck will segfault if invoked at boot, so do not make this link - #dosym btrfsck /sbin/fsck.btrfs - - # newsbin mkfs.btrfs mkbtrfs - - dosym mkfs.btrfs /sbin/mkbtrfs - if ! use acl; then - ewarn "Note: btrfs-convert not built/installed (requires acl USE flag)" - fi - - into /usr - newbin bcp btrfs-bcp - - if use debug-utils; then - newbin show-blocks btrfs-show-blocks - else - ewarn "Note: btrfs-show-blocks not installed (requires debug-utils USE flag)" - fi - - dodoc INSTALL - # emake prefix="${D}/usr/share" install-man -} - -pkg_postinst() { - ewarn "WARNING: This version of btrfs-progs uses the latest unstable code," - ewarn " and care should be taken that it is compatible with the" - ewarn " version of btrfs in your kernel!" -} diff --git a/sys-fs/btrfs-progs/btrfs-progs-0.20_rc1.ebuild b/sys-fs/btrfs-progs/btrfs-progs-0.20_rc1.ebuild new file mode 100644 index 0000000..c27bd37 --- /dev/null +++ b/sys-fs/btrfs-progs/btrfs-progs-0.20_rc1.ebuild @@ -0,0 +1,69 @@ +# Copyright 1999-2012 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/sys-fs/btrfs-progs/btrfs-progs-0.20_rc1.ebuild,v 1.1 2012/10/11 08:35:51 slyfox Exp $ + +EAPI=4 + +MY_PV=${PV/_rc/-rc} + +#inherit git-2 toolchain-funcs +inherit eutils toolchain-funcs + +DESCRIPTION="Btrfs filesystem utilities" +HOMEPAGE="https://btrfs.wiki.kernel.org" +# tarballed out of v0.20-rc1 tag in btrfs-progs repo +SRC_URI="http://dev.gentoo.org/~slyfox/${PN}-${MY_PV}.tar.gz" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~arm ~mips ~ppc ~ppc64 ~x86" +IUSE="" + +DEPEND="sys-libs/zlib + sys-apps/acl + sys-fs/e2fsprogs" +RDEPEND="${DEPEND}" + +S="${WORKDIR}/${PN}-${MY_PV}" + +#EGIT_REPO_URI="git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-progs.git +# https://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-progs.git" +#EGIT_COMMIT="89fe5b5f666c247aa3173745fb87c710f3a71a4a" + +src_prepare() { + epatch "${FILESDIR}"/${PN}-Modify-Makefile-to-allow-optional-ACL-dependency.patch + + # See Sabayon ML -- DO NOT DROP THIS !!!!!!!!!!!!!!!!!! + # DO NOT DROP THIS !!!!!!!!!!!!!! + # DO NOT DROP THIS !!!!!!!!!!!!!! + # DO NOT DROP THIS !!!!!!!!!!!!!! + # DO NOT DROP THIS !!!!!!!!!!!!!! + # http://lists.sabayon.org/pipermail/devel/2011-October/007155.html + epatch "${FILESDIR}"/0002-btrfs-progs-ignore-unavailable-loop-device-source-files.patch + # DO NOT DROP THIS !!!!!!!!!!!!!! + # DO NOT DROP THIS !!!!!!!!!!!!!! + # DO NOT DROP THIS !!!!!!!!!!!!!! + # DO NOT DROP THIS !!!!!!!!!!!!!! + + epatch "${FILESDIR}"/v2-Btrfs-progs-fix-unaligned-accesses.patch + + # upstream didn't bump program version + sed -i -e "s:Btrfs v0\.19:v${MY_PV}:" version.sh || die +} + +src_compile() { + emake CC="$(tc-getCC)" CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" +} + +src_install() { + emake DESTDIR="${D}" prefix=/usr bindir=/sbin mandir=/usr/share/man install +} + +pkg_postinst() { + ewarn "WARNING: This version of btrfs-progs corresponds to and should only" + ewarn " be used with the version of btrfs included in the" + ewarn " Linux kernel (2.6.31 and above)." + ewarn "" + ewarn " This version should NOT be used with earlier versions" + ewarn " of the standalone btrfs module!" +} diff --git a/sys-fs/btrfs-progs/files/v2-Btrfs-progs-fix-unaligned-accesses.patch b/sys-fs/btrfs-progs/files/v2-Btrfs-progs-fix-unaligned-accesses.patch index a4bc131..a7ece6f 100644 --- a/sys-fs/btrfs-progs/files/v2-Btrfs-progs-fix-unaligned-accesses.patch +++ b/sys-fs/btrfs-progs/files/v2-Btrfs-progs-fix-unaligned-accesses.patch @@ -1,36 +1,7 @@ -From patchwork Sun Oct 21 14:34:33 2012 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -Subject: [v2] Btrfs-progs: fix unaligned accesses -Date: Sun, 21 Oct 2012 14:34:33 -0000 -From: Arne Jansen -X-Patchwork-Id: 1622631 -Message-Id: <1350830073-20944-1-git-send-email-sensille@gmx.net> -To: linux-btrfs@vger.kernel.org - -There are some unaligned accesses in progs that cause malfunction or -crashes on ARM. -This patch fixes the ones we stumbled upon. - -Signed-off-by: Arne Jansen -tested-by: Andre Diekwisch mail.upb.de> - ---- -Change v1->v2: -Somehow sent the wrong patch without the patch to the setget functions. - ---- - btrfs-list.c | 69 +++++++++++++++++++++++++++------------------------------ - ctree.h | 8 +++++- - volumes.c | 8 ++++-- - 3 files changed, 44 insertions(+), 41 deletions(-) - -diff --git a/btrfs-list.c b/btrfs-list.c -index e5f0f96..cb42fbc 100644 ---- a/btrfs-list.c -+++ b/btrfs-list.c -@@ -720,7 +720,7 @@ static u64 find_root_gen(int fd) +diff -uNr btrfs-progs-0.20-rc1.orig/btrfs-list.c btrfs-progs-0.20-rc1/btrfs-list.c +--- btrfs-progs-0.20-rc1.orig/btrfs-list.c 2012-12-04 20:40:40.576142017 +0100 ++++ btrfs-progs-0.20-rc1/btrfs-list.c 2012-12-04 20:46:53.544650126 +0100 +@@ -324,7 +324,7 @@ int ret; struct btrfs_ioctl_search_args args; struct btrfs_ioctl_search_key *sk = &args.key; @@ -39,7 +10,7 @@ index e5f0f96..cb42fbc 100644 unsigned long off = 0; u64 max_found = 0; int i; -@@ -771,22 +771,21 @@ static u64 find_root_gen(int fd) +@@ -375,22 +375,21 @@ off = 0; for (i = 0; i < sk->nr_items; i++) { struct btrfs_root_item *item; @@ -71,16 +42,37 @@ index e5f0f96..cb42fbc 100644 max_found = max(max_found, btrfs_root_generation(item)); } -@@ -1009,7 +1008,7 @@ static int __list_subvol_search(int fd, struct root_lookup *root_lookup) +@@ -519,9 +518,9 @@ + off = 0; + sh = (struct btrfs_ioctl_search_header *)(args.buf + off); + +- if (sh->type == BTRFS_INODE_REF_KEY) { ++ if (sh.type == BTRFS_INODE_REF_KEY) { + struct btrfs_inode_ref *ref; +- dirid = sh->offset; ++ dirid = sh.offset; + + ref = (struct btrfs_inode_ref *)(sh + 1); + namelen = btrfs_stack_inode_ref_name_len(ref); +@@ -590,7 +589,7 @@ + + sh = (struct btrfs_ioctl_search_header *)args.buf; + +- if (sh->type == BTRFS_DIR_ITEM_KEY) { ++ if (sh.type == BTRFS_DIR_ITEM_KEY) { + struct btrfs_dir_item *di; + int name_len; + char *name; +@@ -613,7 +612,7 @@ int ret; struct btrfs_ioctl_search_args args; struct btrfs_ioctl_search_key *sk = &args.key; - struct btrfs_ioctl_search_header *sh; + struct btrfs_ioctl_search_header sh; struct btrfs_root_ref *ref; - struct btrfs_root_item *ri; unsigned long off = 0; -@@ -1064,23 +1063,22 @@ static int __list_subvol_search(int fd, struct root_lookup *root_lookup) + int name_len; +@@ -660,28 +659,27 @@ * read the root_ref item it contains */ for (i = 0; i < sk->nr_items; i++) { @@ -98,27 +90,7 @@ index e5f0f96..cb42fbc 100644 - add_root(root_lookup, sh->objectid, sh->offset, + add_root(root_lookup, sh.objectid, sh.offset, - 0, 0, dir_id, name, name_len, 0, 0, 0, - NULL); -- } else if (sh->type == BTRFS_ROOT_ITEM_KEY) { -+ } else if (sh.type == BTRFS_ROOT_ITEM_KEY) { - ri = (struct btrfs_root_item *)(args.buf + off); - gen = btrfs_root_generation(ri); - flags = btrfs_root_flags(ri); -- if(sh->len > -+ if(sh.len > - sizeof(struct btrfs_root_item_v0)) { - t = ri->otime.sec; - ogen = btrfs_root_otransid(ri); -@@ -1091,20 +1089,20 @@ static int __list_subvol_search(int fd, struct root_lookup *root_lookup) - memset(uuid, 0, BTRFS_UUID_SIZE); - } - -- add_root(root_lookup, sh->objectid, 0, -- sh->offset, flags, 0, NULL, 0, ogen, -+ add_root(root_lookup, sh.objectid, 0, -+ sh.offset, flags, 0, NULL, 0, ogen, - gen, t, uuid); + dir_id, name, name_len); } - off += sh->len; @@ -136,8 +108,50 @@ index e5f0f96..cb42fbc 100644 + sk->min_offset = sh.offset; } sk->nr_items = 4096; - sk->min_offset++; -@@ -1556,7 +1554,7 @@ int btrfs_list_find_updated_files(int fd, u64 root_id, u64 oldest_gen) + /* this iteration is done, step forward one root for the next +@@ -810,17 +808,17 @@ + int flags = 0; + char *name = NULL; + +- if (sh->objectid == *cache_ino) { ++ if (sh.objectid == *cache_ino) { + name = *cache_full_name; + } else if (*cache_full_name) { + free(*cache_full_name); + *cache_full_name = NULL; + } + if (!name) { +- name = ino_resolve(fd, sh->objectid, cache_dirid, ++ name = ino_resolve(fd, sh.objectid, cache_dirid, + cache_dir_name); + *cache_full_name = name; +- *cache_ino = sh->objectid; ++ *cache_ino = sh.objectid; + } + if (!name) + return -EIO; +@@ -841,16 +839,16 @@ + printf("unhandled extent type %d for inode %llu " + "file offset %llu gen %llu\n", + type, +- (unsigned long long)sh->objectid, +- (unsigned long long)sh->offset, ++ (unsigned long long)sh.objectid, ++ (unsigned long long)sh.offset, + (unsigned long long)found_gen); + + return -EIO; + } + printf("inode %llu file offset %llu len %llu disk start %llu " + "offset %llu gen %llu flags ", +- (unsigned long long)sh->objectid, +- (unsigned long long)sh->offset, ++ (unsigned long long)sh.objectid, ++ (unsigned long long)sh.offset, + (unsigned long long)len, + (unsigned long long)disk_start, + (unsigned long long)disk_offset, +@@ -880,7 +878,7 @@ int ret; struct btrfs_ioctl_search_args args; struct btrfs_ioctl_search_key *sk = &args.key; @@ -146,7 +160,7 @@ index e5f0f96..cb42fbc 100644 struct btrfs_file_extent_item *item; unsigned long off = 0; u64 found_gen; -@@ -1606,35 +1604,34 @@ int btrfs_list_find_updated_files(int fd, u64 root_id, u64 oldest_gen) +@@ -930,35 +928,34 @@ * read the root_ref item it contains */ for (i = 0; i < sk->nr_items; i++) { @@ -191,11 +205,10 @@ index e5f0f96..cb42fbc 100644 } sk->nr_items = 4096; if (sk->min_offset < (u64)-1) -diff --git a/ctree.h b/ctree.h -index 293b24f..0675989 100644 ---- a/ctree.h -+++ b/ctree.h -@@ -1086,15 +1086,19 @@ static inline u##bits btrfs_##name(struct extent_buffer *eb, \ +diff -uNr btrfs-progs-0.20-rc1.orig/ctree.h btrfs-progs-0.20-rc1/ctree.h +--- btrfs-progs-0.20-rc1.orig/ctree.h 2012-12-04 20:40:40.579141982 +0100 ++++ btrfs-progs-0.20-rc1/ctree.h 2012-12-04 20:40:49.051039793 +0100 +@@ -1063,15 +1063,19 @@ type *s) \ { \ unsigned long offset = (unsigned long)s; \ @@ -217,11 +230,10 @@ index 293b24f..0675989 100644 } #define BTRFS_SETGET_STACK_FUNCS(name, type, member, bits) \ -diff --git a/volumes.c b/volumes.c -index 8dca5e1..581c298 100644 ---- a/volumes.c -+++ b/volumes.c -@@ -652,6 +652,7 @@ int btrfs_alloc_chunk(struct btrfs_trans_handle *trans, +diff -uNr btrfs-progs-0.20-rc1.orig/volumes.c btrfs-progs-0.20-rc1/volumes.c +--- btrfs-progs-0.20-rc1.orig/volumes.c 2012-12-04 20:40:40.575142029 +0100 ++++ btrfs-progs-0.20-rc1/volumes.c 2012-12-04 20:40:49.052039781 +0100 +@@ -652,6 +652,7 @@ int index; int stripe_len = 64 * 1024; struct btrfs_key key; @@ -229,7 +241,7 @@ index 8dca5e1..581c298 100644 if (list_empty(dev_list)) { return -ENOSPC; -@@ -757,12 +758,13 @@ again: +@@ -757,12 +758,13 @@ } return -ENOSPC; }