Hello community,
here is the log from the commit of package kernel-source
checked in at Sat Aug 18 12:19:58 CEST 2007.
--------
--- kernel-source/kernel-bigsmp.changes 2007-08-16 17:43:03.000000000 +0200
+++ /mounts/work_src_done/STABLE/kernel-source/kernel-bigsmp.changes 2007-08-17 21:27:58.000000000 +0200
@@ -1,0 +2,62 @@
+Fri Aug 17 20:57:00 CEST 2007 - teheo@suse.de
+
+- patches.drivers/scsi-throttle-SG_DXFER_TO_FROM_DEV-warning-better:
+ SCSI: throttle SG_DXFER_TO_FROM_DEV warning message better
+ (290117).
+
+-------------------------------------------------------------------
+Fri Aug 17 19:51:11 CEST 2007 - teheo@suse.de
+
+- patches.drivers/pci-rd580-disable-msi: PCI: disable MSI on RD580
+ (299575).
+
+-------------------------------------------------------------------
+Fri Aug 17 18:33:50 CEST 2007 - jjohanse@suse.de
+
+- patches.apparmor/apparmor-stack_secondary.diff: allow apparmor
+ to stack with dazuko (300965).
+
+-------------------------------------------------------------------
+Fri Aug 17 18:27:44 CEST 2007 - olh@suse.de
+
+- update patches.arch/ppc-pegasos-via-ata-legacy-irq.patch
+ restore irq assignment in via82cxxx
+ update also pci_dev->class
+
+-------------------------------------------------------------------
+Fri Aug 17 15:26:18 CEST 2007 - olh@suse.de
+
+- remove version requirement for perl-Bootloader
+ any installed version will work (300337)
+
+-------------------------------------------------------------------
+Fri Aug 17 15:11:06 CEST 2007 - olh@suse.de
+
+- add patches.arch/ppc-pegasos-via-ata-legacy-irq.patch
+ advertise correct IDE mode on Pegasos2
+
+-------------------------------------------------------------------
+Fri Aug 17 13:54:10 CEST 2007 - schwab@suse.de
+
+- Fix an invalid semicolon.
+
+-------------------------------------------------------------------
+Fri Aug 17 12:28:16 CEST 2007 - agruen@suse.de
+
+- Update the nfs4acl patch; merge Suresh Jayaraman's acl caching
+ code (with fixes).
+
+-------------------------------------------------------------------
+Fri Aug 17 10:38:00 CEST 2007 - jbeulich@novell.com
+
+- patches.suse/crasher-26.diff: fix parameter name spelling in
+ descriptions.
+
+-------------------------------------------------------------------
+Thu Aug 16 19:10:40 CEST 2007 - trenn@suse.de
+
+- patches.arch/acpi_autoloading_interface.patch:
+ Remove dummy in struct to avoid a lot compile warnings due to
+ wrong initialisations
+
+-------------------------------------------------------------------
kernel-debug.changes: same change
kernel-default.changes: same change
kernel-dummy.changes: same change
kernel-kdump.changes: same change
kernel-ppc64.changes: same change
kernel-rt.changes: same change
kernel-rt_debug.changes: same change
kernel-s390.changes: same change
kernel-source.changes: same change
kernel-syms.changes: same change
kernel-vanilla.changes: same change
kernel-xen.changes: same change
kernel-xenpae.changes: same change
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ kernel-bigsmp.spec ++++++
--- /var/tmp/diff_new_pack.c32729/_old 2007-08-18 12:17:52.000000000 +0200
+++ /var/tmp/diff_new_pack.c32729/_new 2007-08-18 12:17:52.000000000 +0200
@@ -39,7 +39,7 @@
%endif
Summary: Kernel with PAE Support
Version: 2.6.22.3
-Release: 2
+Release: 4
License: GPL v2 or later
Group: System/Kernel
Autoreqprov: on
@@ -56,7 +56,14 @@
Requires(pre): coreutils awk
Requires(post): module-init-tools
Requires(post): /sbin/depmod
-Requires(post): perl-Bootloader >= 0.4.21
+# This PreReq is wrong, because the post/postun scripts have a
+# test -x updatebootloader, having perl-Bootloader is not a hard requirement.
+# But, there is no way to tell rpm or yast to schedule the installation
+# of perl-Bootloader before kernel-binary.rpm if both are in the list of
+# packages to install/update.
+# A specific version of perl-Bootloader is not required, because the post/postun
+# scripts handle the two API versions of 10.1/SLES10 GA and 10.2/SLES10 SP1
+Requires(post): perl-Bootloader
Requires(post): /sbin/update-bootloader
Requires(post): mkinitrd >= 1.2
#!BuildIgnore: perl-Bootloader mkinitrd
@@ -163,7 +170,7 @@
-Source Timestamp: 2007/08/16 14:09:17 UTC
+Source Timestamp: 2007/08/17 18:57:29 UTC
%prep
if ! [ -e %_sourcedir/linux-2.6.22.tar.bz2 ]; then
@@ -549,6 +556,38 @@
%files -f kernel.files
%changelog
+* Fri Aug 17 2007 - teheo@suse.de
+- patches.drivers/scsi-throttle-SG_DXFER_TO_FROM_DEV-warning-better:
+ SCSI: throttle SG_DXFER_TO_FROM_DEV warning message better
+ (290117).
+* Fri Aug 17 2007 - teheo@suse.de
+- patches.drivers/pci-rd580-disable-msi: PCI: disable MSI on RD580
+ (299575).
+* Fri Aug 17 2007 - jjohanse@suse.de
+- patches.apparmor/apparmor-stack_secondary.diff: allow apparmor
+ to stack with dazuko (300965).
+* Fri Aug 17 2007 - olh@suse.de
+- update patches.arch/ppc-pegasos-via-ata-legacy-irq.patch
+ restore irq assignment in via82cxxx
+ update also pci_dev->class
+* Fri Aug 17 2007 - olh@suse.de
+- remove version requirement for perl-Bootloader
+ any installed version will work (300337)
+* Fri Aug 17 2007 - olh@suse.de
+- add patches.arch/ppc-pegasos-via-ata-legacy-irq.patch
+ advertise correct IDE mode on Pegasos2
+* Fri Aug 17 2007 - schwab@suse.de
+- Fix an invalid semicolon.
+* Fri Aug 17 2007 - agruen@suse.de
+- Update the nfs4acl patch; merge Suresh Jayaraman's acl caching
+ code (with fixes).
+* Fri Aug 17 2007 - jbeulich@novell.com
+- patches.suse/crasher-26.diff: fix parameter name spelling in
+ descriptions.
+* Thu Aug 16 2007 - trenn@suse.de
+- patches.arch/acpi_autoloading_interface.patch:
+ Remove dummy in struct to avoid a lot compile warnings due to
+ wrong initialisations
* Thu Aug 16 2007 - oneukum@suse.de
- patches.suse/usb_printer_no_auto.diff
USB: disable autosuspend for printers, as it generates
kernel-debug.spec: same change
kernel-default.spec: same change
++++++ kernel-dummy.spec ++++++
--- /var/tmp/diff_new_pack.c32729/_old 2007-08-18 12:17:53.000000000 +0200
+++ /var/tmp/diff_new_pack.c32729/_new 2007-08-18 12:17:53.000000000 +0200
@@ -15,7 +15,7 @@
URL: http://www.kernel.org/
Summary: Internal dummy package for synchronizing release numbers
Version: 2.6.22.3
-Release: 2
+Release: 4
License: GPL v2 or later
Group: System/Kernel
Autoreqprov: off
@@ -28,7 +28,7 @@
--------
Andreas Gruenbacher
-Source Timestamp: 2007/08/16 14:09:17 UTC
+Source Timestamp: 2007/08/17 18:57:29 UTC
%install
@@ -41,6 +41,38 @@
/etc/dummy
%changelog
+* Fri Aug 17 2007 - teheo@suse.de
+- patches.drivers/scsi-throttle-SG_DXFER_TO_FROM_DEV-warning-better:
+ SCSI: throttle SG_DXFER_TO_FROM_DEV warning message better
+ (290117).
+* Fri Aug 17 2007 - teheo@suse.de
+- patches.drivers/pci-rd580-disable-msi: PCI: disable MSI on RD580
+ (299575).
+* Fri Aug 17 2007 - jjohanse@suse.de
+- patches.apparmor/apparmor-stack_secondary.diff: allow apparmor
+ to stack with dazuko (300965).
+* Fri Aug 17 2007 - olh@suse.de
+- update patches.arch/ppc-pegasos-via-ata-legacy-irq.patch
+ restore irq assignment in via82cxxx
+ update also pci_dev->class
+* Fri Aug 17 2007 - olh@suse.de
+- remove version requirement for perl-Bootloader
+ any installed version will work (300337)
+* Fri Aug 17 2007 - olh@suse.de
+- add patches.arch/ppc-pegasos-via-ata-legacy-irq.patch
+ advertise correct IDE mode on Pegasos2
+* Fri Aug 17 2007 - schwab@suse.de
+- Fix an invalid semicolon.
+* Fri Aug 17 2007 - agruen@suse.de
+- Update the nfs4acl patch; merge Suresh Jayaraman's acl caching
+ code (with fixes).
+* Fri Aug 17 2007 - jbeulich@novell.com
+- patches.suse/crasher-26.diff: fix parameter name spelling in
+ descriptions.
+* Thu Aug 16 2007 - trenn@suse.de
+- patches.arch/acpi_autoloading_interface.patch:
+ Remove dummy in struct to avoid a lot compile warnings due to
+ wrong initialisations
* Thu Aug 16 2007 - oneukum@suse.de
- patches.suse/usb_printer_no_auto.diff
USB: disable autosuspend for printers, as it generates
++++++ kernel-kdump.spec ++++++
--- /var/tmp/diff_new_pack.c32729/_old 2007-08-18 12:17:53.000000000 +0200
+++ /var/tmp/diff_new_pack.c32729/_new 2007-08-18 12:17:53.000000000 +0200
@@ -39,7 +39,7 @@
%endif
Summary: kernel for kdump
Version: 2.6.22.3
-Release: 2
+Release: 4
License: GPL v2 or later
Group: System/Kernel
Autoreqprov: on
@@ -56,7 +56,14 @@
Requires(pre): coreutils awk
Requires(post): module-init-tools
Requires(post): /sbin/depmod
-Requires(post): perl-Bootloader >= 0.4.21
+# This PreReq is wrong, because the post/postun scripts have a
+# test -x updatebootloader, having perl-Bootloader is not a hard requirement.
+# But, there is no way to tell rpm or yast to schedule the installation
+# of perl-Bootloader before kernel-binary.rpm if both are in the list of
+# packages to install/update.
+# A specific version of perl-Bootloader is not required, because the post/postun
+# scripts handle the two API versions of 10.1/SLES10 GA and 10.2/SLES10 SP1
+Requires(post): perl-Bootloader
Requires(post): /sbin/update-bootloader
Requires(post): mkinitrd >= 1.2
#!BuildIgnore: perl-Bootloader mkinitrd
@@ -167,7 +174,7 @@
-Source Timestamp: 2007/08/16 14:09:17 UTC
+Source Timestamp: 2007/08/17 18:57:29 UTC
%prep
if ! [ -e %_sourcedir/linux-2.6.22.tar.bz2 ]; then
@@ -553,6 +560,38 @@
%files -f kernel.files
%changelog
+* Fri Aug 17 2007 - teheo@suse.de
+- patches.drivers/scsi-throttle-SG_DXFER_TO_FROM_DEV-warning-better:
+ SCSI: throttle SG_DXFER_TO_FROM_DEV warning message better
+ (290117).
+* Fri Aug 17 2007 - teheo@suse.de
+- patches.drivers/pci-rd580-disable-msi: PCI: disable MSI on RD580
+ (299575).
+* Fri Aug 17 2007 - jjohanse@suse.de
+- patches.apparmor/apparmor-stack_secondary.diff: allow apparmor
+ to stack with dazuko (300965).
+* Fri Aug 17 2007 - olh@suse.de
+- update patches.arch/ppc-pegasos-via-ata-legacy-irq.patch
+ restore irq assignment in via82cxxx
+ update also pci_dev->class
+* Fri Aug 17 2007 - olh@suse.de
+- remove version requirement for perl-Bootloader
+ any installed version will work (300337)
+* Fri Aug 17 2007 - olh@suse.de
+- add patches.arch/ppc-pegasos-via-ata-legacy-irq.patch
+ advertise correct IDE mode on Pegasos2
+* Fri Aug 17 2007 - schwab@suse.de
+- Fix an invalid semicolon.
+* Fri Aug 17 2007 - agruen@suse.de
+- Update the nfs4acl patch; merge Suresh Jayaraman's acl caching
+ code (with fixes).
+* Fri Aug 17 2007 - jbeulich@novell.com
+- patches.suse/crasher-26.diff: fix parameter name spelling in
+ descriptions.
+* Thu Aug 16 2007 - trenn@suse.de
+- patches.arch/acpi_autoloading_interface.patch:
+ Remove dummy in struct to avoid a lot compile warnings due to
+ wrong initialisations
* Thu Aug 16 2007 - oneukum@suse.de
- patches.suse/usb_printer_no_auto.diff
USB: disable autosuspend for printers, as it generates
++++++ kernel-ppc64.spec ++++++
--- /var/tmp/diff_new_pack.c32729/_old 2007-08-18 12:17:53.000000000 +0200
+++ /var/tmp/diff_new_pack.c32729/_new 2007-08-18 12:17:53.000000000 +0200
@@ -38,7 +38,7 @@
%endif
Summary: Kernel for ppc64 Systems
Version: 2.6.22.3
-Release: 2
+Release: 4
License: GPL v2 or later, LGPL v2 or later
Group: System/Kernel
Autoreqprov: on
@@ -55,7 +55,14 @@
Requires(pre): coreutils awk
Requires(post): module-init-tools
Requires(post): /sbin/depmod
-Requires(post): perl-Bootloader >= 0.4.21
+# This PreReq is wrong, because the post/postun scripts have a
+# test -x updatebootloader, having perl-Bootloader is not a hard requirement.
+# But, there is no way to tell rpm or yast to schedule the installation
+# of perl-Bootloader before kernel-binary.rpm if both are in the list of
+# packages to install/update.
+# A specific version of perl-Bootloader is not required, because the post/postun
+# scripts handle the two API versions of 10.1/SLES10 GA and 10.2/SLES10 SP1
+Requires(post): perl-Bootloader
Requires(post): /sbin/update-bootloader
Requires(post): mkinitrd >= 1.2
#!BuildIgnore: perl-Bootloader mkinitrd
@@ -179,7 +186,7 @@
Tom Gall
see /usr/src/linux/CREDITS for more details.
-Source Timestamp: 2007/08/16 14:09:17 UTC
+Source Timestamp: 2007/08/17 18:57:29 UTC
%prep
if ! [ -e %_sourcedir/linux-2.6.22.tar.bz2 ]; then
@@ -565,6 +572,38 @@
%files -f kernel.files
%changelog
+* Fri Aug 17 2007 - teheo@suse.de
+- patches.drivers/scsi-throttle-SG_DXFER_TO_FROM_DEV-warning-better:
+ SCSI: throttle SG_DXFER_TO_FROM_DEV warning message better
+ (290117).
+* Fri Aug 17 2007 - teheo@suse.de
+- patches.drivers/pci-rd580-disable-msi: PCI: disable MSI on RD580
+ (299575).
+* Fri Aug 17 2007 - jjohanse@suse.de
+- patches.apparmor/apparmor-stack_secondary.diff: allow apparmor
+ to stack with dazuko (300965).
+* Fri Aug 17 2007 - olh@suse.de
+- update patches.arch/ppc-pegasos-via-ata-legacy-irq.patch
+ restore irq assignment in via82cxxx
+ update also pci_dev->class
+* Fri Aug 17 2007 - olh@suse.de
+- remove version requirement for perl-Bootloader
+ any installed version will work (300337)
+* Fri Aug 17 2007 - olh@suse.de
+- add patches.arch/ppc-pegasos-via-ata-legacy-irq.patch
+ advertise correct IDE mode on Pegasos2
+* Fri Aug 17 2007 - schwab@suse.de
+- Fix an invalid semicolon.
+* Fri Aug 17 2007 - agruen@suse.de
+- Update the nfs4acl patch; merge Suresh Jayaraman's acl caching
+ code (with fixes).
+* Fri Aug 17 2007 - jbeulich@novell.com
+- patches.suse/crasher-26.diff: fix parameter name spelling in
+ descriptions.
+* Thu Aug 16 2007 - trenn@suse.de
+- patches.arch/acpi_autoloading_interface.patch:
+ Remove dummy in struct to avoid a lot compile warnings due to
+ wrong initialisations
* Thu Aug 16 2007 - oneukum@suse.de
- patches.suse/usb_printer_no_auto.diff
USB: disable autosuspend for printers, as it generates
++++++ kernel-rt_debug.spec ++++++
--- /var/tmp/diff_new_pack.c32729/_old 2007-08-18 12:17:54.000000000 +0200
+++ /var/tmp/diff_new_pack.c32729/_new 2007-08-18 12:17:54.000000000 +0200
@@ -39,7 +39,7 @@
%endif
Summary: A Debug Version of the Kernel
Version: 2.6.22.3
-Release: 2
+Release: 4
License: GPL v2 or later
Group: System/Kernel
Autoreqprov: on
@@ -56,7 +56,14 @@
Requires(pre): coreutils awk
Requires(post): module-init-tools
Requires(post): /sbin/depmod
-Requires(post): perl-Bootloader >= 0.4.21
+# This PreReq is wrong, because the post/postun scripts have a
+# test -x updatebootloader, having perl-Bootloader is not a hard requirement.
+# But, there is no way to tell rpm or yast to schedule the installation
+# of perl-Bootloader before kernel-binary.rpm if both are in the list of
+# packages to install/update.
+# A specific version of perl-Bootloader is not required, because the post/postun
+# scripts handle the two API versions of 10.1/SLES10 GA and 10.2/SLES10 SP1
+Requires(post): perl-Bootloader
Requires(post): /sbin/update-bootloader
Requires(post): mkinitrd >= 1.2
#!BuildIgnore: perl-Bootloader mkinitrd
@@ -165,7 +172,7 @@
-Source Timestamp: 2007/08/16 14:09:17 UTC
+Source Timestamp: 2007/08/17 18:57:29 UTC
%prep
if ! [ -e %_sourcedir/linux-2.6.22.tar.bz2 ]; then
@@ -551,6 +558,38 @@
%files -f kernel.files
%changelog
+* Fri Aug 17 2007 - teheo@suse.de
+- patches.drivers/scsi-throttle-SG_DXFER_TO_FROM_DEV-warning-better:
+ SCSI: throttle SG_DXFER_TO_FROM_DEV warning message better
+ (290117).
+* Fri Aug 17 2007 - teheo@suse.de
+- patches.drivers/pci-rd580-disable-msi: PCI: disable MSI on RD580
+ (299575).
+* Fri Aug 17 2007 - jjohanse@suse.de
+- patches.apparmor/apparmor-stack_secondary.diff: allow apparmor
+ to stack with dazuko (300965).
+* Fri Aug 17 2007 - olh@suse.de
+- update patches.arch/ppc-pegasos-via-ata-legacy-irq.patch
+ restore irq assignment in via82cxxx
+ update also pci_dev->class
+* Fri Aug 17 2007 - olh@suse.de
+- remove version requirement for perl-Bootloader
+ any installed version will work (300337)
+* Fri Aug 17 2007 - olh@suse.de
+- add patches.arch/ppc-pegasos-via-ata-legacy-irq.patch
+ advertise correct IDE mode on Pegasos2
+* Fri Aug 17 2007 - schwab@suse.de
+- Fix an invalid semicolon.
+* Fri Aug 17 2007 - agruen@suse.de
+- Update the nfs4acl patch; merge Suresh Jayaraman's acl caching
+ code (with fixes).
+* Fri Aug 17 2007 - jbeulich@novell.com
+- patches.suse/crasher-26.diff: fix parameter name spelling in
+ descriptions.
+* Thu Aug 16 2007 - trenn@suse.de
+- patches.arch/acpi_autoloading_interface.patch:
+ Remove dummy in struct to avoid a lot compile warnings due to
+ wrong initialisations
* Thu Aug 16 2007 - oneukum@suse.de
- patches.suse/usb_printer_no_auto.diff
USB: disable autosuspend for printers, as it generates
++++++ kernel-rt.spec ++++++
--- /var/tmp/diff_new_pack.c32729/_old 2007-08-18 12:17:54.000000000 +0200
+++ /var/tmp/diff_new_pack.c32729/_new 2007-08-18 12:17:54.000000000 +0200
@@ -39,7 +39,7 @@
%endif
Summary: The Realtime Linux Kernel
Version: 2.6.22.3
-Release: 2
+Release: 4
License: GPL v2 or later
Group: System/Kernel
Autoreqprov: on
@@ -56,7 +56,14 @@
Requires(pre): coreutils awk
Requires(post): module-init-tools
Requires(post): /sbin/depmod
-Requires(post): perl-Bootloader >= 0.4.21
+# This PreReq is wrong, because the post/postun scripts have a
+# test -x updatebootloader, having perl-Bootloader is not a hard requirement.
+# But, there is no way to tell rpm or yast to schedule the installation
+# of perl-Bootloader before kernel-binary.rpm if both are in the list of
+# packages to install/update.
+# A specific version of perl-Bootloader is not required, because the post/postun
+# scripts handle the two API versions of 10.1/SLES10 GA and 10.2/SLES10 SP1
+Requires(post): perl-Bootloader
Requires(post): /sbin/update-bootloader
Requires(post): mkinitrd >= 1.2
#!BuildIgnore: perl-Bootloader mkinitrd
@@ -170,7 +177,7 @@
see /usr/src/linux/CREDITS for more details.
-Source Timestamp: 2007/08/16 14:09:17 UTC
+Source Timestamp: 2007/08/17 18:57:29 UTC
%prep
if ! [ -e %_sourcedir/linux-2.6.22.tar.bz2 ]; then
@@ -556,6 +563,38 @@
%files -f kernel.files
%changelog
+* Fri Aug 17 2007 - teheo@suse.de
+- patches.drivers/scsi-throttle-SG_DXFER_TO_FROM_DEV-warning-better:
+ SCSI: throttle SG_DXFER_TO_FROM_DEV warning message better
+ (290117).
+* Fri Aug 17 2007 - teheo@suse.de
+- patches.drivers/pci-rd580-disable-msi: PCI: disable MSI on RD580
+ (299575).
+* Fri Aug 17 2007 - jjohanse@suse.de
+- patches.apparmor/apparmor-stack_secondary.diff: allow apparmor
+ to stack with dazuko (300965).
+* Fri Aug 17 2007 - olh@suse.de
+- update patches.arch/ppc-pegasos-via-ata-legacy-irq.patch
+ restore irq assignment in via82cxxx
+ update also pci_dev->class
+* Fri Aug 17 2007 - olh@suse.de
+- remove version requirement for perl-Bootloader
+ any installed version will work (300337)
+* Fri Aug 17 2007 - olh@suse.de
+- add patches.arch/ppc-pegasos-via-ata-legacy-irq.patch
+ advertise correct IDE mode on Pegasos2
+* Fri Aug 17 2007 - schwab@suse.de
+- Fix an invalid semicolon.
+* Fri Aug 17 2007 - agruen@suse.de
+- Update the nfs4acl patch; merge Suresh Jayaraman's acl caching
+ code (with fixes).
+* Fri Aug 17 2007 - jbeulich@novell.com
+- patches.suse/crasher-26.diff: fix parameter name spelling in
+ descriptions.
+* Thu Aug 16 2007 - trenn@suse.de
+- patches.arch/acpi_autoloading_interface.patch:
+ Remove dummy in struct to avoid a lot compile warnings due to
+ wrong initialisations
* Thu Aug 16 2007 - oneukum@suse.de
- patches.suse/usb_printer_no_auto.diff
USB: disable autosuspend for printers, as it generates
++++++ kernel-s390.spec ++++++
--- /var/tmp/diff_new_pack.c32729/_old 2007-08-18 12:17:54.000000000 +0200
+++ /var/tmp/diff_new_pack.c32729/_new 2007-08-18 12:17:54.000000000 +0200
@@ -39,7 +39,7 @@
%endif
Summary: The Standard Kernel
Version: 2.6.22.3
-Release: 2
+Release: 3
License: GPL v2 or later
Group: System/Kernel
Autoreqprov: on
@@ -56,7 +56,14 @@
Requires(pre): coreutils awk
Requires(post): module-init-tools
Requires(post): /sbin/depmod
-Requires(post): perl-Bootloader >= 0.4.21
+# This PreReq is wrong, because the post/postun scripts have a
+# test -x updatebootloader, having perl-Bootloader is not a hard requirement.
+# But, there is no way to tell rpm or yast to schedule the installation
+# of perl-Bootloader before kernel-binary.rpm if both are in the list of
+# packages to install/update.
+# A specific version of perl-Bootloader is not required, because the post/postun
+# scripts handle the two API versions of 10.1/SLES10 GA and 10.2/SLES10 SP1
+Requires(post): perl-Bootloader
Requires(post): /sbin/update-bootloader
Requires(post): mkinitrd >= 1.2
#!BuildIgnore: perl-Bootloader mkinitrd
@@ -161,7 +168,7 @@
-Source Timestamp: 2007/08/16 14:09:17 UTC
+Source Timestamp: 2007/08/17 18:57:29 UTC
%prep
if ! [ -e %_sourcedir/linux-2.6.22.tar.bz2 ]; then
@@ -547,6 +554,38 @@
%files -f kernel.files
%changelog
+* Fri Aug 17 2007 - teheo@suse.de
+- patches.drivers/scsi-throttle-SG_DXFER_TO_FROM_DEV-warning-better:
+ SCSI: throttle SG_DXFER_TO_FROM_DEV warning message better
+ (290117).
+* Fri Aug 17 2007 - teheo@suse.de
+- patches.drivers/pci-rd580-disable-msi: PCI: disable MSI on RD580
+ (299575).
+* Fri Aug 17 2007 - jjohanse@suse.de
+- patches.apparmor/apparmor-stack_secondary.diff: allow apparmor
+ to stack with dazuko (300965).
+* Fri Aug 17 2007 - olh@suse.de
+- update patches.arch/ppc-pegasos-via-ata-legacy-irq.patch
+ restore irq assignment in via82cxxx
+ update also pci_dev->class
+* Fri Aug 17 2007 - olh@suse.de
+- remove version requirement for perl-Bootloader
+ any installed version will work (300337)
+* Fri Aug 17 2007 - olh@suse.de
+- add patches.arch/ppc-pegasos-via-ata-legacy-irq.patch
+ advertise correct IDE mode on Pegasos2
+* Fri Aug 17 2007 - schwab@suse.de
+- Fix an invalid semicolon.
+* Fri Aug 17 2007 - agruen@suse.de
+- Update the nfs4acl patch; merge Suresh Jayaraman's acl caching
+ code (with fixes).
+* Fri Aug 17 2007 - jbeulich@novell.com
+- patches.suse/crasher-26.diff: fix parameter name spelling in
+ descriptions.
+* Thu Aug 16 2007 - trenn@suse.de
+- patches.arch/acpi_autoloading_interface.patch:
+ Remove dummy in struct to avoid a lot compile warnings due to
+ wrong initialisations
* Thu Aug 16 2007 - oneukum@suse.de
- patches.suse/usb_printer_no_auto.diff
USB: disable autosuspend for printers, as it generates
++++++ kernel-source.spec ++++++
--- /var/tmp/diff_new_pack.c32729/_old 2007-08-18 12:17:54.000000000 +0200
+++ /var/tmp/diff_new_pack.c32729/_new 2007-08-18 12:17:54.000000000 +0200
@@ -22,7 +22,7 @@
%endif
Summary: The Linux Kernel Sources
Version: 2.6.22.3
-Release: 2
+Release: 4
License: GPL v2 or later
Group: Development/Sources
Autoreqprov: off
@@ -106,7 +106,7 @@
see /usr/src/linux/CREDITS for more details.
-Source Timestamp: 2007/08/16 14:09:17 UTC
+Source Timestamp: 2007/08/17 18:57:29 UTC
%prep
if ! [ -e %_sourcedir/linux-2.6.22.tar.bz2 ]; then
@@ -277,6 +277,38 @@
%files -f kernel-source.files
%changelog
+* Fri Aug 17 2007 - teheo@suse.de
+- patches.drivers/scsi-throttle-SG_DXFER_TO_FROM_DEV-warning-better:
+ SCSI: throttle SG_DXFER_TO_FROM_DEV warning message better
+ (290117).
+* Fri Aug 17 2007 - teheo@suse.de
+- patches.drivers/pci-rd580-disable-msi: PCI: disable MSI on RD580
+ (299575).
+* Fri Aug 17 2007 - jjohanse@suse.de
+- patches.apparmor/apparmor-stack_secondary.diff: allow apparmor
+ to stack with dazuko (300965).
+* Fri Aug 17 2007 - olh@suse.de
+- update patches.arch/ppc-pegasos-via-ata-legacy-irq.patch
+ restore irq assignment in via82cxxx
+ update also pci_dev->class
+* Fri Aug 17 2007 - olh@suse.de
+- remove version requirement for perl-Bootloader
+ any installed version will work (300337)
+* Fri Aug 17 2007 - olh@suse.de
+- add patches.arch/ppc-pegasos-via-ata-legacy-irq.patch
+ advertise correct IDE mode on Pegasos2
+* Fri Aug 17 2007 - schwab@suse.de
+- Fix an invalid semicolon.
+* Fri Aug 17 2007 - agruen@suse.de
+- Update the nfs4acl patch; merge Suresh Jayaraman's acl caching
+ code (with fixes).
+* Fri Aug 17 2007 - jbeulich@novell.com
+- patches.suse/crasher-26.diff: fix parameter name spelling in
+ descriptions.
+* Thu Aug 16 2007 - trenn@suse.de
+- patches.arch/acpi_autoloading_interface.patch:
+ Remove dummy in struct to avoid a lot compile warnings due to
+ wrong initialisations
* Thu Aug 16 2007 - oneukum@suse.de
- patches.suse/usb_printer_no_auto.diff
USB: disable autosuspend for printers, as it generates
++++++ kernel-syms.spec ++++++
--- /var/tmp/diff_new_pack.c32729/_old 2007-08-18 12:17:54.000000000 +0200
+++ /var/tmp/diff_new_pack.c32729/_new 2007-08-18 12:17:54.000000000 +0200
@@ -21,7 +21,7 @@
%endif
Summary: Kernel Symbol Versions (modversions)
Version: 2.6.22.3
-Release: 2
+Release: 4
License: GPL v2 or later
Group: Development/Sources
Autoreqprov: off
@@ -96,7 +96,7 @@
see /usr/src/linux/CREDITS for more details.
-Source Timestamp: 2007/08/16 14:09:17 UTC
+Source Timestamp: 2007/08/17 18:57:29 UTC
%prep
echo "Architecture symbol(s):" %symbols
@@ -150,6 +150,38 @@
/lib/modules/*/*
%changelog
+* Fri Aug 17 2007 - teheo@suse.de
+- patches.drivers/scsi-throttle-SG_DXFER_TO_FROM_DEV-warning-better:
+ SCSI: throttle SG_DXFER_TO_FROM_DEV warning message better
+ (290117).
+* Fri Aug 17 2007 - teheo@suse.de
+- patches.drivers/pci-rd580-disable-msi: PCI: disable MSI on RD580
+ (299575).
+* Fri Aug 17 2007 - jjohanse@suse.de
+- patches.apparmor/apparmor-stack_secondary.diff: allow apparmor
+ to stack with dazuko (300965).
+* Fri Aug 17 2007 - olh@suse.de
+- update patches.arch/ppc-pegasos-via-ata-legacy-irq.patch
+ restore irq assignment in via82cxxx
+ update also pci_dev->class
+* Fri Aug 17 2007 - olh@suse.de
+- remove version requirement for perl-Bootloader
+ any installed version will work (300337)
+* Fri Aug 17 2007 - olh@suse.de
+- add patches.arch/ppc-pegasos-via-ata-legacy-irq.patch
+ advertise correct IDE mode on Pegasos2
+* Fri Aug 17 2007 - schwab@suse.de
+- Fix an invalid semicolon.
+* Fri Aug 17 2007 - agruen@suse.de
+- Update the nfs4acl patch; merge Suresh Jayaraman's acl caching
+ code (with fixes).
+* Fri Aug 17 2007 - jbeulich@novell.com
+- patches.suse/crasher-26.diff: fix parameter name spelling in
+ descriptions.
+* Thu Aug 16 2007 - trenn@suse.de
+- patches.arch/acpi_autoloading_interface.patch:
+ Remove dummy in struct to avoid a lot compile warnings due to
+ wrong initialisations
* Thu Aug 16 2007 - oneukum@suse.de
- patches.suse/usb_printer_no_auto.diff
USB: disable autosuspend for printers, as it generates
++++++ kernel-vanilla.spec ++++++
--- /var/tmp/diff_new_pack.c32729/_old 2007-08-18 12:17:55.000000000 +0200
+++ /var/tmp/diff_new_pack.c32729/_new 2007-08-18 12:17:55.000000000 +0200
@@ -39,7 +39,7 @@
%endif
Summary: The Standard Kernel - without any SUSE patches
Version: 2.6.22.3
-Release: 2
+Release: 4
License: GPL v2 or later
Group: System/Kernel
Autoreqprov: on
@@ -56,7 +56,14 @@
Requires(pre): coreutils awk
Requires(post): module-init-tools
Requires(post): /sbin/depmod
-Requires(post): perl-Bootloader >= 0.4.21
+# This PreReq is wrong, because the post/postun scripts have a
+# test -x updatebootloader, having perl-Bootloader is not a hard requirement.
+# But, there is no way to tell rpm or yast to schedule the installation
+# of perl-Bootloader before kernel-binary.rpm if both are in the list of
+# packages to install/update.
+# A specific version of perl-Bootloader is not required, because the post/postun
+# scripts handle the two API versions of 10.1/SLES10 GA and 10.2/SLES10 SP1
+Requires(post): perl-Bootloader
Requires(post): /sbin/update-bootloader
Requires(post): mkinitrd >= 1.2
#!BuildIgnore: perl-Bootloader mkinitrd
@@ -181,7 +188,7 @@
-Source Timestamp: 2007/08/16 14:09:17 UTC
+Source Timestamp: 2007/08/17 18:57:29 UTC
%prep
if ! [ -e %_sourcedir/linux-2.6.22.tar.bz2 ]; then
@@ -567,6 +574,38 @@
%files -f kernel.files
%changelog
+* Fri Aug 17 2007 - teheo@suse.de
+- patches.drivers/scsi-throttle-SG_DXFER_TO_FROM_DEV-warning-better:
+ SCSI: throttle SG_DXFER_TO_FROM_DEV warning message better
+ (290117).
+* Fri Aug 17 2007 - teheo@suse.de
+- patches.drivers/pci-rd580-disable-msi: PCI: disable MSI on RD580
+ (299575).
+* Fri Aug 17 2007 - jjohanse@suse.de
+- patches.apparmor/apparmor-stack_secondary.diff: allow apparmor
+ to stack with dazuko (300965).
+* Fri Aug 17 2007 - olh@suse.de
+- update patches.arch/ppc-pegasos-via-ata-legacy-irq.patch
+ restore irq assignment in via82cxxx
+ update also pci_dev->class
+* Fri Aug 17 2007 - olh@suse.de
+- remove version requirement for perl-Bootloader
+ any installed version will work (300337)
+* Fri Aug 17 2007 - olh@suse.de
+- add patches.arch/ppc-pegasos-via-ata-legacy-irq.patch
+ advertise correct IDE mode on Pegasos2
+* Fri Aug 17 2007 - schwab@suse.de
+- Fix an invalid semicolon.
+* Fri Aug 17 2007 - agruen@suse.de
+- Update the nfs4acl patch; merge Suresh Jayaraman's acl caching
+ code (with fixes).
+* Fri Aug 17 2007 - jbeulich@novell.com
+- patches.suse/crasher-26.diff: fix parameter name spelling in
+ descriptions.
+* Thu Aug 16 2007 - trenn@suse.de
+- patches.arch/acpi_autoloading_interface.patch:
+ Remove dummy in struct to avoid a lot compile warnings due to
+ wrong initialisations
* Thu Aug 16 2007 - oneukum@suse.de
- patches.suse/usb_printer_no_auto.diff
USB: disable autosuspend for printers, as it generates
kernel-xenpae.spec: same change
kernel-xen.spec: same change
++++++ build-source-timestamp ++++++
--- kernel-source/build-source-timestamp 2007-08-16 17:42:56.000000000 +0200
+++ /mounts/work_src_done/STABLE/kernel-source/build-source-timestamp 2007-08-17 21:27:49.000000000 +0200
@@ -1 +1 @@
-2007/08/16 14:09:17 UTC
+2007/08/17 18:57:29 UTC
++++++ config.tar.bz2 ++++++
++++++ kabi.tar.bz2 ++++++
++++++ needed_space_in_mb ++++++
--- kernel-source/needed_space_in_mb 2007-08-16 18:43:58.000000000 +0200
+++ /mounts/work_src_done/STABLE/kernel-source/needed_space_in_mb 2007-08-17 21:28:13.000000000 +0200
@@ -1 +1 @@
-6000
+6144
++++++ novell-kmp.tar.bz2 ++++++
++++++ patches.apparmor.tar.bz2 ++++++
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/patches.apparmor/apparmor-stack_secondary.diff new/patches.apparmor/apparmor-stack_secondary.diff
--- old/patches.apparmor/apparmor-stack_secondary.diff 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.apparmor/apparmor-stack_secondary.diff 2007-08-17 18:34:57.000000000 +0200
@@ -0,0 +1,192 @@
+From: John Johnansen
+Subject: allow apparmor to stack with dazuko
+Patch-mainline: no
+References: 300965
+
+Allow AppArmor to stack with dazuko so that the clamav virus
+scanner can be used on an AppArmored machine.
+
+Signed-off-by: John Johansen
+
+
+Index: linux-2.6.22/security/apparmor/lsm.c
+===================================================================
+--- linux-2.6.22.orig/security/apparmor/lsm.c
++++ linux-2.6.22/security/apparmor/lsm.c
+@@ -23,6 +23,20 @@
+ #include "apparmor.h"
+ #include "inline.h"
+
++/* point to the apparmor module */
++struct module *aa_module = NULL;
++
++/* secondary ops if apparmor is stacked */
++static struct security_operations *aa_secondary_ops = NULL;
++static DEFINE_MUTEX(aa_secondary_lock);
++
++#define AA_SECONDARY(FN, ARGS...) \
++ ({ \
++ struct security_operations *__f1; \
++ __f1 = rcu_dereference(aa_secondary_ops); \
++ (unlikely(__f1) && __f1->FN) ? __f1->FN(ARGS) : 0; \
++ })
++
+ static int param_set_aabool(const char *val, struct kernel_param *kp);
+ static int param_get_aabool(char *buffer, struct kernel_param *kp);
+ #define param_check_aabool(name, p) __param_check(name, p, int)
+@@ -404,18 +418,23 @@ out:
+ static int apparmor_inode_permission(struct inode *inode, int mask,
+ struct nameidata *nd)
+ {
+- int check = 0;
++ int check = 0, error = 0;
+
+ if (!nd || nd->flags & (LOOKUP_PARENT | LOOKUP_CONTINUE))
+- return 0;
++ goto out;
+ mask = aa_mask_permissions(mask);
+ if (S_ISDIR(inode->i_mode)) {
+ check |= AA_CHECK_DIR;
+ /* allow traverse accesses to directories */
+ mask &= ~MAY_EXEC;
+ }
+- return aa_permission("inode_permission", inode, nd->dentry, nd->mnt,
+- mask, check);
++ error = aa_permission("inode_permission", inode, nd->dentry, nd->mnt,
++ mask, check);
++out:
++ if (!error)
++ error = AA_SECONDARY(inode_permission, inode, mask, nd);
++
++ return error;
+ }
+
+ static int apparmor_inode_setattr(struct dentry *dentry, struct vfsmount *mnt,
+@@ -824,6 +843,75 @@ static int apparmor_setprocattr(struct t
+ return error;
+ }
+
++static void info_message(const char *str, const char *name)
++{
++ struct aa_audit sa;
++ memset(&sa, 0, sizeof(sa));
++ sa.gfp_mask = GFP_KERNEL;
++ sa.name = name;
++ sa.info = str;
++ if (name)
++ printk(KERN_INFO "AppArmor: %s name=\"%s\"\n", str, name);
++ else
++ printk(KERN_INFO "AppArmor: %s\n", str);
++ aa_audit_message(NULL, &sa, AUDIT_APPARMOR_STATUS);
++}
++
++int apparmor_register_subsecurity(const char *name,
++ struct security_operations *ops)
++{
++ int error = 0;
++
++ if (mutex_lock_interruptible(&aa_secondary_lock))
++ return -ERESTARTSYS;
++
++ /* allow dazuko and capability to stack. The stacking with
++ * capability is not needed since apparmor already composes
++ * capability using common cap.
++ */
++ if (!aa_secondary_ops && (strcmp(name, "dazuko") == 0 ||
++ strcmp(name, "capability") == 0)){
++ /* The apparmor module needs to be pinned while a secondary is
++ * registered
++ */
++ if (try_module_get(aa_module)) {
++ aa_secondary_ops = ops;
++ info_message("Registered secondary security module",
++ name);
++ } else {
++ error = -EINVAL;
++ }
++ } else {
++ info_message("Unable to register %s as a secondary security "
++ "module", name);
++ error = -EPERM;
++ }
++ mutex_unlock(&aa_secondary_lock);
++ return error;
++}
++
++int apparmor_unregister_subsecurity(const char *name,
++ struct security_operations *ops)
++{
++ int error = 0;
++
++ if (mutex_lock_interruptible(&aa_secondary_lock))
++ return -ERESTARTSYS;
++
++ if (aa_secondary_ops && aa_secondary_ops == ops) {
++ rcu_assign_pointer(aa_secondary_ops, NULL);
++ synchronize_rcu();
++ module_put(aa_module);
++ info_message("Unregistered secondary security module", name);
++ } else {
++ info_message("Unable to unregister secondary security module",
++ name);
++ error = -EPERM;
++ }
++ mutex_unlock(&aa_secondary_lock);
++ return error;
++}
++
+ struct security_operations apparmor_ops = {
+ .ptrace = apparmor_ptrace,
+ .capget = cap_capget,
+@@ -869,6 +957,9 @@ struct security_operations apparmor_ops
+ .getprocattr = apparmor_getprocattr,
+ .setprocattr = apparmor_setprocattr,
+
++ .register_security = apparmor_register_subsecurity,
++ .unregister_security = apparmor_unregister_subsecurity,
++
+ .socket_create = apparmor_socket_create,
+ .socket_post_create = apparmor_socket_post_create,
+ .socket_bind = apparmor_socket_bind,
+@@ -886,16 +977,6 @@ struct security_operations apparmor_ops
+ .socket_getpeersec_dgram = apparmor_socket_getpeersec_dgram,
+ };
+
+-static void info_message(const char *str)
+-{
+- struct aa_audit sa;
+- memset(&sa, 0, sizeof(sa));
+- sa.gfp_mask = GFP_KERNEL;
+- sa.info = str;
+- printk(KERN_INFO "AppArmor: %s", str);
+- aa_audit_message(NULL, &sa, AUDIT_APPARMOR_STATUS);
+-}
+-
+ static int __init apparmor_init(void)
+ {
+ int error;
+@@ -916,9 +997,10 @@ static int __init apparmor_init(void)
+ }
+
+ if (apparmor_complain)
+- info_message("AppArmor initialized: complainmode enabled");
++ info_message("AppArmor initialized: complainmode enabled",
++ NULL);
+ else
+- info_message("AppArmor initialized");
++ info_message("AppArmor initialized", NULL);
+
+ return error;
+
+@@ -969,9 +1051,9 @@ static void __exit apparmor_exit(void)
+ mutex_unlock(&aa_interface_lock);
+
+ if (unregister_security(&apparmor_ops))
+- info_message("Unable to properly unregister AppArmor");
++ info_message("Unable to properly unregister AppArmor", NULL);
+
+- info_message("AppArmor protection removed");
++ info_message("AppArmor protection removed", NULL);
+ }
+
+ module_init(apparmor_init);
++++++ patches.arch.tar.bz2 ++++++
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/patches.arch/acpi_autoloading_interface.patch new/patches.arch/acpi_autoloading_interface.patch
--- old/patches.arch/acpi_autoloading_interface.patch 2007-08-06 15:38:03.000000000 +0200
+++ new/patches.arch/acpi_autoloading_interface.patch 2007-08-17 19:27:01.000000000 +0200
@@ -25,9 +25,9 @@
drivers/acpi/scan.c | 156 ++++++++++++++++++++++++++++------------
drivers/pnp/pnpacpi/core.c | 19 +++-
include/linux/acpi.h | 1
- include/linux/mod_devicetable.h | 8 ++
+ include/linux/mod_devicetable.h | 7 +
scripts/mod/file2alias.c | 12 +++
- 5 files changed, 144 insertions(+), 52 deletions(-)
+ 5 files changed, 143 insertions(+), 52 deletions(-)
Index: linux-2.6.22/drivers/acpi/scan.c
===================================================================
@@ -315,16 +315,15 @@
===================================================================
--- linux-2.6.22.orig/include/linux/mod_devicetable.h
+++ linux-2.6.22/include/linux/mod_devicetable.h
-@@ -159,6 +159,14 @@ struct ap_device_id {
+@@ -159,6 +159,13 @@ struct ap_device_id {
#define AP_DEVICE_ID_MATCH_DEVICE_TYPE 0x01
-+#define ACPI_ID_LEN 9
-+#define FILLUP_LEN 7 /* dirty fix for i386 -> 64bit cross-compilation */
++#define ACPI_ID_LEN 16 /* only 9 bytes needed here, 16 bytes are used */
++ /* to workaround crosscompile issues */
+
+struct acpi_device_id {
+ __u8 id[ACPI_ID_LEN];
-+ __u8 dummy[FILLUP_LEN];
+ kernel_ulong_t driver_data;
+};
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/patches.arch/ppc-pegasos-via-ata-legacy-irq.patch new/patches.arch/ppc-pegasos-via-ata-legacy-irq.patch
--- old/patches.arch/ppc-pegasos-via-ata-legacy-irq.patch 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.arch/ppc-pegasos-via-ata-legacy-irq.patch 2007-08-17 18:29:04.000000000 +0200
@@ -0,0 +1,76 @@
+The built-in IDE controller is configured in legacy mode,
+but the PCI registers advertise native mode.
+Force the PCI class into legacy mode. This allows pata_via to access
+two drives.
+The Pegasos specific irq enforcement in the via82cxxx driver
+must stay because there is aparently no generic way to setup irq per channel.
+
+Tested on Pegasos2 with firmware version 20040810, and two IDE disks.
+
+---
+ arch/powerpc/kernel/prom_init.c | 11 ++++++++---
+ arch/powerpc/platforms/chrp/pci.c | 29 +++++++++++++++++++++++++++++
+ 2 files changed, 37 insertions(+), 3 deletions(-)
+
+--- a/arch/powerpc/kernel/prom_init.c
++++ b/arch/powerpc/kernel/prom_init.c
+@@ -2044,6 +2044,7 @@ static void __init fixup_device_tree_map
+ /*
+ * Pegasos and BriQ lacks the "ranges" property in the isa node
+ * Pegasos needs decimal IRQ 14/15, not hexadecimal
++ * Pegasos has the IDE configured in legacy mode, but advertised as native
+ */
+ static void __init fixup_device_tree_chrp(void)
+ {
+@@ -2081,9 +2082,13 @@ static void __init fixup_device_tree_chr
+ prom_printf("Fixing up IDE interrupt on Pegasos...\n");
+ prop[0] = 14;
+ prop[1] = 0x0;
+- prop[2] = 15;
+- prop[3] = 0x0;
+- prom_setprop(ph, name, "interrupts", prop, 4*sizeof(u32));
++ prom_setprop(ph, name, "interrupts", prop, 2*sizeof(u32));
++ prom_printf("Fixing up IDE class-code on Pegasos...\n");
++ rc = prom_getprop(ph, "class-code", prop, sizeof(u32));
++ if (rc == sizeof(u32)) {
++ prop[0] &= ~0x5;
++ prom_setprop(ph, name, "class-code", prop, sizeof(u32));
++ }
+ }
+ }
+ #else
+--- a/arch/powerpc/platforms/chrp/pci.c
++++ b/arch/powerpc/platforms/chrp/pci.c
+@@ -338,3 +338,32 @@ void chrp_pci_fixup_winbond_ata(struct p
+ }
+ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_WINBOND, PCI_DEVICE_ID_WINBOND_82C105,
+ chrp_pci_fixup_winbond_ata);
++
++/* Pegasos2 firmware version 20040810 configures the built-in IDE controller
++ * in legacy mode, but sets the PCI registers to PCI native mode.
++ * The chip can only operate in legacy mode, so force the PCI class into legacy
++ * mode as well. The same fixup must be done to the class-code property in
++ * the IDE node /pci@80000000/ide@C,1
++ */
++static void chrp_pci_fixup_vt8231_ata(struct pci_dev *viaide)
++{
++ u8 progif;
++ struct pci_dev *viaisa;
++
++ if (!machine_is(chrp) || _chrp_type != _CHRP_Pegasos)
++ return;
++ if (viaide->irq != 14)
++ return;
++
++ viaisa = pci_get_device(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8231, NULL);
++ if (!viaisa)
++ return;
++ printk("Fixing VIA IDE, force legacy mode on '%s'\n", viaide->dev.bus_id);
++
++ pci_read_config_byte(viaide, PCI_CLASS_PROG, &progif);
++ pci_write_config_byte(viaide, PCI_CLASS_PROG, progif & ~0x5);
++ viaide->class &= ~0x5;
++
++ pci_dev_put(viaisa);
++}
++DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_1, chrp_pci_fixup_vt8231_ata);
++++++ patches.drivers.tar.bz2 ++++++
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/patches.drivers/pci-rd580-disable-msi new/patches.drivers/pci-rd580-disable-msi
--- old/patches.drivers/pci-rd580-disable-msi 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.drivers/pci-rd580-disable-msi 2007-08-17 19:51:27.000000000 +0200
@@ -0,0 +1,36 @@
+From: Tejun Heo
+Subject: [PATCH] PCI: disable MSI on RD580
+References: 299575
+
+RD580 can't do MSI like its predecessors. Disable MSI on RD580.
+
+Signed-off-by: Tejun Heo
+---
+ drivers/pci/quirks.c | 1 +
+ include/linux/pci_ids.h | 1 +
+ 2 files changed, 2 insertions(+)
+
+Index: linux-2.6.22/drivers/pci/quirks.c
+===================================================================
+--- linux-2.6.22.orig/drivers/pci/quirks.c
++++ linux-2.6.22/drivers/pci/quirks.c
+@@ -1640,6 +1640,7 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_SE
+ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_HT1000_PCIX, quirk_disable_all_msi);
+ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RS400_200, quirk_disable_all_msi);
+ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RS480, quirk_disable_all_msi);
++DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RD580, quirk_disable_all_msi);
+ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RS690, quirk_disable_all_msi);
+ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_VT3351, quirk_disable_all_msi);
+
+Index: linux-2.6.22/include/linux/pci_ids.h
+===================================================================
+--- linux-2.6.22.orig/include/linux/pci_ids.h
++++ linux-2.6.22/include/linux/pci_ids.h
+@@ -357,6 +357,7 @@
+ #define PCI_DEVICE_ID_ATI_RS400_166 0x5a32
+ #define PCI_DEVICE_ID_ATI_RS400_200 0x5a33
+ #define PCI_DEVICE_ID_ATI_RS480 0x5950
++#define PCI_DEVICE_ID_ATI_RD580 0x5952
+ #define PCI_DEVICE_ID_ATI_RS690 0x7910
+ /* ATI IXP Chipset */
+ #define PCI_DEVICE_ID_ATI_IXP200_IDE 0x4349
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/patches.drivers/scsi-throttle-SG_DXFER_TO_FROM_DEV-warning-better new/patches.drivers/scsi-throttle-SG_DXFER_TO_FROM_DEV-warning-better
--- old/patches.drivers/scsi-throttle-SG_DXFER_TO_FROM_DEV-warning-better 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.drivers/scsi-throttle-SG_DXFER_TO_FROM_DEV-warning-better 2007-08-17 20:57:29.000000000 +0200
@@ -0,0 +1,45 @@
+From: Tejun Heo
+Subject: [PATCH] SCSI: throttle SG_DXFER_TO_FROM_DEV warning message better
+References: 290117
+
+When a program continually issues SG_DXFER_TO_FROM_DEV commands,
+throttling via printk_ratelimit() isn't enough. If the drive is fast
+and the console is slow (e.g. vesafb), it can slow down the process
+quite a bit.
+
+This patch makes sg remember last printed comm name and skip warning
+message if the name matches. This can protect most use cases.
+
+Signed-off-by: Tejun Heo
+---
+ drivers/scsi/sg.c | 10 ++++++++--
+ 1 file changed, 8 insertions(+), 2 deletions(-)
+
+Index: linux-2.6.22/drivers/scsi/sg.c
+===================================================================
+--- linux-2.6.22.orig/drivers/scsi/sg.c
++++ linux-2.6.22/drivers/scsi/sg.c
+@@ -605,8 +605,10 @@ sg_write(struct file *filp, const char _
+ * but is is possible that the app intended SG_DXFER_TO_DEV, because there
+ * is a non-zero input_size, so emit a warning.
+ */
+- if (hp->dxfer_direction == SG_DXFER_TO_FROM_DEV)
+- if (printk_ratelimit())
++ if (hp->dxfer_direction == SG_DXFER_TO_FROM_DEV) {
++ static char last_printed[TASK_COMM_LEN];
++
++ if (strcmp(last_printed, current->comm) && printk_ratelimit()) {
+ printk(KERN_WARNING
+ "sg_write: data in/out %d/%d bytes for SCSI command 0x%x--"
+ "guessing data in;\n" KERN_WARNING " "
+@@ -614,6 +616,10 @@ sg_write(struct file *filp, const char _
+ old_hdr.reply_len - (int)SZ_SG_HEADER,
+ input_size, (unsigned int) cmnd[0],
+ current->comm);
++
++ memcpy(last_printed, current->comm, TASK_COMM_LEN);
++ }
++ }
+ k = sg_common_write(sfp, srp, cmnd, sfp->timeout, blocking);
+ return (k < 0) ? k : count;
+ }
++++++ patches.fixes.tar.bz2 ++++++
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/patches.fixes/invalid-semicolon new/patches.fixes/invalid-semicolon
--- old/patches.fixes/invalid-semicolon 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.fixes/invalid-semicolon 2007-08-17 13:56:06.000000000 +0200
@@ -0,0 +1,27 @@
+From: Ilpo Järvinen
+Subject: [POWERPC] Fix invalid semicolon after if statement
+Patch-mainline: 2.6.23-rc4 2b02d13996fe28478e45605de9bd8bdca25718de
+Acked-by: schwab@suse.de
+
+ A similar fix to netfilter from Eric Dumazet inspired me to
+ look around a bit by using some grep/sed stuff as looking for
+ this kind of bugs seemed easy to automate. This is one of them
+ I found where it looks like this semicolon is not valid.
+
+ Signed-off-by: Ilpo Järvinen
+ Acked-by: Benjamin Herrenschmidt
+ Signed-off-by: Paul Mackerras
+
+diff --git a/arch/powerpc/mm/hash_utils_64.c b/arch/powerpc/mm/hash_utils_64.c
+index f178957..a47151e 100644
+--- a/arch/powerpc/mm/hash_utils_64.c
++++ b/arch/powerpc/mm/hash_utils_64.c
+@@ -795,7 +795,7 @@ void hash_preload(struct mm_struct *mm, unsigned long ea,
+
+ #ifdef CONFIG_PPC_MM_SLICES
+ /* We only prefault standard pages for now */
+- if (unlikely(get_slice_psize(mm, ea) != mm->context.user_psize));
++ if (unlikely(get_slice_psize(mm, ea) != mm->context.user_psize))
+ return;
+ #endif
+
++++++ patches.kernel.org.tar.bz2 ++++++
++++++ patches.rpmify.tar.bz2 ++++++
++++++ patches.rt.tar.bz2 ++++++
++++++ patches.suse.tar.bz2 ++++++
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/patches.suse/crasher-26.diff new/patches.suse/crasher-26.diff
--- old/patches.suse/crasher-26.diff 2007-08-02 17:24:18.000000000 +0200
+++ new/patches.suse/crasher-26.diff 2007-08-17 19:27:02.000000000 +0200
@@ -76,9 +76,9 @@
+MODULE_PARM_DESC(trap_read, "test option. read from an invalid address to simulate a crash and render the system unusable.");
+MODULE_PARM_DESC(trap_write, "test option. write to an invalid address to simulate a crash and render the system unusable.");
+MODULE_PARM_DESC(call_null, "test option. call a NULL pointer to simulate a crash and render the system unusable.");
-+MODULE_PARM_DESC(call_read, "test option. call an invalid address to simulate a crash and render the system unusable.");
++MODULE_PARM_DESC(call_bad, "test option. call an invalid address to simulate a crash and render the system unusable.");
+MODULE_PARM_DESC(jump_null, "test option. jump to a NULL pointer to simulate a crash and render the system unusable.");
-+MODULE_PARM_DESC(jump_read, "test option. jump to an invalid address to simulate a crash and render the system unusable.");
++MODULE_PARM_DESC(jump_bad, "test option. jump to an invalid address to simulate a crash and render the system unusable.");
+MODULE_PARM_DESC(threads, "number of threads to run");
+MODULE_LICENSE("GPL");
+
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/patches.suse/nfs4acl-ext3.diff new/patches.suse/nfs4acl-ext3.diff
--- old/patches.suse/nfs4acl-ext3.diff 2007-08-02 17:24:19.000000000 +0200
+++ new/patches.suse/nfs4acl-ext3.diff 2007-08-17 19:27:02.000000000 +0200
@@ -17,21 +17,22 @@
fs/ext3/acl.h | 4
fs/ext3/file.c | 1
fs/ext3/ialloc.c | 6
- fs/ext3/inode.c | 9
+ fs/ext3/inode.c | 12
fs/ext3/namei.c | 11
fs/ext3/namei.h | 1
- fs/ext3/nfs4acl.c | 280 +++++++++++++++
- fs/ext3/nfs4acl.h | 26 +
- fs/ext3/super.c | 54 ++-
+ fs/ext3/nfs4acl.c | 342 +++++++++++++++++++
+ fs/ext3/nfs4acl.h | 29 +
+ fs/ext3/super.c | 66 ++-
fs/ext3/xattr.c | 9
fs/ext3/xattr.h | 5
- fs/nfs4acl_base.c | 525 +++++++++++++++++++++++++++++
+ fs/nfs4acl_base.c | 544 ++++++++++++++++++++++++++++++
fs/nfs4acl_compat.c | 743 ++++++++++++++++++++++++++++++++++++++++++
fs/nfs4acl_xattr.c | 154 ++++++++
include/linux/ext3_fs.h | 2
- include/linux/nfs4acl.h | 181 ++++++++++
+ include/linux/ext3_fs_i.h | 3
+ include/linux/nfs4acl.h | 193 ++++++++++
include/linux/nfs4acl_xattr.h | 32 +
- 21 files changed, 2045 insertions(+), 25 deletions(-)
+ 22 files changed, 2159 insertions(+), 25 deletions(-)
--- a/fs/Kconfig
+++ b/fs/Kconfig
@@ -174,7 +175,17 @@
static int ext3_writepage_trans_blocks(struct inode *inode);
-@@ -2978,8 +2979,12 @@ int ext3_setattr(struct dentry *dentry,
+@@ -2603,6 +2604,9 @@ void ext3_read_inode(struct inode * inod
+ ei->i_acl = EXT3_ACL_NOT_CACHED;
+ ei->i_default_acl = EXT3_ACL_NOT_CACHED;
+ #endif
++#ifdef CONFIG_EXT3_FS_NFS4ACL
++ ei->i_nfs4acl = EXT3_NFS4ACL_NOT_CACHED;
++#endif
+ ei->i_block_alloc_info = NULL;
+
+ if (__ext3_get_inode_loc(inode, &iloc, 0))
+@@ -2978,8 +2982,12 @@ int ext3_setattr(struct dentry *dentry,
if (inode->i_nlink)
ext3_orphan_del(NULL, inode);
@@ -226,7 +237,7 @@
extern struct dentry *ext3_get_parent(struct dentry *child);
--- /dev/null
+++ b/fs/ext3/nfs4acl.c
-@@ -0,0 +1,280 @@
+@@ -0,0 +1,342 @@
+/*
+ * Copyright (C) 2006 Andreas Gruenbacher
+ *
@@ -248,6 +259,33 @@
+#include
+#include
+#include "xattr.h"
++#include "nfs4acl.h"
++
++static inline struct nfs4acl *
++ext3_iget_nfs4acl(struct inode *inode)
++{
++ struct nfs4acl *acl = EXT3_NFS4ACL_NOT_CACHED;
++ struct ext3_inode_info *ei = EXT3_I(inode);
++
++ spin_lock(&inode->i_lock);
++ if (ei->i_nfs4acl != EXT3_NFS4ACL_NOT_CACHED)
++ acl = nfs4acl_dup(ei->i_nfs4acl);
++ spin_unlock(&inode->i_lock);
++
++ return acl;
++}
++
++static inline void
++ext3_iset_nfs4acl(struct inode *inode, struct nfs4acl *acl)
++{
++ struct ext3_inode_info *ei = EXT3_I(inode);
++
++ spin_lock(&inode->i_lock);
++ if (ei->i_nfs4acl != EXT3_NFS4ACL_NOT_CACHED)
++ nfs4acl_release(ei->i_nfs4acl);
++ ei->i_nfs4acl = nfs4acl_dup(acl);
++ spin_unlock(&inode->i_lock);
++}
+
+static struct nfs4acl *
+ext3_get_nfs4acl(struct inode *inode)
@@ -257,6 +295,12 @@
+ struct nfs4acl *acl;
+ int retval;
+
++ if (!test_opt(inode->i_sb, NFS4ACL))
++ return NULL;
++
++ acl = ext3_iget_nfs4acl(inode);
++ if (acl != EXT3_NFS4ACL_NOT_CACHED)
++ return acl;
+ retval = ext3_xattr_get(inode, name_index, "", NULL, 0);
+ if (retval > 0) {
+ value = kmalloc(retval, GFP_KERNEL);
@@ -274,6 +318,9 @@
+ acl = ERR_PTR(retval);
+ kfree(value);
+
++ if (!IS_ERR(acl))
++ ext3_iset_nfs4acl(inode, acl);
++
+ return acl;
+}
+
@@ -281,32 +328,39 @@
+ext3_set_nfs4acl(handle_t *handle, struct inode *inode, struct nfs4acl *acl)
+{
+ const int name_index = EXT3_XATTR_INDEX_NFS4ACL;
-+ size_t size;
-+ void *value;
++ size_t size = 0;
++ void *value = NULL;
+ int retval;
+
-+ size = nfs4acl_xattr_size(acl);
-+ value = kmalloc(size, GFP_KERNEL);
-+ if (!value)
-+ return -ENOMEM;
-+ nfs4acl_to_xattr(acl, value);
++ if (acl) {
++ size = nfs4acl_xattr_size(acl);
++ value = kmalloc(size, GFP_KERNEL);
++ if (!value)
++ return -ENOMEM;
++ nfs4acl_to_xattr(acl, value);
++ }
+ if (handle)
+ retval = ext3_xattr_set_handle(handle, inode, name_index, "",
+ value, size, 0);
+ else
+ retval = ext3_xattr_set(inode, name_index, "", value, size, 0);
-+ kfree(value);
++ if (value)
++ kfree(value);
++ if (!retval)
++ ext3_iset_nfs4acl(inode, acl);
++
+ return retval;
+}
+
+int
+ext3_nfs4acl_permission(struct inode *inode, int want)
+{
-+ struct nfs4acl *acl = ext3_get_nfs4acl(inode);
++ struct nfs4acl *acl;
+ int retval;
+
+ BUG_ON(!test_opt(inode->i_sb, NFS4ACL));
+
++ acl = ext3_get_nfs4acl(inode);
+ if (!acl)
+ retval = generic_permission(inode, want, NULL);
+ else if (IS_ERR(acl))
@@ -314,7 +368,7 @@
+ else {
+ retval = nfs4acl_permission(inode, acl, want,
+ test_opt(inode->i_sb, NFS4ACL_MAX));
-+ nfs4acl_free(acl);
++ nfs4acl_release(acl);
+ }
+
+ return retval;
@@ -324,32 +378,26 @@
+ext3_nfs4acl_init(handle_t *handle, struct inode *inode, struct inode *dir)
+{
+ struct nfs4acl *dir_acl, *acl;
-+ int retval = 0;
++ int retval;
+
+ BUG_ON(!test_opt(inode->i_sb, NFS4ACL));
+
+ dir_acl = ext3_get_nfs4acl(dir);
-+ retval = PTR_ERR(dir_acl);
-+ if (!dir_acl || IS_ERR(dir_acl))
-+ goto out;
++ if (!dir_acl || IS_ERR(dir_acl)) {
++ inode->i_mode &= ~current->fs->umask;
++ return PTR_ERR(dir_acl);
++ }
+ acl = nfs4acl_inherit(dir_acl, inode->i_mode,
+ test_opt(inode->i_sb, NFS4ACL_MAX));
-+ nfs4acl_free(dir_acl);
++ nfs4acl_release(dir_acl);
+
-+ if (IS_ERR(acl))
-+ return PTR_ERR(acl);
-+ else if (acl) {
++ retval = PTR_ERR(acl);
++ if (acl && !IS_ERR(acl)) {
+ retval = ext3_set_nfs4acl(handle, inode, acl);
+ inode->i_mode = (inode->i_mode & ~S_IRWXUGO) |
+ nfs4acl_masks_to_mode(acl);
-+ nfs4acl_free(acl);
-+ return retval;
++ nfs4acl_release(acl);
+ }
-+
-+out:
-+ if (!retval)
-+ inode->i_mode &= ~current->fs->umask;
-+
+ return retval;
+}
+
@@ -364,9 +412,11 @@
+ acl = ext3_get_nfs4acl(inode);
+ if (!acl || IS_ERR(acl))
+ return PTR_ERR(acl);
-+ nfs4acl_chmod(acl, inode->i_mode);
++ acl = nfs4acl_chmod(acl, inode->i_mode);
++ if (IS_ERR(acl))
++ return PTR_ERR(acl);
+ retval = ext3_set_nfs4acl(NULL, inode, acl);
-+ nfs4acl_free(acl);
++ nfs4acl_release(acl);
+
+ return retval;
+}
@@ -388,13 +438,28 @@
+ext3_xattr_get_nfs4acl(struct inode *inode, const char *name, void *buffer,
+ size_t buffer_size)
+{
-+ const int name_index = EXT3_XATTR_INDEX_NFS4ACL;
++ struct nfs4acl *acl;
++ size_t size;
+
+ if (!test_opt(inode->i_sb, NFS4ACL))
+ return -EOPNOTSUPP;
+ if (strcmp(name, "") != 0)
+ return -EINVAL;
-+ return ext3_xattr_get(inode, name_index, "", buffer, buffer_size);
++
++ acl = ext3_get_nfs4acl(inode);
++ if (IS_ERR(acl))
++ return PTR_ERR(acl);
++ if (acl == NULL)
++ return -ENODATA;
++ size = nfs4acl_xattr_size(acl);
++ if (buffer) {
++ if (size > buffer_size)
++ return -ERANGE;
++ nfs4acl_to_xattr(acl, buffer);
++ }
++ nfs4acl_release(acl);
++
++ return size;
+}
+
+#ifdef NFS4ACL_DEBUG
@@ -434,7 +499,7 @@
+ return PTR_ERR(acl);
+ retval = nfs4acl_apply_masks(&acl, test_opt(inode->i_sb, NFS4ACL_MAX));
+ if (retval) {
-+ nfs4acl_free(acl);
++ nfs4acl_release(acl);
+ return retval;
+ }
+ size = nfs4acl_xattr_size(acl);
@@ -443,7 +508,7 @@
+ return -ERANGE;
+ nfs4acl_to_xattr(acl, buffer);
+ }
-+ nfs4acl_free(acl);
++ nfs4acl_release(acl);
+ return size;
+}
+#endif
@@ -451,10 +516,10 @@
+static int
+ext3_set_mode(struct inode *inode, int mode)
+{
-+ handle_t *handle = ext3_journal_start(inode,
-+ EXT3_DATA_TRANS_BLOCKS(inode->i_sb));
++ handle_t *handle;
+ int retval;
+
++ handle = ext3_journal_start(inode, EXT3_DATA_TRANS_BLOCKS(inode->i_sb));
+ retval = PTR_ERR(handle);
+ if (!IS_ERR(handle)) {
+ inode->i_mode = mode;
@@ -468,9 +533,9 @@
+ext3_xattr_set_nfs4acl(struct inode *inode, const char *name,
+ const void *value, size_t size, int flags)
+{
-+ const int name_index = EXT3_XATTR_INDEX_NFS4ACL;
++ handle_t *handle;
+ struct nfs4acl *acl = NULL;
-+ int retval;
++ int retval, retries = 0;
+
+ if (!test_opt(inode->i_sb, NFS4ACL))
+ return -EOPNOTSUPP;
@@ -485,10 +550,18 @@
+ nfs4acl_masks_to_mode(acl));
+ if (retval)
+ goto out;
-+ }
-+ retval = ext3_xattr_set(inode, name_index, "", value, size, flags);
++ } else
++ acl = NULL;
++retry:
++ handle = ext3_journal_start(inode, EXT3_DATA_TRANS_BLOCKS(inode->i_sb));
++ if (IS_ERR(handle))
++ return PTR_ERR(handle);
++ retval = ext3_set_nfs4acl(handle, inode, acl);
++ ext3_journal_stop(handle);
++ if (retval == ENOSPC && ext3_should_retry_alloc(inode->i_sb, &retries))
++ goto retry;
+out:
-+ nfs4acl_free(acl);
++ nfs4acl_release(acl);
+ return retval;
+}
+
@@ -509,12 +582,15 @@
+#endif
--- /dev/null
+++ b/fs/ext3/nfs4acl.h
-@@ -0,0 +1,26 @@
+@@ -0,0 +1,29 @@
+#ifndef __FS_EXT3_NFS4ACL_H
+#define __FS_EXT3_NFS4ACL_H
+
+#ifdef CONFIG_EXT3_FS_NFS4ACL
+
++/* Value for i_nfs4acl if NFS4ACL has not been cached */
++#define EXT3_NFS4ACL_NOT_CACHED ((void *)-1)
++
+extern int ext3_nfs4acl_permission(struct inode *, int);
+extern int ext3_nfs4acl_init(handle_t *, struct inode *, struct inode *);
+extern int ext3_nfs4acl_chmod(struct inode *);
@@ -538,7 +614,45 @@
+#endif /* __FS_EXT3_NFS4ACL_H */
--- a/fs/ext3/super.c
+++ b/fs/ext3/super.c
-@@ -667,7 +667,7 @@ enum {
+@@ -35,11 +35,13 @@
+ #include
+ #include
+ #include
++#include
+
+ #include
+
+ #include "xattr.h"
+ #include "acl.h"
++#include "nfs4acl.h"
+ #include "namei.h"
+
+ static int ext3_load_journal(struct super_block *, struct ext3_super_block *,
+@@ -452,6 +454,9 @@ static struct inode *ext3_alloc_inode(st
+ ei->i_acl = EXT3_ACL_NOT_CACHED;
+ ei->i_default_acl = EXT3_ACL_NOT_CACHED;
+ #endif
++#ifdef CONFIG_EXT3_FS_NFS4ACL
++ ei->i_nfs4acl = EXT3_NFS4ACL_NOT_CACHED;
++#endif
+ ei->i_block_alloc_info = NULL;
+ ei->vfs_inode.i_version = 1;
+ return &ei->vfs_inode;
+@@ -506,6 +511,13 @@ static void ext3_clear_inode(struct inod
+ EXT3_I(inode)->i_default_acl = EXT3_ACL_NOT_CACHED;
+ }
+ #endif
++#ifdef CONFIG_EXT3_FS_NFS4ACL
++ if (EXT3_I(inode)->i_nfs4acl &&
++ EXT3_I(inode)->i_nfs4acl != EXT3_NFS4ACL_NOT_CACHED) {
++ nfs4acl_release(EXT3_I(inode)->i_nfs4acl);
++ EXT3_I(inode)->i_nfs4acl = EXT3_NFS4ACL_NOT_CACHED;
++ }
++#endif
+ ext3_discard_reservation(inode);
+ EXT3_I(inode)->i_block_alloc_info = NULL;
+ if (unlikely(rsv))
+@@ -667,7 +679,7 @@ enum {
Opt_bsd_df, Opt_minix_df, Opt_grpid, Opt_nogrpid,
Opt_resgid, Opt_resuid, Opt_sb, Opt_err_cont, Opt_err_panic, Opt_err_ro,
Opt_nouid32, Opt_nocheck, Opt_debug, Opt_oldalloc, Opt_orlov,
@@ -547,7 +661,7 @@
Opt_reservation, Opt_noreservation, Opt_noload, Opt_nobh, Opt_bh,
Opt_commit, Opt_journal_update, Opt_journal_inum, Opt_journal_dev,
Opt_abort, Opt_data_journal, Opt_data_ordered, Opt_data_writeback,
-@@ -699,6 +699,7 @@ static match_table_t tokens = {
+@@ -699,6 +711,7 @@ static match_table_t tokens = {
{Opt_user_xattr, "user_xattr"},
{Opt_nouser_xattr, "nouser_xattr"},
{Opt_acl, "acl"},
@@ -555,7 +669,7 @@
{Opt_noacl, "noacl"},
{Opt_reservation, "reservation"},
{Opt_noreservation, "noreservation"},
-@@ -842,19 +843,39 @@ static int parse_options (char *options,
+@@ -842,19 +855,39 @@ static int parse_options (char *options,
printk("EXT3 (no)user_xattr options not supported\n");
break;
#endif
@@ -603,7 +717,7 @@
case Opt_reservation:
set_opt(sbi->s_mount_opt, RESERVATION);
break;
-@@ -1489,8 +1510,11 @@ static int ext3_fill_super (struct super
+@@ -1489,8 +1522,11 @@ static int ext3_fill_super (struct super
NULL, 0))
goto failed_mount;
@@ -617,7 +731,7 @@
if (le32_to_cpu(es->s_rev_level) == EXT3_GOOD_OLD_REV &&
(EXT3_HAS_COMPAT_FEATURE(sb, ~0U) ||
-@@ -2305,8 +2329,12 @@ static int ext3_remount (struct super_bl
+@@ -2305,8 +2341,12 @@ static int ext3_remount (struct super_bl
if (sbi->s_mount_opt & EXT3_MOUNT_ABORT)
ext3_abort(sb, __FUNCTION__, "Abort forced by user");
@@ -680,7 +794,7 @@
--- /dev/null
+++ b/fs/nfs4acl_base.c
-@@ -0,0 +1,525 @@
+@@ -0,0 +1,544 @@
+/*
+ * Copyright (C) 2006 Andreas Gruenbacher
+ *
@@ -695,15 +809,14 @@
+ * General Public License for more details.
+ */
+
++#include
+#include
+#include
+#include
-+#include
-+#include
+
+MODULE_LICENSE("GPL");
+
-+/**
++/*
+ * ACL entries that have ACE4_SPECIAL_WHO set in ace->e_flags use the
+ * pointer values of these constants in ace->u.e_who to avoid massive
+ * amounts of string comparisons.
@@ -729,30 +842,30 @@
+
+ if (acl) {
+ memset(acl, 0, size);
++ atomic_set(&acl->a_refcount, 1);
+ acl->a_count = count;
+ }
+ return acl;
+}
+
-+#if 0
+/**
+ * nfs4acl_clone - create a copy of an acl
+ */
+struct nfs4acl *
-+nfs4acl_clone(struct nfs4acl *acl)
++nfs4acl_clone(const struct nfs4acl *acl)
+{
-+ struct nfs4acl *dup = nfs4acl_alloc(acl->a_count);
++ int count = acl->a_count;
++ size_t size = sizeof(struct nfs4acl) + count * sizeof(struct nfs4ace);
++ struct nfs4acl *dup = kmalloc(size, GFP_KERNEL);
+
-+ if (acl) {
-+ memcpy(dup, acl, sizeof(struct nfs4acl) +
-+ sizeof(struct nfs4ace) * acl->a_count);
++ if (dup) {
++ memcpy(dup, acl, size);
++ atomic_set(&dup->a_refcount, 1);
+ }
-+ return acl;
++ return dup;
+}
-+EXPORT_SYMBOL(nfs4acl_clone);
-+#endif
+
-+/**
++/*
+ * The POSIX permissions are supersets of the below mask flags.
+ *
+ * The ACE4_READ_ATTRIBUTES and ACE4_READ_ACL flags are always granted
@@ -794,7 +907,7 @@
+ * Compute the file mode permission bits from the file masks in the acl.
+ */
+int
-+nfs4acl_masks_to_mode(struct nfs4acl *acl)
++nfs4acl_masks_to_mode(const struct nfs4acl *acl)
+{
+ return nfs4acl_mask_to_mode(acl->a_owner_mask) << 6 |
+ nfs4acl_mask_to_mode(acl->a_group_mask) << 3 |
@@ -822,14 +935,34 @@
+ * @mode: file mode permission bits to apply to the @acl
+ *
+ * Converts the mask flags corresponding to the owner, group, and other file
-+ * permissions and updates the file masks in @acl accordingly.
++ * permissions and computes the file masks. Returns @acl if it already has the
++ * appropriate file masks, or updates the flags in a copy of @acl. Takes over
++ * @acl.
+ */
-+void
++struct nfs4acl *
+nfs4acl_chmod(struct nfs4acl *acl, mode_t mode)
+{
-+ acl->a_owner_mask = nfs4acl_mode_to_mask(mode >> 6);
-+ acl->a_group_mask = nfs4acl_mode_to_mask(mode >> 3);
-+ acl->a_other_mask = nfs4acl_mode_to_mask(mode);
++ unsigned int owner_mask, group_mask, other_mask;
++ struct nfs4acl *clone;
++
++ owner_mask = nfs4acl_mode_to_mask(mode >> 6);
++ group_mask = nfs4acl_mode_to_mask(mode >> 3);
++ other_mask = nfs4acl_mode_to_mask(mode);
++
++ if (acl->a_owner_mask == owner_mask &&
++ acl->a_group_mask == group_mask &&
++ acl->a_other_mask == other_mask)
++ return acl;
++
++ clone = nfs4acl_clone(acl);
++ nfs4acl_release(acl);
++ if (!clone)
++ return ERR_PTR(-ENOMEM);
++
++ clone->a_owner_mask = owner_mask;
++ clone->a_group_mask = group_mask;
++ clone->a_other_mask = other_mask;
++ return clone;
+}
+EXPORT_SYMBOL_GPL(nfs4acl_chmod);
+
@@ -871,7 +1004,7 @@
+__nfs4acl_permission(struct inode *inode, const struct nfs4acl *acl,
+ unsigned int mask, int *in_group_class)
+{
-+ struct nfs4ace *ace;
++ const struct nfs4ace *ace;
+ int retval = -EACCES;
+
+ nfs4acl_for_each_entry(ace, acl) {
@@ -1025,11 +1158,11 @@
+}
+EXPORT_SYMBOL_GPL(nfs4acl_permission);
+
-+/**
++/*
+ * nfs4ace_is_same_who - do both acl entries refer to the same identifier?
+ */
+int
-+nfs4ace_is_same_who(struct nfs4ace *a, struct nfs4ace *b)
++nfs4ace_is_same_who(const struct nfs4ace *a, const struct nfs4ace *b)
+{
+#define WHO_FLAGS (ACE4_SPECIAL_WHO | ACE4_IDENTIFIER_GROUP)
+ if ((a->e_flags & WHO_FLAGS) != (b->e_flags & WHO_FLAGS))
@@ -1136,9 +1269,9 @@
+ * set to the create mode.
+ */
+struct nfs4acl *
-+nfs4acl_inherit(struct nfs4acl *dir_acl, mode_t mode, int write_through)
++nfs4acl_inherit(const struct nfs4acl *dir_acl, mode_t mode, int write_through)
+{
-+ struct nfs4ace *dir_ace;
++ const struct nfs4ace *dir_ace;
+ struct nfs4acl *acl;
+ struct nfs4ace *ace;
+ int count = 0;
@@ -2053,7 +2186,7 @@
+ return acl;
+
+fail_einval:
-+ nfs4acl_free(acl);
++ nfs4acl_release(acl);
+ return ERR_PTR(-EINVAL);
+}
+EXPORT_SYMBOL_GPL(nfs4acl_from_xattr);
@@ -2062,7 +2195,7 @@
+nfs4acl_xattr_size(const struct nfs4acl *acl)
+{
+ size_t size = sizeof(struct nfs4acl_xattr);
-+ struct nfs4ace *ace;
++ const struct nfs4ace *ace;
+
+ nfs4acl_for_each_entry(ace, acl) {
+ size += sizeof(struct nfs4ace_xattr) +
@@ -2078,7 +2211,7 @@
+{
+ struct nfs4acl_xattr *xattr_acl = buffer;
+ struct nfs4ace_xattr *xattr_ace;
-+ struct nfs4ace *ace;
++ const struct nfs4ace *ace;
+
+ xattr_acl->a_version = ACL4_XATTR_VERSION;
+ xattr_acl->a_flags = 0;
@@ -2120,9 +2253,21 @@
/* Compatibility, for having both ext2_fs.h and ext3_fs.h included at once */
#ifndef _LINUX_EXT2_FS_H
+--- a/include/linux/ext3_fs_i.h
++++ b/include/linux/ext3_fs_i.h
+@@ -107,6 +107,9 @@ struct ext3_inode_info {
+ struct posix_acl *i_acl;
+ struct posix_acl *i_default_acl;
+ #endif
++#ifdef CONFIG_EXT3_FS_NFS4ACL
++ struct nfs4acl *i_nfs4acl;
++#endif
+
+ struct list_head i_orphan; /* unlinked but open inodes */
+
--- /dev/null
+++ b/include/linux/nfs4acl.h
-@@ -0,0 +1,181 @@
+@@ -0,0 +1,193 @@
+#ifndef __NFS4ACL_H
+#define __NFS4ACL_H
+
@@ -2137,6 +2282,7 @@
+};
+
+struct nfs4acl {
++ atomic_t a_refcount;
+ unsigned int a_owner_mask;
+ unsigned int a_group_mask;
+ unsigned int a_other_mask;
@@ -2215,6 +2361,27 @@
+ ACE4_WRITE_OWNER | \
+ ACE4_SYNCHRONIZE )
+
++/*
++ * Duplicate an NFS4ACL handle.
++ */
++static inline struct nfs4acl *
++nfs4acl_dup(struct nfs4acl *acl)
++{
++ if (acl)
++ atomic_inc(&acl->a_refcount);
++ return acl;
++}
++
++/*
++ * Free an NFS4ACL handle
++ */
++static inline void
++nfs4acl_release(struct nfs4acl *acl)
++{
++ if (acl && atomic_dec_and_test(&acl->a_refcount))
++ kfree(acl);
++}
++
+/* Special e_who identifiers: we use these pointer values in comparisons
+ instead of strcmp for efficiency. */
+
@@ -2223,40 +2390,40 @@
+extern const char *nfs4ace_everyone_who;
+
+static inline int
-+nfs4ace_is_owner(struct nfs4ace *ace)
++nfs4ace_is_owner(const struct nfs4ace *ace)
+{
+ return (ace->e_flags & ACE4_SPECIAL_WHO) &&
+ ace->u.e_who == nfs4ace_owner_who;
+}
+
+static inline int
-+nfs4ace_is_group(struct nfs4ace *ace)
++nfs4ace_is_group(const struct nfs4ace *ace)
+{
+ return (ace->e_flags & ACE4_SPECIAL_WHO) &&
+ ace->u.e_who == nfs4ace_group_who;
+}
+
+static inline int
-+nfs4ace_is_everyone(struct nfs4ace *ace)
++nfs4ace_is_everyone(const struct nfs4ace *ace)
+{
+ return (ace->e_flags & ACE4_SPECIAL_WHO) &&
+ ace->u.e_who == nfs4ace_everyone_who;
+}
+
+static inline int
-+nfs4ace_is_unix_id(struct nfs4ace *ace)
++nfs4ace_is_unix_id(const struct nfs4ace *ace)
+{
+ return !(ace->e_flags & ACE4_SPECIAL_WHO);
+}
+
+static inline int
-+nfs4ace_is_inherit_only(struct nfs4ace *ace)
++nfs4ace_is_inherit_only(const struct nfs4ace *ace)
+{
+ return ace->e_flags & ACE4_INHERIT_ONLY_ACE;
+}
+
+static inline int
-+nfs4ace_is_inheritable(struct nfs4ace *ace)
++nfs4ace_is_inheritable(const struct nfs4ace *ace)
+{
+ return ace->e_flags & (ACE4_FILE_INHERIT_ACE |
+ ACE4_DIRECTORY_INHERIT_ACE);
@@ -2272,35 +2439,25 @@
+}
+
+static inline int
-+nfs4ace_is_allow(struct nfs4ace *ace)
++nfs4ace_is_allow(const struct nfs4ace *ace)
+{
+ return ace->e_type == ACE4_ACCESS_ALLOWED_ACE_TYPE;
+}
+
+static inline int
-+nfs4ace_is_deny(struct nfs4ace *ace)
++nfs4ace_is_deny(const struct nfs4ace *ace)
+{
+ return ace->e_type == ACE4_ACCESS_DENIED_ACE_TYPE;
+}
+
-+extern int nfs4ace_dup(struct nfs4ace *, struct nfs4ace *);
-+extern void nfs4ace_free(struct nfs4ace *);
-+
+extern struct nfs4acl *nfs4acl_alloc(int count);
-+extern struct nfs4acl *nfs4acl_clone(struct nfs4acl *acl);
-+extern void __nfs4acl_free(struct nfs4acl *);
-+
-+static inline void
-+nfs4acl_free(struct nfs4acl *acl)
-+{
-+ kfree(acl);
-+}
++extern struct nfs4acl *nfs4acl_clone(const struct nfs4acl *acl);
+
+extern int nfs4acl_permission(struct inode *, const struct nfs4acl *, int, int);
-+extern int nfs4ace_is_same_who(struct nfs4ace *, struct nfs4ace *);
-+extern struct nfs4acl *nfs4acl_inherit(struct nfs4acl *, mode_t, int);
-+extern int nfs4acl_masks_to_mode(struct nfs4acl *);
-+extern void nfs4acl_chmod(struct nfs4acl *, mode_t);
++extern int nfs4ace_is_same_who(const struct nfs4ace *, const struct nfs4ace *);
++extern struct nfs4acl *nfs4acl_inherit(const struct nfs4acl *, mode_t, int);
++extern int nfs4acl_masks_to_mode(const struct nfs4acl *);
++extern struct nfs4acl *nfs4acl_chmod(struct nfs4acl *, mode_t);
+extern int nfs4acl_apply_masks(struct nfs4acl **acl, int);
+
+#endif /* __NFS4ACL_H */
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/patches.suse/nfs4acl-ext3-fix.diff new/patches.suse/nfs4acl-ext3-fix.diff
--- old/patches.suse/nfs4acl-ext3-fix.diff 2007-01-12 20:45:21.000000000 +0100
+++ new/patches.suse/nfs4acl-ext3-fix.diff 1970-01-01 01:00:00.000000000 +0100
@@ -1,151 +0,0 @@
-From: Andreas Gruenbacher
-Subject: Fix bug in error path
-
-Signed-off-by: Andreas Gruenbacher
-
----
- fs/ext3/nfs4acl.c | 21 ++++++++-------------
- fs/nfs4acl_base.c | 2 +-
- fs/nfs4acl_xattr.c | 4 ++--
- include/linux/nfs4acl.h | 16 ++++++++--------
- 4 files changed, 19 insertions(+), 24 deletions(-)
-
---- linux-2.6.19.orig/fs/ext3/nfs4acl.c
-+++ linux-2.6.19/fs/ext3/nfs4acl.c
-@@ -95,32 +95,27 @@ int
- ext3_nfs4acl_init(handle_t *handle, struct inode *inode, struct inode *dir)
- {
- struct nfs4acl *dir_acl, *acl;
-- int retval = 0;
-+ int retval;
-
- BUG_ON(!test_opt(inode->i_sb, NFS4ACL));
-
- dir_acl = ext3_get_nfs4acl(dir);
-- retval = PTR_ERR(dir_acl);
-- if (!dir_acl || IS_ERR(dir_acl))
-- goto out;
-+ if (!dir_acl || IS_ERR(dir_acl)) {
-+ retval = PTR_ERR(dir_acl);
-+ inode->i_mode &= ~current->fs->umask;
-+ return retval;
-+ }
- acl = nfs4acl_inherit(dir_acl, inode->i_mode,
- test_opt(inode->i_sb, NFS4ACL_MAX));
- nfs4acl_free(dir_acl);
-
-- if (IS_ERR(acl))
-- return PTR_ERR(acl);
-- else if (acl) {
-+ retval = PTR_ERR(acl);
-+ if (acl && !IS_ERR(acl)) {
- retval = ext3_set_nfs4acl(handle, inode, acl);
- inode->i_mode = (inode->i_mode & ~S_IRWXUGO) |
- nfs4acl_masks_to_mode(acl);
- nfs4acl_free(acl);
-- return retval;
- }
--
--out:
-- if (!retval)
-- inode->i_mode &= ~current->fs->umask;
--
- return retval;
- }
-
---- linux-2.6.19.orig/fs/nfs4acl_base.c
-+++ linux-2.6.19/fs/nfs4acl_base.c
-@@ -188,7 +188,7 @@ static int
- __nfs4acl_permission(struct inode *inode, const struct nfs4acl *acl,
- unsigned int mask, int *in_group_class)
- {
-- struct nfs4ace *ace;
-+ const struct nfs4ace *ace;
- int retval = -EACCES;
-
- nfs4acl_for_each_entry(ace, acl) {
---- linux-2.6.19.orig/fs/nfs4acl_xattr.c
-+++ linux-2.6.19/fs/nfs4acl_xattr.c
-@@ -105,7 +105,7 @@ size_t
- nfs4acl_xattr_size(const struct nfs4acl *acl)
- {
- size_t size = sizeof(struct nfs4acl_xattr);
-- struct nfs4ace *ace;
-+ const struct nfs4ace *ace;
-
- nfs4acl_for_each_entry(ace, acl) {
- size += sizeof(struct nfs4ace_xattr) +
-@@ -121,7 +121,7 @@ nfs4acl_to_xattr(const struct nfs4acl *a
- {
- struct nfs4acl_xattr *xattr_acl = buffer;
- struct nfs4ace_xattr *xattr_ace;
-- struct nfs4ace *ace;
-+ const struct nfs4ace *ace;
-
- xattr_acl->a_version = ACL4_XATTR_VERSION;
- xattr_acl->a_flags = 0;
---- linux-2.6.19.orig/include/linux/nfs4acl.h
-+++ linux-2.6.19/include/linux/nfs4acl.h
-@@ -98,40 +98,40 @@ extern const char *nfs4ace_group_who;
- extern const char *nfs4ace_everyone_who;
-
- static inline int
--nfs4ace_is_owner(struct nfs4ace *ace)
-+nfs4ace_is_owner(const struct nfs4ace *ace)
- {
- return (ace->e_flags & ACE4_SPECIAL_WHO) &&
- ace->u.e_who == nfs4ace_owner_who;
- }
-
- static inline int
--nfs4ace_is_group(struct nfs4ace *ace)
-+nfs4ace_is_group(const struct nfs4ace *ace)
- {
- return (ace->e_flags & ACE4_SPECIAL_WHO) &&
- ace->u.e_who == nfs4ace_group_who;
- }
-
- static inline int
--nfs4ace_is_everyone(struct nfs4ace *ace)
-+nfs4ace_is_everyone(const struct nfs4ace *ace)
- {
- return (ace->e_flags & ACE4_SPECIAL_WHO) &&
- ace->u.e_who == nfs4ace_everyone_who;
- }
-
- static inline int
--nfs4ace_is_unix_id(struct nfs4ace *ace)
-+nfs4ace_is_unix_id(const struct nfs4ace *ace)
- {
- return !(ace->e_flags & ACE4_SPECIAL_WHO);
- }
-
- static inline int
--nfs4ace_is_inherit_only(struct nfs4ace *ace)
-+nfs4ace_is_inherit_only(const struct nfs4ace *ace)
- {
- return ace->e_flags & ACE4_INHERIT_ONLY_ACE;
- }
-
- static inline int
--nfs4ace_is_inheritable(struct nfs4ace *ace)
-+nfs4ace_is_inheritable(const struct nfs4ace *ace)
- {
- return ace->e_flags & (ACE4_FILE_INHERIT_ACE |
- ACE4_DIRECTORY_INHERIT_ACE);
-@@ -147,13 +147,13 @@ nfs4ace_clear_inheritance_flags(struct n
- }
-
- static inline int
--nfs4ace_is_allow(struct nfs4ace *ace)
-+nfs4ace_is_allow(const struct nfs4ace *ace)
- {
- return ace->e_type == ACE4_ACCESS_ALLOWED_ACE_TYPE;
- }
-
- static inline int
--nfs4ace_is_deny(struct nfs4ace *ace)
-+nfs4ace_is_deny(const struct nfs4ace *ace)
- {
- return ace->e_type == ACE4_ACCESS_DENIED_ACE_TYPE;
- }
++++++ patches.uml.tar.bz2 ++++++
++++++ patches.xen.tar.bz2 ++++++
++++++ series.conf ++++++
--- kernel-source/series.conf 2007-08-16 17:42:36.000000000 +0200
+++ /mounts/work_src_done/STABLE/kernel-source/series.conf 2007-08-17 21:27:41.000000000 +0200
@@ -82,6 +82,7 @@
patches.arch/ppc-efika-of_device-generic-uevent.patch
patches.arch/ppc-efika-psc-console-autodetection.patch
patches.arch/ppc-pegasos-console-autodetection.patch
+ patches.arch/ppc-pegasos-via-ata-legacy-irq.patch
# PS3 git snapshot: ffc742be975446e7520980f77d144b6d5cc412cc
patches.arch/ppc-ps3tree-ps3-stable_cell-add-spu-shutdown-method.diff
@@ -210,6 +211,8 @@
#
########################################################
+ patches.fixes/invalid-semicolon
+
########################################################
#
# ACPI patches
@@ -272,7 +275,6 @@
# NFSv4 ACL support (agruen -- experimental)
patches.suse/parser-match_string.diff
patches.suse/nfs4acl-ext3.diff
- patches.suse/nfs4acl-ext3-fix.diff
########################################################
# reiser
@@ -339,6 +341,8 @@
patches.fixes/scsi-conditionally-build-dma-functions
patches.drivers/lpfc-use-dma_map-for-NPIV
patches.drivers/qla2xxx-npiv-support
+ patches.drivers/scsi-throttle-SG_DXFER_TO_FROM_DEV-warning-better
+
patches.drivers/libata-ata_piix-vmw-ign-DMA-err
# libata-pmp
@@ -405,6 +409,7 @@
# PCI and PCI hotplug
########################################################
patches.drivers/pci-rs690-disable-msi
+ patches.drivers/pci-rd580-disable-msi
########################################################
# sysfs / driver core
@@ -576,6 +581,7 @@
patches.apparmor/apparmor-misc.diff
patches.apparmor/apparmor-intree.diff
patches.apparmor/apparmor-network.diff
+ patches.apparmor/apparmor-stack_secondary.diff
patches.apparmor/do_path_lookup-nameidata.diff
patches.apparmor/sys_fchdir-nameidata.diff
patches.apparmor/file_permission-nameidata.diff
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
---------------------------------------------------------------------
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org