openSUSE Commits
Threads by month
- ----- 2024 -----
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
May 2009
- 1 participants
- 754 discussions
Hello community,
here is the log from the commit of package xorg-x11 for openSUSE:Factory
checked in at Fri May 15 22:07:43 CEST 2009.
--------
--- xorg-x11/xorg-x11.changes 2009-04-23 11:30:10.000000000 +0200
+++ xorg-x11/xorg-x11.changes 2009-05-07 10:43:47.000000000 +0200
@@ -1,0 +2,13 @@
+Thu May 7 10:42:57 CEST 2009 - sndirsch(a)suse.de
+
+- xinput 1.4.1
+ * This release brings mainly 64-bit fixes. Also, the device list
+ now prints out the type (MOUSE, KEYBOARD, etc.).
+
+-------------------------------------------------------------------
+Sat Apr 25 14:16:39 CEST 2009 - sndirsch(a)suse.de
+
+- keytable4hal
+ * fixed it again ('x' means nothing specified!)
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
Old:
----
xinput-1.4.1.tar.bz2
New:
----
xinput-1.4.2.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ xorg-x11.spec ++++++
--- /var/tmp/diff_new_pack.m24248/_old 2009-05-15 22:06:39.000000000 +0200
+++ /var/tmp/diff_new_pack.m24248/_new 2009-05-15 22:06:39.000000000 +0200
@@ -26,7 +26,7 @@
%endif
Url: http://xorg.freedesktop.org/
Version: 7.4
-Release: 19
+Release: 20
License: X11/MIT
BuildRoot: %{_tmppath}/%{name}-%{version}-build
Group: System/X11/Utilities
@@ -134,7 +134,7 @@
Source93: mkcomposecache-1.2.tar.bz2
Source94: rendercheck-1.3.tar.bz2
Source96: xbacklight-1.1.tar.bz2
-Source97: xinput-1.4.1.tar.bz2
+Source97: xinput-1.4.2.tar.bz2
Source98: xcompmgr-1.1.4.tar.bz2
Source99: xrestop-0.4.tar.gz
Source200: misc.tar.bz2
@@ -536,6 +536,13 @@
%{_mandir}/man1/xauth.1*
%changelog
+* Thu May 07 2009 sndirsch(a)suse.de
+- xinput 1.4.1
+ * This release brings mainly 64-bit fixes. Also, the device list
+ now prints out the type (MOUSE, KEYBOARD, etc.).
+* Sat Apr 25 2009 sndirsch(a)suse.de
+- keytable4hal
+ * fixed it again ('x' means nothing specified!)
* Thu Apr 23 2009 sndirsch(a)suse.de
- mkfontscale-skip_symlinks.diff
* skip symlinks if they refer to files in the same directory
++++++ xdm.tar.bz2 ++++++
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/etc/X11/xdm/keytable4hal new/etc/X11/xdm/keytable4hal
--- old/etc/X11/xdm/keytable4hal 2009-04-22 12:25:32.000000000 +0200
+++ new/etc/X11/xdm/keytable4hal 2009-04-25 14:15:39.000000000 +0200
@@ -46,12 +46,12 @@
EOF
-if [ "x$layout" != "x" ]; then
+if [ "$layout" != "x" ]; then
echo " <merge key=\"input.xkb.layout\" type=\"string\">$layout</merge>" >> $halfile
- if [ "x$variant" != "x" ]; then
+ if [ "$variant" != "x" ]; then
echo " <merge key=\"input.xkb.variant\" type=\"string\">$variant</merge>" >> $halfile
fi
- if [ "x$options" != "x" ]; then
+ if [ "$options" != "x" ]; then
echo " <merge key=\"input.xkb.options\" type=\"string\">$options</merge>" >> $halfile
fi
fi
++++++ xinput-1.4.1.tar.bz2 -> xinput-1.4.2.tar.bz2 ++++++
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/xinput-1.4.1/aclocal.m4 new/xinput-1.4.2/aclocal.m4
--- old/xinput-1.4.1/aclocal.m4 2009-04-06 02:03:31.000000000 +0200
+++ new/xinput-1.4.2/aclocal.m4 2009-05-07 07:21:22.000000000 +0200
@@ -1,4 +1,4 @@
-# generated automatically by aclocal 1.10.1 -*- Autoconf -*-
+# generated automatically by aclocal 1.10.2 -*- Autoconf -*-
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
# 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
@@ -13,7 +13,7 @@
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-m4_if(AC_AUTOCONF_VERSION, [2.63],,
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.63],,
[m4_warning([this file was generated for autoconf 2.63.
You have another version of autoconf. It may work, but is not guaranteed to.
If you have problems, you may need to regenerate the build system entirely.
@@ -175,7 +175,7 @@
fi[]dnl
])# PKG_CHECK_MODULES
-# Copyright (C) 2002, 2003, 2005, 2006, 2007 Free Software Foundation, Inc.
+# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -190,7 +190,7 @@
[am__api_version='1.10'
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
dnl require some minimum version. Point them to the right macro.
-m4_if([$1], [1.10.1], [],
+m4_if([$1], [1.10.2], [],
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
])
@@ -204,12 +204,12 @@
# AM_SET_CURRENT_AUTOMAKE_VERSION
# -------------------------------
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
-# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
+# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.10.1])dnl
+[AM_AUTOMAKE_VERSION([1.10.2])dnl
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-_AM_AUTOCONF_VERSION(AC_AUTOCONF_VERSION)])
+_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
@@ -459,19 +459,28 @@
# Generate code to set up dependency tracking. -*- Autoconf -*-
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
# Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-#serial 3
+#serial 4
# _AM_OUTPUT_DEPENDENCY_COMMANDS
# ------------------------------
AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
-[for mf in $CONFIG_FILES; do
+[# Autoconf 2.62 quotes --file arguments for eval, but not when files
+# are listed without --file. Let's play safe and only enable the eval
+# if we detect the quoting.
+case $CONFIG_FILES in
+*\'*) eval set x "$CONFIG_FILES" ;;
+*) set x $CONFIG_FILES ;;
+esac
+shift
+for mf
+do
# Strip MF so we end up with the name of the file.
mf=`echo "$mf" | sed -e 's/:.*$//'`
# Check whether this is an Automake generated Makefile or not.
@@ -844,13 +853,13 @@
# Helper functions for option handling. -*- Autoconf -*-
-# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
+# Copyright (C) 2001, 2002, 2003, 2005, 2008 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 3
+# serial 4
# _AM_MANGLE_OPTION(NAME)
# -----------------------
@@ -867,7 +876,7 @@
# ----------------------------------
# OPTIONS is a space-separated list of Automake options.
AC_DEFUN([_AM_SET_OPTIONS],
-[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
# -------------------------------------------
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/xinput-1.4.1/ChangeLog new/xinput-1.4.2/ChangeLog
--- old/xinput-1.4.1/ChangeLog 2009-04-06 02:03:35.000000000 +0200
+++ new/xinput-1.4.2/ChangeLog 2009-05-07 07:21:28.000000000 +0200
@@ -1,3 +1,94 @@
+commit 5600d953531f377b5be114c9b72aca281f9bbca5
+Author: Peter Hutterer <peter.hutterer(a)who-t.net>
+Date: Thu May 7 15:21:16 2009 +1000
+
+ xinput 1.4.2
+
+commit 0996eebd20b017078b7a61e42b13b3c1c5acd1b8
+Author: Peter Hutterer <peter.hutterer(a)who-t.net>
+Date: Thu May 7 14:00:46 2009 +1000
+
+ XCloseDisplay when we're done.
+
+ This isn't really necessary, but we might as well be correct.
+
+ Signed-off-by: Peter Hutterer <peter.hutterer(a)who-t.net>
+ (cherry picked from commit 4832dc1f3ee8d11eadc99b5cd4e8158773d11f9b)
+
+commit c6c2736a31c00717c5915e97a22b85d96ce163fe
+Author: Peter Hutterer <peter.hutterer(a)who-t.net>
+Date: Fri May 1 11:22:53 2009 +1000
+
+ Create the float property if it doesn't exist.
+
+ If we don't have the float property we won't be able to use float properties
+ for device configuration since the drivers may not understand it.
+ We might still want to apply properties for client settings though.
+
+ Reported-by: Simon Thum <simon.thum(a)gmx.de>
+ Signed-off-by: Peter Hutterer <peter.hutterer(a)who-t.net>
+ (cherry picked from commit 4b4b2e3f31cf08073887d8583997eb3340a6c2e1)
+
+commit c7df478676b6573a07f74484668f9130706c4a1f
+Author: Peter Hutterer <peter.hutterer(a)who-t.net>
+Date: Thu Apr 30 14:50:08 2009 +1000
+
+ If there's multiple null-terminated strings in the property, print all.
+
+ Signed-off-by: Peter Hutterer <peter.hutterer(a)who-t.net>
+ Signed-off-by: Simon Thum <simon.thum(a)gmx.de>
+ (cherry picked from commit 42dca922d287ffddcf2185ca96738f1505a04c27)
+
+commit 0616fc2e8c76c70d95173377abf39b2c7edfce19
+Author: Peter Hutterer <peter.hutterer(a)who-t.net>
+Date: Fri May 1 09:14:46 2009 +1000
+
+ The float_atom should actually be an Atom
+
+ Signed-off-by: Peter Hutterer <peter.hutterer(a)who-t.net>
+ (cherry picked from commit e9af7c5f602b5580df36c77ee1c2ed22ccf72134)
+
+commit 4fa194b42a5a6a15b533be070d21d981751b9b83
+Author: Peter Hutterer <peter.hutterer(a)redhat.com>
+Date: Thu Apr 16 09:20:16 2009 -0400
+
+ Fix set-float-prop on 64-bit architectures.
+
+ Since 32-byte data on 64-bit machines must be passed in as 64-bit longs, let's
+ typecast around a bit.
+
+ Signed-off-by: Peter Hutterer <peter.hutterer(a)redhat.com>
+ (cherry picked from commit a577bada8dddf3241a59cab812f5128131c46b29)
+
+commit 7abb366e80d3a309d4ab8cd459ce184c6806b6d1
+Author: Peter Hutterer <peter.hutterer(a)who-t.net>
+Date: Tue Apr 14 09:13:15 2009 -0400
+
+ fix 64 bit issues with set-int-prop and list-props.
+
+ libX11 uses longs for 32 bit values, increasing hilarity on 64 bit machines.
+
+ Signed-off-by: Peter Hutterer <peter.hutterer(a)who-t.net>
+ (cherry picked from commit de6326a75de810752a5b4e4c2f5fe98a2f7241a9)
+
+commit 4dc5f13e13c9434d6fa9ed9f10a8e12a55aedc24
+Author: Simon Thum <simon.thum(a)gmx.de>
+Date: Thu Mar 26 13:52:15 2009 +0100
+
+ xinput: include device type in device list
+
+ Signed-off-by: Peter Hutterer <peter.hutterer(a)who-t.net>
+ (cherry picked from commit 2f8f2193fdfe783c0854772cc46f1b2e0b2e3ec4)
+
+commit 61b2df1cd0135d90c65219cfa17caedbe60a44a2
+Author: Simon Thum <simon.thum(a)gmx.de>
+Date: Thu Mar 26 15:19:47 2009 +0100
+
+ xinput: mention set-float-prop in manpage
+
+ Signed-off-by: Peter Hutterer <peter.hutterer(a)who-t.net>
+ (cherry picked from commit 17d537fd65ba9b1c99a0dde7833eb4069cc624a8)
+
commit 286724a1417ffda447be918e8bcf46cc37ed715b
Author: Peter Hutterer <peter.hutterer(a)who-t.net>
Date: Mon Apr 6 09:54:07 2009 +1000
@@ -201,7 +292,7 @@
Use new XQueryInputVersion() request to tell the server we can do XI 2.
commit e3b705dc15d07bbb478ced6b54a5e0553d978113
-Merge: ac3498c... 834422a...
+Merge: ac3498c 834422a
Author: Peter Hutterer <peter(a)cs.unisa.edu.au>
Date: Mon Apr 7 17:24:16 2008 +0930
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/xinput-1.4.1/configure new/xinput-1.4.2/configure
--- old/xinput-1.4.1/configure 2009-04-06 02:03:32.000000000 +0200
+++ new/xinput-1.4.2/configure 2009-05-07 07:21:23.000000000 +0200
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.63 for xinput 1.4.1.
+# Generated by GNU Autoconf 2.63 for xinput 1.4.2.
#
# Report bugs to <https://bugs.freedesktop.org/enter_bug.cgi?product=xorg>.
#
@@ -596,8 +596,8 @@
# Identity of this package.
PACKAGE_NAME='xinput'
PACKAGE_TARNAME='xinput'
-PACKAGE_VERSION='1.4.1'
-PACKAGE_STRING='xinput 1.4.1'
+PACKAGE_VERSION='1.4.2'
+PACKAGE_STRING='xinput 1.4.2'
PACKAGE_BUGREPORT='https://bugs.freedesktop.org/enter_bug.cgi?product=xorg'
# Factoring default headers for most tests.
@@ -1320,7 +1320,7 @@
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures xinput 1.4.1 to adapt to many kinds of systems.
+\`configure' configures xinput 1.4.2 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1390,7 +1390,7 @@
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of xinput 1.4.1:";;
+ short | recursive ) echo "Configuration of xinput 1.4.2:";;
esac
cat <<\_ACEOF
@@ -1489,7 +1489,7 @@
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-xinput configure 1.4.1
+xinput configure 1.4.2
generated by GNU Autoconf 2.63
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -1503,7 +1503,7 @@
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by xinput $as_me 1.4.1, which was
+It was created by xinput $as_me 1.4.2, which was
generated by GNU Autoconf 2.63. Invocation command line was
$ $0 $@
@@ -2219,7 +2219,7 @@
# Define the identity of the package.
PACKAGE='xinput'
- VERSION='1.4.1'
+ VERSION='1.4.2'
cat >>confdefs.h <<_ACEOF
@@ -5298,7 +5298,7 @@
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by xinput $as_me 1.4.1, which was
+This file was extended by xinput $as_me 1.4.2, which was
generated by GNU Autoconf 2.63. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -5361,7 +5361,7 @@
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_version="\\
-xinput config.status 1.4.1
+xinput config.status 1.4.2
configured by $0, generated by GNU Autoconf 2.63,
with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
@@ -6143,7 +6143,16 @@
case $ac_file$ac_mode in
- "depfiles":C) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do
+ "depfiles":C) test x"$AMDEP_TRUE" != x"" || # Autoconf 2.62 quotes --file arguments for eval, but not when files
+# are listed without --file. Let's play safe and only enable the eval
+# if we detect the quoting.
+case $CONFIG_FILES in
+*\'*) eval set x "$CONFIG_FILES" ;;
+*) set x $CONFIG_FILES ;;
+esac
+shift
+for mf
+do
# Strip MF so we end up with the name of the file.
mf=`echo "$mf" | sed -e 's/:.*$//'`
# Check whether this is an Automake generated Makefile or not.
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/xinput-1.4.1/configure.ac new/xinput-1.4.2/configure.ac
--- old/xinput-1.4.1/configure.ac 2009-04-06 02:01:44.000000000 +0200
+++ new/xinput-1.4.2/configure.ac 2009-05-07 07:15:34.000000000 +0200
@@ -2,7 +2,7 @@
dnl Process this file with autoconf to create configure.
AC_PREREQ([2.57])
-AC_INIT(xinput,[1.4.1], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],xinput)
+AC_INIT(xinput,[1.4.2], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],xinput)
AM_INIT_AUTOMAKE([dist-bzip2])
AM_MAINTAINER_MODE
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/xinput-1.4.1/Makefile.in new/xinput-1.4.2/Makefile.in
--- old/xinput-1.4.1/Makefile.in 2009-04-06 02:03:32.000000000 +0200
+++ new/xinput-1.4.2/Makefile.in 2009-05-07 07:21:24.000000000 +0200
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -336,7 +336,7 @@
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
- $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
mkid -fID $$unique
tags: TAGS
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/xinput-1.4.1/man/Makefile.in new/xinput-1.4.2/man/Makefile.in
--- old/xinput-1.4.1/man/Makefile.in 2009-04-06 02:03:32.000000000 +0200
+++ new/xinput-1.4.2/man/Makefile.in 2009-05-07 07:21:24.000000000 +0200
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -219,8 +219,8 @@
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
- && exit 0; \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/xinput-1.4.1/man/xinput.man new/xinput-1.4.2/man/xinput.man
--- old/xinput-1.4.1/man/xinput.man 2008-09-29 06:45:36.000000000 +0200
+++ new/xinput-1.4.2/man/xinput.man 2009-05-07 07:14:01.000000000 +0200
@@ -65,6 +65,10 @@
are 8, 16, or 32, depending on the property.
.PP
.TP 8
+.B xinput set-float-prop \fIdevice_name\fP \fIproperty\fP \fIvalue\fP
+Sets a float property for the device.
+.PP
+.TP 8
.B xinput watch-props \fIdevice_name\fP
Prints to standard out when property changes occur.
.PP
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/xinput-1.4.1/src/list.c new/xinput-1.4.2/src/list.c
--- old/xinput-1.4.1/src/list.c 2009-04-06 01:50:22.000000000 +0200
+++ new/xinput-1.4.2/src/list.c 2009-05-07 07:14:01.000000000 +0200
@@ -26,7 +26,7 @@
#include <X11/extensions/XIproto.h> /* for XI_Device***ChangedNotify */
static void
-print_info(XDeviceInfo *info, Bool shortformat)
+print_info(Display* dpy, XDeviceInfo *info, Bool shortformat)
{
int i,j;
XAnyClassPtr any;
@@ -65,6 +65,9 @@
if (shortformat)
return;
+ if(info->type != None)
+ printf("\tType is %s\n", XGetAtomName(dpy, info->type));
+
if (info->num_classes > 0) {
any = (XAnyClassPtr) (info->inputclassinfo);
for (i=0; i<info->num_classes; i++) {
@@ -140,7 +143,7 @@
do {
info = XListInputDevices(display, &num_devices);
for(loop=0; loop<num_devices; loop++) {
- print_info(info+loop, shortformat);
+ print_info(display, info+loop, shortformat);
}
#if HAVE_XI2
@@ -175,7 +178,7 @@
fprintf(stderr, "unable to find device %s\n", argv[loop]);
ret = EXIT_FAILURE;
} else {
- print_info(info, shortformat);
+ print_info(display, info, shortformat);
}
}
return ret;
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/xinput-1.4.1/src/Makefile.in new/xinput-1.4.2/src/Makefile.in
--- old/xinput-1.4.1/src/Makefile.in 2009-04-06 02:03:32.000000000 +0200
+++ new/xinput-1.4.2/src/Makefile.in 2009-05-07 07:21:24.000000000 +0200
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -229,8 +229,8 @@
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
- && exit 0; \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
@@ -320,7 +320,7 @@
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
- $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
mkid -fID $$unique
tags: TAGS
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/xinput-1.4.1/src/property.c new/xinput-1.4.2/src/property.c
--- old/xinput-1.4.1/src/property.c 2009-01-22 04:15:27.000000000 +0100
+++ new/xinput-1.4.2/src/property.c 2009-05-07 07:14:01.000000000 +0200
@@ -42,7 +42,7 @@
int act_format;
unsigned long nitems, bytes_after;
unsigned char *data, *ptr;
- int j, done = False;
+ int j, done = False, size;
name = XGetAtomName(dpy, property);
printf("\t%s (%ld):\t", name, property);
@@ -51,10 +51,17 @@
AnyPropertyType, &act_type, &act_format,
&nitems, &bytes_after, &data) == Success)
{
- int float_atom = XInternAtom(dpy, "FLOAT", False);
+ Atom float_atom = XInternAtom(dpy, "FLOAT", True);
ptr = data;
+ switch(act_format)
+ {
+ case 8: size = sizeof(char); break;
+ case 16: size = sizeof(short); break;
+ case 32: size = sizeof(long); break;
+ }
+
for (j = 0; j < nitems; j++)
{
switch(act_type)
@@ -63,19 +70,28 @@
switch(act_format)
{
case 8:
- printf("%d", *((int8_t*)ptr));
+ printf("%d", *((char*)ptr));
break;
case 16:
- printf("%d", *((int16_t*)ptr));
+ printf("%d", *((short*)ptr));
break;
case 32:
- printf("%d", *((int32_t*)ptr));
+ printf("%ld", *((long*)ptr));
break;
}
break;
case XA_STRING:
+ if (act_format != 8)
+ {
+ printf("Unknown string format.\n");
+ done = True;
+ break;
+ }
printf("\"%s\"", ptr);
- done = True;
+ j += strlen((char*)ptr); /* The loop's j++ jumps over the
+ terminating 0 */
+ ptr += strlen((char*)ptr); /* ptr += size below jumps over
+ the terminating 0 */
break;
case XA_ATOM:
printf("\"%s\"", XGetAtomName(dpy, *(Atom*)ptr));
@@ -93,7 +109,7 @@
break;
}
- ptr += act_format/8;
+ ptr += size;
if (j < nitems - 1)
printf(", ");
@@ -210,19 +226,19 @@
return EXIT_FAILURE;
}
- data = calloc(nelements, format/8);
+ data = calloc(nelements, sizeof(long));
for (i = 0; i < nelements; i++)
{
switch(format)
{
case 8:
- *(((int8_t*)data) + i) = atoi(argv[3 + i]);
+ *(((char*)data) + i) = atoi(argv[3 + i]);
break;
case 16:
- *(((int16_t*)data) + i) = atoi(argv[3 + i]);
+ *(((short*)data) + i) = atoi(argv[3 + i]);
break;
case 32:
- *(((int32_t*)data) + i) = atoi(argv[3 + i]);
+ *(((long*)data) + i) = atoi(argv[3 + i]);
break;
}
}
@@ -244,7 +260,7 @@
char *name;
int i;
Bool is_atom = True;
- float *data;
+ long *data;
int nelements = 0;
char* endptr;
@@ -298,10 +314,10 @@
return EXIT_FAILURE;
}
- data = calloc(nelements, 4);
+ data = calloc(nelements, sizeof(long));
for (i = 0; i < nelements; i++)
{
- *(data + i) = strtod(argv[2 + i], &endptr);
+ *((float*)(data + i)) = strtod(argv[2 + i], &endptr);
if(endptr == argv[2 + i]){
fprintf(stderr, "argument %s could not be parsed\n", argv[2 + i]);
return EXIT_FAILURE;
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/xinput-1.4.1/src/xinput.c new/xinput-1.4.2/src/xinput.c
--- old/xinput-1.4.1/src/xinput.c 2009-04-06 02:01:44.000000000 +0200
+++ new/xinput-1.4.2/src/xinput.c 2009-05-07 07:14:20.000000000 +0200
@@ -246,6 +246,7 @@
int r = (*driver->func)(display, argc-2, argv+2,
driver->func_name, driver->arg_desc);
XSync(display, False);
+ XCloseDisplay(display);
return r;
}
driver++;
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package postgresql for openSUSE:Factory
checked in at Fri May 15 22:05:58 CEST 2009.
--------
--- postgresql/postgresql.changes 2009-01-07 13:26:58.000000000 +0100
+++ postgresql/postgresql.changes 2009-05-06 17:59:50.000000000 +0200
@@ -1,0 +2,28 @@
+Wed May 6 17:57:43 CEST 2009 - max(a)suse.de
+
+- Remove dependency on local posixrules from horology test.
+
+-------------------------------------------------------------------
+Mon Mar 23 18:12:42 CET 2009 - max(a)suse.de
+
+- Security release 8.3.7
+
+ * Fixes a vulnerability that allowed remote authenticated
+ users to cause a denial of service (stack consumption)
+ via mismatched encoding conversion requests.
+
+ * Details of the other bugfixes contained in this and
+ previous releases can be found here:
+ http://www.postgresql.org/docs/8.3/static/release.html
+ /usr/share/doc/packages/postgresql/HISTORY
+
+- Users of GiST indexes should "REINDEX" them after installing
+ this update.
+
+- Re-added libpgport.a to the devel package, as some apps require
+ it, although it is meant to be internal to the PostgreSQL
+ backend.
+
+- Fix removal of leftover files on database startup (bnc#473644).
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
Old:
----
postgresql-8.3.5.tar.bz2
New:
----
postgresql-8.3.7.tar.bz2
postgresql-regress.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ postgresql-pl.spec ++++++
--- /var/tmp/diff_new_pack.n16484/_old 2009-05-15 22:01:41.000000000 +0200
+++ /var/tmp/diff_new_pack.n16484/_new 2009-05-15 22:01:41.000000000 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package postgresql-pl (Version 8.3.5)
+# spec file for package postgresql-pl (Version 8.3.7)
#
# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
@@ -23,8 +23,8 @@
BuildRequires: ncurses-devel
BuildRequires: python-devel tcl-devel
Summary: The PL/Tcl, PL/Perl, and PL/Python Procedural Languages for PostgreSQL
-Version: 8.3.5
-Release: 2
+Version: 8.3.7
+Release: 1
%define pg_minor_version %(echo %version | cut -f1-2 -d.)
License: BSD 3-Clause
Group: Productivity/Databases/Servers
++++++ postgresql.spec ++++++
--- /var/tmp/diff_new_pack.n16484/_old 2009-05-15 22:01:41.000000000 +0200
+++ /var/tmp/diff_new_pack.n16484/_new 2009-05-15 22:01:41.000000000 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package postgresql (Version 8.3.5)
+# spec file for package postgresql (Version 8.3.7)
#
# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
@@ -22,8 +22,8 @@
BuildRequires: openldap2-devel openssl-devel pam-devel readline-devel zlib-devel
BuildRequires: ncurses-devel
Summary: Basic Clients and Utilities for PostgreSQL
-Version: 8.3.5
-Release: 2
+Version: 8.3.7
+Release: 1
%define pg_minor_version %(echo %version | cut -f1-2 -d.)
License: BSD 3-Clause
Group: Productivity/Databases/Tools
@@ -37,6 +37,7 @@
Source17: postgresql-rpmlintrc
Source99: postgresql-pl.spec
Patch1: postgresql-8.3-conf.patch
+Patch2: postgresql-regress.patch
PreReq: postgresql-libs = %pg_minor_version
Url: http://www.postgresql.org/
Provides: postgresql = %pg_minor_version
@@ -214,6 +215,7 @@
%prep
%setup -q
%patch1
+%patch2
%build
export CFLAGS="%optflags $SP"
@@ -264,8 +266,8 @@
%install
make DESTDIR=%buildroot install
-# Don't ship static libraries.
-rm %buildroot/%_libdir/*.a
+# Don't ship static libraries, libpgport.a is needed, though.
+rm %buildroot/%_libdir/{libecpg,libecpg_compat,libpgtypes,libpq}.a
#
# Install and collect the contrib stuff
#
@@ -450,12 +452,30 @@
%_bindir/ecpg
%_bindir/pg_config
%_libdir/lib*.so
+%_libdir/libpgport.a
%_libdir/postgresql/pgxs
%_datadir/locale/*/*/pg_config.mo
%doc %_mandir/man1/ecpg.1*
%doc %_mandir/man1/pg_config.1*
%changelog
+* Wed May 06 2009 max(a)suse.de
+- Remove dependency on local posixrules from horology test.
+* Mon Mar 23 2009 max(a)suse.de
+- Security release 8.3.7
+ * Fixes a vulnerability that allowed remote authenticated
+ users to cause a denial of service (stack consumption)
+ via mismatched encoding conversion requests.
+ * Details of the other bugfixes contained in this and
+ previous releases can be found here:
+ http://www.postgresql.org/docs/8.3/static/release.html
+ /usr/share/doc/packages/postgresql/HISTORY
+- Users of GiST indexes should "REINDEX" them after installing
+ this update.
+- Re-added libpgport.a to the devel package, as some apps require
+ it, although it is meant to be internal to the PostgreSQL
+ backend.
+- Fix removal of leftover files on database startup (bnc#473644).
* Wed Jan 07 2009 olh(a)suse.de
- obsolete old -XXbit packages (bnc#437293)
* Wed Nov 05 2008 max(a)suse.de
@@ -782,7 +802,7 @@
- Correct PreReq
* Mon Aug 19 2002 kukuk(a)suse.de
- Fix requires egenix-mx-base -> python-egenix-mx-base
-* Thu Aug 15 2002 ro(a)suse.de
+* Fri Aug 16 2002 ro(a)suse.de
- don't chmod 644 to directories
* Wed Aug 14 2002 ro(a)suse.de
- added "missingok" to logrotate config
@@ -958,7 +978,7 @@
- changed postgresql-python to use Python2.0 instead of 1.5
* Sat Oct 28 2000 kukuk(a)suse.de
- Add python-devel to need for build
-* Mon Oct 23 2000 bk(a)suse.de
+* Tue Oct 24 2000 bk(a)suse.de
- integrated change from max:
- changed /sbin/init.d/postgres and SuSEconfig.postgres
to work arround YaST that quotes the value of POSTGRES_DATADIR
++++++ postgresql-8.3.5.tar.bz2 -> postgresql-8.3.7.tar.bz2 ++++++
postgresql/postgresql-8.3.5.tar.bz2 postgresql/postgresql-8.3.7.tar.bz2 differ: byte 11, line 1
++++++ postgresql-init ++++++
--- /var/tmp/diff_new_pack.n16484/_old 2009-05-15 22:01:41.000000000 +0200
+++ /var/tmp/diff_new_pack.n16484/_new 2009-05-15 22:01:41.000000000 +0200
@@ -123,7 +123,7 @@
echo -n "Starting PostgreSQL"
## remove old socket, if it exists and no daemon is running.
checkproc -p $PIDFILE $H || {
- rm -f /tmp/.s.PGSQL.5432 $PIDFILE
+ rm -f /tmp/.s.PGSQL.* $PIDFILE
}
## Start daemon with startproc(8). If this fails
++++++ postgresql-regress.patch ++++++
--- src/test/regress/expected/horology.out
+++ src/test/regress/expected/horology.out
@@ -601,26 +601,26 @@
(1 row)
-- timestamp with time zone, interval arithmetic around DST change
-SET TIME ZONE 'CST7CDT';
-SELECT timestamp with time zone '2005-04-02 12:00-07' + interval '1 day' as "Apr 3, 12:00";
+SET TIME ZONE 'CST6CDT';
+SELECT timestamp with time zone '2005-04-02 12:00-06' + interval '1 day' as "Apr 3, 12:00";
Apr 3, 12:00
------------------------------
Sun Apr 03 12:00:00 2005 CDT
(1 row)
-SELECT timestamp with time zone '2005-04-02 12:00-07' + interval '24 hours' as "Apr 3, 13:00";
+SELECT timestamp with time zone '2005-04-02 12:00-06' + interval '24 hours' as "Apr 3, 13:00";
Apr 3, 13:00
------------------------------
Sun Apr 03 13:00:00 2005 CDT
(1 row)
-SELECT timestamp with time zone '2005-04-03 12:00-06' - interval '1 day' as "Apr 2, 12:00";
+SELECT timestamp with time zone '2005-04-03 12:00-05' - interval '1 day' as "Apr 2, 12:00";
Apr 2, 12:00
------------------------------
Sat Apr 02 12:00:00 2005 CST
(1 row)
-SELECT timestamp with time zone '2005-04-03 12:00-06' - interval '24 hours' as "Apr 2, 11:00";
+SELECT timestamp with time zone '2005-04-03 12:00-05' - interval '24 hours' as "Apr 2, 11:00";
Apr 2, 11:00
------------------------------
Sat Apr 02 11:00:00 2005 CST
--- src/test/regress/pg_regress.c
+++ src/test/regress/pg_regress.c
@@ -63,7 +63,7 @@
/* currently we can use the same diff switches on all platforms */
const char *basic_diff_opts = "-w";
-const char *pretty_diff_opts = "-w -C3";
+const char *pretty_diff_opts = "-w -U5";
/* options settable from command line */
_stringlist *dblist = NULL;
--- src/test/regress/sql/horology.sql
+++ src/test/regress/sql/horology.sql
@@ -113,11 +113,11 @@
SELECT (timestamp with time zone 'tomorrow' > 'now') as "True";
-- timestamp with time zone, interval arithmetic around DST change
-SET TIME ZONE 'CST7CDT';
-SELECT timestamp with time zone '2005-04-02 12:00-07' + interval '1 day' as "Apr 3, 12:00";
-SELECT timestamp with time zone '2005-04-02 12:00-07' + interval '24 hours' as "Apr 3, 13:00";
-SELECT timestamp with time zone '2005-04-03 12:00-06' - interval '1 day' as "Apr 2, 12:00";
-SELECT timestamp with time zone '2005-04-03 12:00-06' - interval '24 hours' as "Apr 2, 11:00";
+SET TIME ZONE 'CST6CDT';
+SELECT timestamp with time zone '2005-04-02 12:00-06' + interval '1 day' as "Apr 3, 12:00";
+SELECT timestamp with time zone '2005-04-02 12:00-06' + interval '24 hours' as "Apr 3, 13:00";
+SELECT timestamp with time zone '2005-04-03 12:00-05' - interval '1 day' as "Apr 2, 12:00";
+SELECT timestamp with time zone '2005-04-03 12:00-05' - interval '24 hours' as "Apr 2, 11:00";
RESET TIME ZONE;
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package lvm2 for openSUSE:Factory
checked in at Fri May 15 22:00:13 CEST 2009.
--------
New Changes file:
--- /dev/null 2009-04-14 11:58:14.000000000 +0200
+++ lvm2/device-mapper.changes 2009-05-15 21:51:46.059725000 +0200
@@ -0,0 +1,484 @@
+-------------------------------------------------------------------
+Mon May 11 15:36:05 CST 2009 - xwhu(a)suse.de
+
+- Enable pkgconfig for GNOME 2.28
+
+-------------------------------------------------------------------
+Mon Apr 27 18:37:32 CST 2009 - xwhu(a)suse.de
+
+- Upgrade to 1.02.31
+ . Add "all" field to reports expanding to all fields of report type.
+ . Enforce device name length and character limitations in libdm.
+ . Replace _dm_snprintf with EMIT_PARAMS macro for creating target lines.
+ . Only resume devices in dm_tree_preload_children if size changes.
+ . Extend deptree buffers so the largest possible device numbers fit.
+ . Generate versioned libdevmapper-event.so.
+ . Underline longer report help text headings.
+
+-------------------------------------------------------------------
+Tue Apr 21 10:11:35 CEST 2009 - xwhu(a)suse.de
+
+- bnc#479104, export additional information
+
+-------------------------------------------------------------------
+Tue Feb 3 08:42:58 CET 2009 - hare(a)suse.de
+
+- No whitespace for DM_STATE export variable (bnc#440959)
+- Remove obsolete reference to boot.scsidev from init script
+
+-------------------------------------------------------------------
+Wed Dec 10 12:34:56 CET 2008 - olh(a)suse.de
+
+- use Obsoletes: -XXbit only for ppc64 to help solver during distupgrade
+ (bnc#437293)
+
+-------------------------------------------------------------------
+Wed Nov 5 16:57:47 CET 2008 - werner(a)suse.de
+
+- As boot.crypto depends on boot.device-mapper, the later one has
+ even on shutdown to depend on boot.udev to make sure that events
+ will be processed (bnc#413059)
+
+-------------------------------------------------------------------
+Thu Oct 30 12:34:56 CET 2008 - olh(a)suse.de
+
+- obsolete old -XXbit packages (bnc#437293)
+
+-------------------------------------------------------------------
+Sat Sep 13 07:03:44 CEST 2008 - xwhu(a)suse.de
+
+- Fix typo for correct compiling
+- Timeout if udevd's not running (bnc#425436)
+
+-------------------------------------------------------------------
+Wed Sep 10 11:56:17 CEST 2008 - xwhu(a)suse.de
+
+- update to 1.02.27
+ Align struct memblock in dbg_malloc for sparc.
+ Add --unquoted and --rows to dmsetup.
+ Avoid compiler warning about cast in dmsetup.c's OFFSET_OF macro.
+ Fix inverted no_flush debug message.
+ Remove --enable-jobs from configure. (Set at runtime instead.)
+ Bring configure.in and list.h into line with the lvm2 versions.
+
+-------------------------------------------------------------------
+Wed Sep 3 11:09:34 CEST 2008 - hare(a)suse.de
+
+- Call mkinitrd_setup during %post and %postun (bnc#413709)
+
+-------------------------------------------------------------------
+Mon Aug 25 12:03:57 CEST 2008 - prusnak(a)suse.cz
+
+- enabled SELinux support [Fate#303662]
+
+-------------------------------------------------------------------
+Fri Aug 22 13:00:15 CEST 2008 - xwhu(a)suse.de
+
+- Remove the -p option for fillup_and_insserv
+
+-------------------------------------------------------------------
+Wed Aug 13 06:26:49 CEST 2008 - xwhu(a)suse.de
+
+- Add Should-Stop to boot.device-mapper
+
+-------------------------------------------------------------------
+Wed Jul 23 15:35:05 CEST 2008 - hare(a)suse.de
+
+- Include mkinitrd scriptlets.
+
+-------------------------------------------------------------------
+Wed Jul 16 19:38:07 CEST 2008 - xwhu(a)suse.de
+
+- repack device-mapper.1.02.26.tar.bz2 into bzip2.
+- change the owner of device to root:disk, with permission
+ 0640 (bnc#407952)
+
+-------------------------------------------------------------------
+Tue Jun 24 05:43:08 CEST 2008 - xwhu(a)suse.de
+
+- update to new version 1.02.26
+ Initialise params buffer to empty string in _emit_segment.
+ Skip add_dev_node when ioctls disabled.
+ Make dm_hash_iter safe against deletion.
+ Accept a NULL pointer to dm_free silently.
+ Add tables_loaded, readonly and suspended columns to reports.
+ Add --nameprefixes to dmsetup.
+ Add field name prefix option to reporting functions.
+ Calculate string size within dm_pool_grow_object.
+
+ Remove redundant if-before-free tests.
+ Use log_warn for reporting field help text instead of log_print.
+ Change cluster mirror log type name (s/clustered_/clustered-/)
+
+-------------------------------------------------------------------
+Fri May 30 13:54:02 CEST 2008 - xwhu(a)suse.de
+
+- Hold on mknod until udev finish it's job.
+
+-------------------------------------------------------------------
+Thu Apr 10 12:54:45 CEST 2008 - ro(a)suse.de
+
+- added baselibs.conf file to build xxbit packages
+ for multilib support
+
+-------------------------------------------------------------------
+Wed Feb 27 13:00:25 CET 2008 - dmueller(a)suse.de
+
+- fix static library installation again
+
+-------------------------------------------------------------------
+Tue Feb 26 21:55:47 CET 2008 - dmueller(a)suse.de
+
+- fix "binary contains trace of $RPM_BUILD_ROOT" failure
+
+-------------------------------------------------------------------
+Thu Feb 7 08:59:16 CET 2008 - hare(a)suse.de
+
+- Enable dmeventd (FATE#303381)
+
+-------------------------------------------------------------------
+Thu Jan 31 11:54:11 CET 2008 - fehr(a)suse.de
+
+- update to new version 1.02.24
+ Fix deptree to pass new name to _resume_node after a rename.
+ Suppress other node operations if node is deleted.
+ Report error when empty device name passed to readahead functions.
+
+-------------------------------------------------------------------
+Mon Dec 10 11:25:40 CET 2007 - fehr(a)suse.de
+
+- update to new version 1.02.23
+ Add readahead support to libdevmapper and dmsetup.
+ Fix double free in a libdevmapper-event error path.
+ Allow a DM_DEV_DIR environment variable to override /dev.
+
+-------------------------------------------------------------------
+Thu Nov 22 14:07:15 CET 2007 - fehr(a)suse.de
+
+- update to new version 1.02.22
+ Fix inconsistent licence notices: executables are GPLv2; libraries LGPLv2.1.
+ Fix dmsetup -o devno string termination.
+ Fix default dmsetup report buffering and add --unbuffered.
+ Add tree-based and dependency fields to dmsetup reports.
+
+-------------------------------------------------------------------
+Mon May 7 11:46:29 CEST 2007 - kay.sievers(a)suse.de
+
+- update to new version 1.02.19
+ Avoid trailing separator in reports when there are hidden sort fields.
+ Fix segfault in 'dmsetup status' without --showkeys against crypt target.
+ Migrate dmsetup column-based output over to new libdevmapper report framework.
+ Add descriptions to reporting field definitions.
+ Add basic reporting functions to libdevmapper.
+- remove dmsetup option patch (upstream provides it)
+- add dmsetup export command
+
+-------------------------------------------------------------------
+Sun Feb 11 11:58:37 CET 2007 - ro(a)suse.de
+
+- fix build as non-root
+
+-------------------------------------------------------------------
+Tue Jan 16 14:25:01 CET 2007 - fehr(a)suse.de
+
+- remove superfluouus /lib/libdevmapper.so (#235359)
+- add call to ldconfig (#235359)
+
+-------------------------------------------------------------------
+Wed Dec 6 09:58:48 CET 2006 - fehr(a)suse.de
+
+- update to new version 1.02.13
+ Update dmsetup man page (setgeometry & message).
+ Fix dmsetup free after getline with debug.
+ Suppress encryption key in 'dmsetup table' output unless --showkeys supplied.
+
+-------------------------------------------------------------------
+Mon Oct 16 13:01:52 CEST 2006 - fehr(a)suse.de
+
++++ 287 more lines (skipped)
++++ between /dev/null
++++ and lvm2/device-mapper.changes
New Changes file:
--- /dev/null 2009-04-14 11:58:14.000000000 +0200
+++ lvm2/lvm2.changes 2009-05-15 21:51:49.264028000 +0200
@@ -0,0 +1,878 @@
+-------------------------------------------------------------------
+Mon Apr 27 18:37:32 CST 2009 - xwhu(a)suse.de
+
+- Upgrade to LVM2 2.02.45
+ Avoid scanning empty metadata areas for VG names
+ Pass --test from lvresize to fsadm as --dry-run.
+ Remove duplicate cpg_initialize from clvmd startup.
+ Add option to /etc/sysconfig/cluster to select cluster type for clvmd.
+ Remove external dependency on the 'cut' command from fsadm.
+ Fix pvs segfault when pv mda attributes requested for not available PV.
+ Fix lvresize size conversion for fsadm when block size is not 1K.
+ Add pv_mda_size to pvs and vg_mda_size to vgs.
+ Add "--refresh" functionality to vgchange and vgmknodes.
+ Fix vgrename using UUID if there are VGs with identical names.
+ Fix segfault when invalid field given in reporting commands.
+ Merge device-mapper into the lvm2 tree.
+ Exit with non-zero status from vgdisplay if couldn't show any requested VG.
+ Fix snapshot monitoring library to not cancel monitoring invalid snapshot.
+ Fix conversion of md chunk size into sectors.
+ Fix misleading error message when there are no allocatable extents in VG.
+ Fix handling of PVs which reappeared with old metadata version.
+ Fix mirror DSO to call vgreduce with proper parameters.
+ Fix validation of --minor and --major in lvcreate to require -My always.
+ Fix release: clvmd build, vgreduce consolidate & tests, /dev/ioerror warning.
+
+-------------------------------------------------------------------
+Tue Mar 31 11:59:03 CST 2009 - xwhu(a)suse.de
+
+- Handle the case that drbd virtual device has the same PV uuid
+ with the underlining physical device.
+
+-------------------------------------------------------------------
+Wed Mar 25 23:14:29 CST 2009 - xwhu(a)suse.de
+
+- Do not filter out tmp device file(bnc#485572)
+- Do not try to activate VG when all paths are down already(bnc#479104)
+
+-------------------------------------------------------------------
+Wed Mar 25 22:50:50 CST 2009 - xwhu(a)suse.de
+
+- Split CLVMD as a independent package
+
+-------------------------------------------------------------------
+Tue Mar 24 00:23:13 CST 2009 - xwhu(a)suse.de
+
+- Fix for bnc#486952
+ use "killproc -INT" instead of "killproc"
+ handle signal in the main loop thread only
+
+-------------------------------------------------------------------
+Thu Feb 26 14:08:22 CST 2009 - xwhu(a)suse.de
+
+- add daemon_options parameter to clvmd.ocf
+- check EUNLOCK for dlm_ls_unlock_wait
+
+-------------------------------------------------------------------
+Wed Feb 25 18:39:26 CST 2009 - xwhu(a)suse.de
+
+- bnc#479422, check both lksb.sb_status and status.
+
+-------------------------------------------------------------------
+Fri Feb 20 10:24:00 CET 2009 - xwhu(a)suse.de
+
+- simplify patch of dlm lock to clvmd
+
+-------------------------------------------------------------------
+Fri Feb 20 08:06:37 CET 2009 - xwhu(a)suse.de
+
+- bnc#476861, clvmd.ocf doesn't report the correct status when
+ kill -9 doesn't terminate the process
+
+-------------------------------------------------------------------
+Thu Jan 22 13:00:26 CST 2009 - xwhu(a)suse.de
+
+- bnc#464851, use dlm instead of openais lck
+
+-------------------------------------------------------------------
+Wed Jan 21 15:23:31 CET 2009 - ro(a)suse.de
+
+- do not require a specific package release from subpackage
+ (bnc#467704)
+
+-------------------------------------------------------------------
+Wed Dec 3 18:51:27 CST 2008 - xwhu(a)suse.de
+
+- Add OCF script for clvmd
+
+-------------------------------------------------------------------
+Wed Nov 12 02:22:56 CST 2008 - xwhu(a)suse.de
+
+- bnc#443677. dmeventd DSOs are linked against liblvm2cmd
+
+-------------------------------------------------------------------
+Thu Oct 9 11:54:47 CEST 2008 - xwhu(a)suse.de
+
+- bnc#432782. Remove vol_id in 64-lvm2.rules.
+
+-------------------------------------------------------------------
+Mon Sep 29 14:09:33 CEST 2008 - ro(a)suse.de
+
+- buildreq: replace openais-devel by libopenais-devel
+
+-------------------------------------------------------------------
+Wed Sep 24 18:25:40 CEST 2008 - ro(a)suse.de
+
+- change "udevsettle" to "udevadm settle"
+
+-------------------------------------------------------------------
+Sat Sep 13 11:59:34 CEST 2008 - xwhu(a)novell.com
+
+- added missing directories to filelist
+
+-------------------------------------------------------------------
+Wed Sep 10 13:43:17 CEST 2008 - xwhu(a)novell.com
+
+- Upgrade to 2.0.39
+ Fix up cache for PVs without mdas after consistent VG metadata is processed.
+ Update validation of safe mirror log type conversions in lvconvert.
+ Fix lvconvert to disallow snapshot and mirror combinations.
+ Fix reporting of LV fields alongside unallocated PV segments.
+ Add --unquoted and --rows to reporting tools.
+ Avoid undefined return value after _memlock manipulation in lvm2_run.
+ Avoid link failure if configured without --enable-cmdlib or --enable-readline.
+ Make clvmd return at once if other nodes down in a gulm or openais cluster.
+ Fix and improve readahead 'auto' calculation for stripe_size.
+ Fix lvchange output for -r auto setting if auto is already set.
+ Fix ambiguous use of identifier error_message_produced.
+ Fix add_mirror_images not to dereference uninitialized log_lv upon failure.
+ Don't call openlog for every debug line output by clvmd.
+ Add --force to lvextend and lvresize.
+ Fix vgchange to not activate mirror leg and log volumes directly.
+ Fix test directory clean up in make distclean.
+- pvcreate/pvremove/pvchange will create symlinks in /dev/disk/by-id/
+ to the device file
+-------------------------------------------------------------------
+Wed Sep 3 11:09:34 CEST 2008 - hare(a)suse.de
+
+- Call mkinitrd_setup during %post and %postun (bnc#413709)
+
+-------------------------------------------------------------------
+Tue Sep 2 16:59:00 CEST 2008 - hare(a)suse.de
+
+- Fix initrd scripts if no 'root=' parameter is given
+ (bnc#421546)
+
+-------------------------------------------------------------------
+Mon Aug 25 12:49:58 CEST 2008 - aj(a)suse.de
+
+- Provide and obsolete evms.
+
+-------------------------------------------------------------------
+Mon Aug 25 12:04:29 CEST 2008 - prusnak(a)suse.cz
+
+- enabled SELinux support [Fate#303662]
+
+-------------------------------------------------------------------
+Fri Aug 22 12:58:08 CEST 2008 - xwhu(a)suse.de
+
+- Remove the -p option for fillup_and_insserv
+
+-------------------------------------------------------------------
+Wed Aug 13 06:18:44 CEST 2008 - xwhu(a)suse.de
+
+- Add Should-Stop to boot.lvm
+
+-------------------------------------------------------------------
+Thu Jul 31 16:13:59 CST 2008 - xwhu(a)suse.de
+
+- repack LVM2.2.02.38.tar.bz2 into bz2 format
+
+-------------------------------------------------------------------
+Wed Jul 23 15:38:13 CEST 2008 - hare(a)suse.de
+
+- Include mkinitrd scriptlets.
+
+-------------------------------------------------------------------
+Fri Jun 27 07:51:31 CEST 2008 - xwhu(a)suse.de
+
+- update to 2.02.38
+ Fix tracking of validity of PVs with no mdas in lvmcache.
+ Fix return values for reporting commands when run with no PVs, LVs, or VGs.
+ Fix free_count when reading pool metadata.
+ Fix segfault when using pvcreate on a device containing pool metadata.
+ Fix segfault after _free_vginfo by remembering to remove vginfo from list.
+ Fix setpriority error message to signed int.
+ Fix uninitialised mutex in clvmd if all daemons are not running at startup.
+ Fix fsadm.sh to work with older blockdev, blkid & readlink binaries.
+ Fix lvresize to pass new size to fsadm when extending device.
+ Fix nodes list in clvmd-openais, and allow for broadcast messages.
+ Fix vgsplit internal counting of snapshot LVs.
+ Fix vgmerge snapshot_count when source VG contains snapshots.
+ Fix internal LV counter when a snapshot is removed.
+ Fix metadata corruption writing lvm1-formatted metadata with snapshots.
+ Fix lvconvert -m0 allocatable space check.
+ Fix vgdisplay 'Cur LV' field to match lvdisplay output.
+ Fix lv_count report field to exclude hidden LVs.
+ Fix vgsplit to only move hidden 'snapshotN' LVs when necessary.
++++ 681 more lines (skipped)
++++ between /dev/null
++++ and lvm2/lvm2.changes
New Changes file:
--- /dev/null 2009-04-14 11:58:14.000000000 +0200
+++ lvm2/lvm2-clvm.changes 2009-05-15 21:51:52.746033000 +0200
@@ -0,0 +1,46 @@
+-------------------------------------------------------------------
+Mon Apr 27 18:37:32 CST 2009 - xwhu(a)suse.de
+
+- Upgrade to LVM2 2.02.45
+ Avoid scanning empty metadata areas for VG names
+ Pass --test from lvresize to fsadm as --dry-run.
+ Remove duplicate cpg_initialize from clvmd startup.
+ Add option to /etc/sysconfig/cluster to select cluster type for clvmd.
+ Remove external dependency on the 'cut' command from fsadm.
+ Fix pvs segfault when pv mda attributes requested for not available PV.
+ Fix lvresize size conversion for fsadm when block size is not 1K.
+ Add pv_mda_size to pvs and vg_mda_size to vgs.
+ Add "--refresh" functionality to vgchange and vgmknodes.
+ Fix vgrename using UUID if there are VGs with identical names.
+ Fix segfault when invalid field given in reporting commands.
+ Merge device-mapper into the lvm2 tree.
+ Exit with non-zero status from vgdisplay if couldn't show any requested VG.
+ Fix snapshot monitoring library to not cancel monitoring invalid snapshot.
+ Fix conversion of md chunk size into sectors.
+ Fix misleading error message when there are no allocatable extents in VG.
+ Fix handling of PVs which reappeared with old metadata version.
+ Fix mirror DSO to call vgreduce with proper parameters.
+ Fix validation of --minor and --major in lvcreate to require -My always.
+ Fix release: clvmd build, vgreduce consolidate & tests, /dev/ioerror warning.
+
+-------------------------------------------------------------------
+Tue Apr 1 01:10:00 CST 2009 - lmb(a)suse.de
+
+- clvmd: Ensure that the lockspace is released locally even we were the
+ lock master, avoiding an unclean shutdown (bnc#490415).
+
+-------------------------------------------------------------------
+Tue Mar 31 19:16:18 CST 2009 - xwhu(a)suse.de
+
+- Call cpg_leave before shutting down clvmd
+
+-------------------------------------------------------------------
+Wed Mar 25 23:14:29 CST 2009 - xwhu(a)suse.de
+
+- Do not filter out tmp device file(bnc#485572)
+
+-------------------------------------------------------------------
+Wed Mar 25 22:50:50 CST 2009 - xwhu(a)suse.de
+
+- Newly splitted off from lvm2, as a independent package now
+
calling whatdependson for head-i586
New:
----
64-lvm2.rules
baselibs.conf
boot.device-mapper
boot.lvm
bug-486952_clvmd-check-returncode-of-dlmrelease.diff
call_cpg_leave_before_shutdown.diff
clvmd.ocf
clvmd-openais-use-dlm.diff
cmdline_large_minor.diff
collect_lvm
device-mapper.changes
device-mapper-dmsetup-deps-export.patch
device-mapper-dmsetup-export.patch
device-mapper-gcc-warning.diff
device-mapper.spec
device-mapper-static.diff
device-mapper-wait_udev.diff
dont_ignore_tmp_device_file.diff
enable-clvmd.patch
improve_probing.diff
k_dev_t.dif
LVM2.2.02.45.tar.bz2
lvm2.changes
lvm2-clvm.changes
lvm2-clvm.spec
lvm2.spec
lvm.conf
lvm-no_chown.diff
lvm-pv-create-link.diff
man_page_sectors.diff
mkinitrd-boot.sh
mkinitrd-setup.sh
no_buildroot_shared.diff
no-inc-audit.diff
pipe_buff-definition.diff
pvscan_2TB_limit.diff
sigterm_in_main_thread.diff
support-drbd-filter.diff
sysconfig.lvm
sys_mount_instead_linux_fs.diff
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ device-mapper.spec ++++++
#
# spec file for package device-mapper (Version 1.02.31)
#
# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
Name: device-mapper
License: GPL v2 or later; LGPL v2.1 or later
Group: System/Base
AutoReqProv: on
# bug437293
%ifarch ppc64
Obsoletes: device-mapper-64bit
%endif
#
Version: 1.02.31
Release: 2
Summary: Device Mapper Tools
Source: LVM2.2.02.45.tar.bz2
Source1: boot.device-mapper
Source2: mkinitrd-setup.sh
Source3: mkinitrd-boot.sh
Patch: improve_probing.diff
Patch2: no-inc-audit.diff
Patch3: no_buildroot_shared.diff
Patch4: sys_mount_instead_linux_fs.diff
Patch5: pvscan_2TB_limit.diff
Patch6: man_page_sectors.diff
Patch10: lvm-no_chown.diff
Patch11: cmdline_large_minor.diff
Patch12: enable-clvmd.patch
Patch13: pipe_buff-definition.diff
Patch14: lvm-pv-create-link.diff
#Patch15: dmeventd-link-libcmd.diff
Patch16: clvmd-openais-use-dlm.diff
Patch17: bug-486952_clvmd-check-returncode-of-dlmrelease.diff
Patch18: sigterm_in_main_thread.diff
Patch19: dont_ignore_tmp_device_file.diff
Patch20: support-drbd-filter.diff
Patch21: call_cpg_leave_before_shutdown.diff
#Patches for device mapper
Patch60: k_dev_t.dif
Patch61: device-mapper-dmsetup-export.patch
Patch62: device-mapper-gcc-warning.diff
Patch63: device-mapper-static.diff
Patch64: device-mapper-wait_udev.diff
Patch65: device-mapper-dmsetup-deps-export.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: libselinux-devel
PreReq: %insserv_prereq %fillup_prereq
%description
Programs, libraries, and man pages for configuring and using the device
mapper.
Authors:
--------
Joe Thornber <thornber(a)sistina.com>
%package devel
License: GPL v2 or later; LGPL v2.1 or later
Summary: Development package for the device mapper
Group: System/Base
Requires: %name = %version
%description devel
Files needed for software development using the device mapper
Authors:
--------
Joe Thornber <thornber(a)sistina.com>
%prep
%setup -n LVM2.2.02.45
%patch
%patch2
%patch3
%patch4
%patch5
%patch6
%patch10
%patch11
%patch12
%patch13
%patch14 -p1
#%patch15 -p1
%patch16 -p1
%patch17 -p1
%patch18 -p1
%patch19 -p1
%patch20 -p1
%patch21 -p1
%patch60 -p1
%patch61 -p1
%patch62 -p1
%patch63 -p1
%patch64 -p1
%patch65 -p1
%build
CFLAGS="$RPM_OPT_FLAGS" \
%configure --bindir=/bin --libdir=/%_lib --sbindir=/sbin --enable-dmeventd \
--enable-selinux --enable-cmdlib \
--with-dmeventd-path=/sbin/dmeventd \
--with-device-uid=0 --with-device-gid=6 --with-device-mode=0640 \
--enable-pkgconfig
make %{?jobs:-j %jobs}
%install
#%makeinstall
make install_device-mapper DESTDIR=$RPM_BUILD_ROOT
#make libdir=$RPM_BUILD_ROOT/%_libdir install_static_lib
mkdir -p $RPM_BUILD_ROOT/%_libdir
ln -s /%_lib/libdevmapper.so.1.02 $RPM_BUILD_ROOT/%_libdir/libdevmapper.so
ln -s /%_lib/libdevmapper-event.so.1.02 $RPM_BUILD_ROOT/%_libdir/libdevmapper-event.so
rm $RPM_BUILD_ROOT/%_lib/libdevmapper.so
rm $RPM_BUILD_ROOT/%_lib/libdevmapper-event.so
rm $RPM_BUILD_ROOT/%_lib/libdevmapper-event-lvm2mirror.so
rm $RPM_BUILD_ROOT/%_lib/libdevmapper-event-lvm2mirror.so.2.02
rm $RPM_BUILD_ROOT/%_lib/libdevmapper-event-lvm2snapshot.so
rm $RPM_BUILD_ROOT/%_lib/libdevmapper-event-lvm2snapshot.so.2.02
#install -m 744 scripts/devmap_mknod.sh $RPM_BUILD_ROOT/sbin/
mkdir -p $RPM_BUILD_ROOT/etc/init.d
install -m 744 %{SOURCE1} $RPM_BUILD_ROOT/etc/init.d
install -d $RPM_BUILD_ROOT/lib/mkinitrd/scripts
install -m 755 %{SOURCE2} $RPM_BUILD_ROOT/lib/mkinitrd/scripts/setup-dm.sh
install -m 755 %{SOURCE3} $RPM_BUILD_ROOT/lib/mkinitrd/scripts/boot-dm.sh
%post
%{run_ldconfig}
[ -x /sbin/mkinitrd_setup ] && mkinitrd_setup
%{fillup_and_insserv -y boot.device-mapper}
%postun
%{run_ldconfig}
[ -x /sbin/mkinitrd_setup ] && mkinitrd_setup
%{insserv_cleanup}
%files
%defattr(-,root,root)
%doc INSTALL COPYING COPYING.LIB README VERSION_DM WHATS_NEW_DM
%config /etc/init.d/boot.device-mapper
/%_lib/libdevmapper.so.1.02
/%_lib/libdevmapper-event.so.1.02
/sbin/dmsetup
/sbin/dmeventd
#/sbin/devmap_mknod.sh
%{_mandir}/man8/dmsetup.8.gz
%dir /lib/mkinitrd
%dir /lib/mkinitrd/scripts
/lib/mkinitrd/scripts/setup-dm.sh
/lib/mkinitrd/scripts/boot-dm.sh
%files devel
%defattr(-,root,root)
/%_libdir/libdevmapper.so
/%_libdir/libdevmapper-event.so
/%_libdir/pkgconfig/*.pc
#%attr(644, root, root) %_libdir/libdevmapper.a
/usr/include/libdevmapper.h
/usr/include/libdevmapper-event.h
%changelog
* Mon May 11 2009 xwhu(a)suse.de
- Enable pkgconfig for GNOME 2.28
* Mon Apr 27 2009 xwhu(a)suse.de
- Upgrade to 1.02.31
. Add "all" field to reports expanding to all fields of report type.
. Enforce device name length and character limitations in libdm.
. Replace _dm_snprintf with EMIT_PARAMS macro for creating target lines.
. Only resume devices in dm_tree_preload_children if size changes.
. Extend deptree buffers so the largest possible device numbers fit.
. Generate versioned libdevmapper-event.so.
. Underline longer report help text headings.
* Tue Apr 21 2009 xwhu(a)suse.de
- bnc#479104, export additional information
* Tue Feb 03 2009 hare(a)suse.de
- No whitespace for DM_STATE export variable (bnc#440959)
- Remove obsolete reference to boot.scsidev from init script
* Wed Dec 10 2008 olh(a)suse.de
- use Obsoletes: -XXbit only for ppc64 to help solver during distupgrade
(bnc#437293)
* Wed Nov 05 2008 werner(a)suse.de
- As boot.crypto depends on boot.device-mapper, the later one has
even on shutdown to depend on boot.udev to make sure that events
will be processed (bnc#413059)
* Thu Oct 30 2008 olh(a)suse.de
- obsolete old -XXbit packages (bnc#437293)
* Fri Sep 12 2008 xwhu(a)suse.de
- Fix typo for correct compiling
- Timeout if udevd's not running (bnc#425436)
* Wed Sep 10 2008 xwhu(a)suse.de
- update to 1.02.27
Align struct memblock in dbg_malloc for sparc.
Add --unquoted and --rows to dmsetup.
Avoid compiler warning about cast in dmsetup.c's OFFSET_OF macro.
Fix inverted no_flush debug message.
Remove --enable-jobs from configure. (Set at runtime instead.)
Bring configure.in and list.h into line with the lvm2 versions.
* Wed Sep 03 2008 hare(a)suse.de
- Call mkinitrd_setup during %%post and %%postun (bnc#413709)
* Mon Aug 25 2008 prusnak(a)suse.cz
- enabled SELinux support [Fate#303662]
* Fri Aug 22 2008 xwhu(a)suse.de
- Remove the -p option for fillup_and_insserv
* Tue Aug 12 2008 xwhu(a)suse.de
- Add Should-Stop to boot.device-mapper
* Wed Jul 23 2008 hare(a)suse.de
- Include mkinitrd scriptlets.
* Wed Jul 16 2008 xwhu(a)suse.de
- repack device-mapper.1.02.26.tar.bz2 into bzip2.
- change the owner of device to root:disk, with permission
0640 (bnc#407952)
* Mon Jun 23 2008 xwhu(a)suse.de
- update to new version 1.02.26
Initialise params buffer to empty string in _emit_segment.
Skip add_dev_node when ioctls disabled.
Make dm_hash_iter safe against deletion.
Accept a NULL pointer to dm_free silently.
Add tables_loaded, readonly and suspended columns to reports.
Add --nameprefixes to dmsetup.
Add field name prefix option to reporting functions.
Calculate string size within dm_pool_grow_object.
Remove redundant if-before-free tests.
Use log_warn for reporting field help text instead of log_print.
Change cluster mirror log type name (s/clustered_/clustered-/)
* Fri May 30 2008 xwhu(a)suse.de
- Hold on mknod until udev finish it's job.
* Thu Apr 10 2008 ro(a)suse.de
- added baselibs.conf file to build xxbit packages
for multilib support
* Wed Feb 27 2008 dmueller(a)suse.de
- fix static library installation again
* Tue Feb 26 2008 dmueller(a)suse.de
- fix "binary contains trace of $RPM_BUILD_ROOT" failure
* Thu Feb 07 2008 hare(a)suse.de
- Enable dmeventd (FATE#303381)
* Thu Jan 31 2008 fehr(a)suse.de
- update to new version 1.02.24
Fix deptree to pass new name to _resume_node after a rename.
Suppress other node operations if node is deleted.
Report error when empty device name passed to readahead functions.
* Mon Dec 10 2007 fehr(a)suse.de
- update to new version 1.02.23
Add readahead support to libdevmapper and dmsetup.
Fix double free in a libdevmapper-event error path.
Allow a DM_DEV_DIR environment variable to override /dev.
* Thu Nov 22 2007 fehr(a)suse.de
- update to new version 1.02.22
Fix inconsistent licence notices: executables are GPLv2; libraries LGPLv2.1.
Fix dmsetup -o devno string termination.
Fix default dmsetup report buffering and add --unbuffered.
Add tree-based and dependency fields to dmsetup reports.
* Mon May 07 2007 kay.sievers(a)suse.de
- update to new version 1.02.19
Avoid trailing separator in reports when there are hidden sort fields.
Fix segfault in 'dmsetup status' without --showkeys against crypt target.
Migrate dmsetup column-based output over to new libdevmapper report framework.
Add descriptions to reporting field definitions.
Add basic reporting functions to libdevmapper.
- remove dmsetup option patch (upstream provides it)
- add dmsetup export command
* Sun Feb 11 2007 ro(a)suse.de
- fix build as non-root
* Tue Jan 16 2007 fehr(a)suse.de
- remove superfluouus /lib/libdevmapper.so (#235359)
- add call to ldconfig (#235359)
* Wed Dec 06 2006 fehr(a)suse.de
- update to new version 1.02.13
Update dmsetup man page (setgeometry & message).
Fix dmsetup free after getline with debug.
Suppress encryption key in 'dmsetup table' output unless --showkeys supplied.
* Mon Oct 16 2006 fehr(a)suse.de
- update to new version 1.02.12
Avoid deptree attempting to suspend a device that's already suspended.
Add suspend noflush support.
Add basic dmsetup loop support.
Switch dmsetup to use dm_malloc and dm_free.
* Wed Sep 20 2006 fehr(a)suse.de
- update to new version 1.02.10
Add dm_snprintf(), dm_split_words() and dm_split_lvm_name() to libdevmapper.
Reorder mm bounds_check code to reduce window for a dmeventd race.
* Thu Sep 14 2006 mkoenig(a)suse.de
- fixed permissions for static lib
- removed static lib version extension
* Tue Sep 12 2006 hvogel(a)suse.de
- split device-mapper-devel subpackage
- install static libs (needed to link cryptsetup from
util-linux-crypto static)
* Wed Aug 30 2006 hare(a)suse.de
- Fix gcc warnings
- Fix field display for 'dmsetup info'.
* Wed Aug 30 2006 hare(a)suse.de
- Add 'major', 'minor', and 'uuid' as valid fields for
'dmsetup info -o XXX'.
* Wed Aug 16 2006 fehr(a)suse.de
- update to new version 1.02.09
Add --table argument to dmsetup for a one-line table.
Abort if errors are found during cmdline option processing.
Add lockfs indicator to debug output.
* Wed Jul 26 2006 fehr(a)suse.de
- update to new version 1.02.08
Update dmsetup man page.
Add --force to dmsetup remove* to load error target.
dmsetup remove_all also performs mknodes.
Don't suppress identical table reloads if permission changes.
Fix corelog segment line.
* Mon May 22 2006 fehr(a)suse.de
- update to new version 1.02.07
Add DM_CORELOG flag to dm_tree_node_add_mirror_target().
Avoid a dmeventd compiler warning.
- update to new version 1.02.06
Move DEFS into configure.h.
Fix leaks in error paths found by coverity.
Remove dmsetup line buffer limitation.
* Thu Apr 20 2006 fehr(a)suse.de
- update to new version 1.02.05
Separate install_include target in makefiles.
Separate out DEFS from CFLAGS.
Support pkg-config.
Check for libsepol.
* Wed Apr 19 2006 fehr(a)suse.de
- update to new version 1.02.04
Bring dmsetup man page up-to-date.
Use name-based device refs if kernel doesn't support device number refs.
Fix memory leak (struct dm_ioctl) when struct dm_task is reused.
If _create_and_load_v4 fails part way through, revert the creation.
dmeventd thread/fifo fixes.
Add file & line to dm_strdup_aux().
Add setgeometry.
* Tue Mar 14 2006 fehr(a)suse.de
- update to new version 1.02.03
Add exported functions to set uid, gid and mode.
Rename _log to dm_log and export.
Add dm_tree_skip_lockfs.
Fix dm_strdup debug definition.
Fix hash function to avoid using a negative array offset.
Don't inline _find in hash.c and tidy signed/unsigned etc.
Fix libdevmapper.h #endif.
Fix dmsetup version driver version.
Add sync, nosync and block_on_error mirror log parameters.
Add hweight32.
Fix dmeventd build.
* Thu Mar 02 2006 hare(a)suse.de
- Do not call devmap_mknod.sh (#150818)
* Wed Jan 25 2006 mls(a)suse.de
- converted neededforbuild to BuildRequires
* Tue Jan 24 2006 fehr(a)suse.de
- fix exit code of "dmsetup version" (#144794)
* Mon Jan 23 2006 fehr(a)suse.de
- add boot.udev to Required-Start section of init script (#144586)
* Tue Dec 06 2005 fehr(a)suse.de
- update to new version 1.02.02
* Tue Sep 27 2005 fehr(a)suse.de
- update to new version 1.01.05
* Wed Sep 21 2005 fehr(a)suse.de
- increase ioctl buffer size from 16k to 256k to allow larger number
of dm device visible by "dmsetup ls" and "dmsetup table"
* Wed Aug 03 2005 fehr(a)suse.de
- update to new version 1.01.04
* Thu Jun 30 2005 meissner(a)suse.de
- use RPM_OPT_FLAGS.
* Tue Jun 14 2005 fehr(a)suse.de
- update to new version 1.01.03
* Wed May 18 2005 fehr(a)suse.de
- update to new version 1.01.02
* Mon Apr 11 2005 fehr(a)suse.de
- use -py instead of -pY as option for fillup_and_insserv (#76689)
- update to new version 1.01.01
* Tue Jan 18 2005 fehr(a)suse.de
- update to new version 1.01.00
* Tue Jan 11 2005 fehr(a)suse.de
- update to new version 1.00.21
* Thu Aug 26 2004 fehr(a)suse.de
- /dev/mapper directory is now part of devs.rpm (#44258)
* Wed Jul 14 2004 fehr(a)suse.de
- update to new version 1.00.19
* Thu May 27 2004 fehr(a)suse.de
- do not unload dm modules on shutdown, this hangs on some machines
* Sat Apr 10 2004 aj(a)suse.de
- devicemapper does not need 2.6 kernelsources.
* Thu Apr 01 2004 fehr(a)suse.de
- update to new version 1.00.09
* Tue Mar 16 2004 fehr(a)suse.de
- fix typo in start script (#36168)
* Mon Mar 15 2004 fehr(a)suse.de
- do not depend on existence of /dev/mapper dir (#35825)
* Mon Mar 01 2004 ro(a)suse.de
- remove root-fsck stuff in bootscript
- instead depend on boot.rootfsck
* Fri Dec 05 2003 fehr(a)suse.de
- update to new version 1.00.07
* Mon Nov 17 2003 odabrunz(a)suse.de
- fix spec file to make it compile with both new and old glibc
(__kernel_dev_t)
* Thu Oct 02 2003 fehr(a)suse.de
- add fix to make it compile with new glibc (use __kernel_old_dev_t)
* Thu Sep 18 2003 fehr(a)suse.de
- fix boot.devicemapper to cope with LABEL= and UUID= in /etc/fstab
also check reiser filesystem (#31060)
* Wed Sep 17 2003 fehr(a)suse.de
- add comment when remounting root fs read-only (#31060)
* Tue Sep 16 2003 kukuk(a)suse.de
- Add missing PreRequires [Bug #31006]
* Tue Sep 02 2003 fehr(a)suse.de
- update to version 1.00.05
* Mon Aug 25 2003 fehr(a)suse.de
- update to version 1.00.04
* Thu Aug 21 2003 fehr(a)suse.de
- update to version 1.00.03
* Mon Aug 18 2003 garloff(a)suse.de
- (#29083) Add # X-UnitedLinux-Should-Start: boot.scsidev
* Fri Jul 25 2003 fehr(a)suse.de
- update to version 1.00.02
* Tue Jul 01 2003 fehr(a)suse.de
- add boot script for automated startup in system
- fix typos in boot script
* Mon Jun 30 2003 fehr(a)suse.de
- created initial version of a SuSE package
++++++ lvm2-clvm.spec ++++++
#
# spec file for package lvm2-clvm (Version 2.02.45)
#
# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
Url: http://sources.redhat.com/cluster/clvm/
Name: lvm2-clvm
BuildRequires: device-mapper-devel libdlm-devel libopenais-devel readline-devel
BuildRequires: libselinux-devel
License: GPL v2 or later; LGPL v2.1 or later
Group: System/Base
Version: 2.02.45
Release: 2
Requires: device-mapper >= 1.02.25 lvm2 = %{version} openais
Provides: clvm
PreReq: %fillup_prereq %insserv_prereq
AutoReqProv: on
Summary: Clustered LVM2
Source: LVM2.%{version}.tar.bz2
Source1: lvm.conf
Source2: boot.lvm
Source3: sysconfig.lvm
Source4: mkinitrd-setup.sh
Source5: mkinitrd-boot.sh
Source6: 64-lvm2.rules
Source7: collect_lvm
Source8: clvmd.ocf
Patch: improve_probing.diff
Patch2: no-inc-audit.diff
Patch3: no_buildroot_shared.diff
Patch4: sys_mount_instead_linux_fs.diff
Patch5: pvscan_2TB_limit.diff
Patch6: man_page_sectors.diff
Patch10: lvm-no_chown.diff
Patch11: cmdline_large_minor.diff
Patch12: enable-clvmd.patch
Patch13: pipe_buff-definition.diff
Patch14: lvm-pv-create-link.diff
#Patch15: dmeventd-link-libcmd.diff
Patch16: clvmd-openais-use-dlm.diff
Patch17: bug-486952_clvmd-check-returncode-of-dlmrelease.diff
Patch18: sigterm_in_main_thread.diff
Patch19: dont_ignore_tmp_device_file.diff
Patch20: support-drbd-filter.diff
Patch21: call_cpg_leave_before_shutdown.diff
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
A daemon for using LVM2 Logival Volumes in a clustered environment.
%prep
%setup -n LVM2.%{version}
%patch
%patch2
%patch3
%patch4
%patch5
%patch6
%patch10
%patch11
%patch12
%patch13
%patch14 -p1
#%patch15 -p1
%patch16 -p1
%patch17 -p1
%patch18 -p1
%patch19 -p1
%patch20 -p1
%patch21 -p1
%build
CFLAGS="$RPM_OPT_FLAGS" MODPROBE_CMD=/sbin/modprobe \
LDFLAGS="-L /usr/%_lib/openais" \
./configure --prefix=/ \
--mandir=%{_mandir} \
--includedir=/usr/include \
--enable-selinux \
--enable-cmdlib \
--libdir=/%_lib --enable-dmeventd --enable-cmdlib \
--with-clvmd=openais
make
%install
pushd daemons
make install DESTDIR=$RPM_BUILD_ROOT
popd
pushd man
make install DESTDIR=$RPM_BUILD_ROOT
popd
install -D -m 755 $RPM_BUILD_ROOT/sbin/clvmd $RPM_BUILD_ROOT/usr/sbin/clvmd
rm $RPM_BUILD_ROOT/sbin/clvmd
rm $RPM_BUILD_ROOT/sbin/dmeventd
rm $RPM_BUILD_ROOT/usr/include/libdevmapper-event.h
rm $RPM_BUILD_ROOT/%{_lib}/libdevmapper-event-lvm2mirror.*
rm $RPM_BUILD_ROOT/%{_lib}/libdevmapper-event-lvm2snapshot.*
rm $RPM_BUILD_ROOT/%{_lib}/libdevmapper-event.*
rm -rf $RPM_BUILD_ROOT/%{_mandir}/man5
rm -f $RPM_BUILD_ROOT/%{_mandir}/man8/lv*
rm -f $RPM_BUILD_ROOT/%{_mandir}/man8/pv*
rm -f $RPM_BUILD_ROOT/%{_mandir}/man8/vg*
rm -f $RPM_BUILD_ROOT/%{_mandir}/man8/dmsetup*
rm -f $RPM_BUILD_ROOT/%{_mandir}/man8/fsadm*
install -m755 -D %{S:8} $RPM_BUILD_ROOT/usr/lib/ocf/resource.d/lvm2/clvmd
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root)
/usr/sbin/clvmd
%dir /usr/lib/ocf
%dir /usr/lib/ocf/resource.d
%dir /usr/lib/ocf/resource.d/lvm2
/usr/lib/ocf/resource.d/lvm2/clvmd
%{_mandir}/man8/clvmd.8.gz
%changelog
* Mon Apr 27 2009 xwhu(a)suse.de
- Upgrade to LVM2 2.02.45
Avoid scanning empty metadata areas for VG names
Pass --test from lvresize to fsadm as --dry-run.
Remove duplicate cpg_initialize from clvmd startup.
Add option to /etc/sysconfig/cluster to select cluster type for clvmd.
Remove external dependency on the 'cut' command from fsadm.
Fix pvs segfault when pv mda attributes requested for not available PV.
Fix lvresize size conversion for fsadm when block size is not 1K.
Add pv_mda_size to pvs and vg_mda_size to vgs.
Add "--refresh" functionality to vgchange and vgmknodes.
Fix vgrename using UUID if there are VGs with identical names.
Fix segfault when invalid field given in reporting commands.
Merge device-mapper into the lvm2 tree.
Exit with non-zero status from vgdisplay if couldn't show any requested VG.
Fix snapshot monitoring library to not cancel monitoring invalid snapshot.
Fix conversion of md chunk size into sectors.
Fix misleading error message when there are no allocatable extents in VG.
Fix handling of PVs which reappeared with old metadata version.
Fix mirror DSO to call vgreduce with proper parameters.
Fix validation of --minor and --major in lvcreate to require -My always.
Fix release: clvmd build, vgreduce consolidate & tests, /dev/ioerror warning.
* Wed Apr 01 2009 lmb(a)suse.de
- clvmd: Ensure that the lockspace is released locally even we were the
lock master, avoiding an unclean shutdown (bnc#490415).
* Tue Mar 31 2009 xwhu(a)suse.de
- Call cpg_leave before shutting down clvmd
* Wed Mar 25 2009 xwhu(a)suse.de
- Do not filter out tmp device file(bnc#485572)
* Wed Mar 25 2009 xwhu(a)suse.de
- Newly splitted off from lvm2, as a independent package now
++++++ lvm2.spec ++++++
++++ 830 lines (skipped)
++++++ 64-lvm2.rules ++++++
# This file causes block devices with LVM signatures to be automatically
# added to their volume group.
# See udev(8) for syntax
SUBSYSTEM!="block", GOTO="lvm_end"
ACTION!="add|change", GOTO="lvm_end"
ENV{ID_FS_TYPE}!="LVM2_member", GOTO="lvm_end"
ENV{ID_FS_UUID_ENC}=="?*", SYMLINK+="disk/by-id/lvm2-pvuuid-$env{ID_FS_UUID_ENC}"
ENV{DMDEPS}=="0", GOTO="lvm_end"
IMPORT{PROGRAM}="collect_lvm $tempnode"
ENV{VGUUID}!="?*", GOTO="lvm_end"
ENV{VGNAME}!="?*", GOTO="lvm_end"
# If all related PV's available already, active all LVs inside.
ENV{COLLECT}=="0", RUN+="/sbin/vgchange -a y $env{VGNAME}"
LABEL="lvm_end"
++++++ baselibs.conf ++++++
device-mapper
++++++ boot.device-mapper ++++++
#! /bin/sh
#
# Copyright (c) 2001 SuSE GmbH Nuernberg, Germany. All rights reserved.
#
# /etc/init.d/boot.device-mapper
#
### BEGIN INIT INFO
# Provides: boot.device-mapper
# Required-Start: boot.udev boot.rootfsck
# Required-Stop: boot.udev
# Default-Start: B
# Default-Stop:
# Description: activate device mapper
### END INIT INFO
. /etc/rc.status
rc_reset
case "$1" in
start)
echo "Activating device mapper..."
lsmod | grep "^dm[-_]mod[ ]" >/dev/null 2>&1 || modprobe dm-mod
rc_status -v -r
;;
stop)
# module unloading seems to be uneliable in kernel 2.6
# rmmod dm-mod
# rc_status -v
;;
status)
rc_failed 4
rc_status -v
;;
*)
echo "Usage: $0 {start|stop|status}"
exit 1
;;
esac
rc_exit
++++++ boot.lvm ++++++
#! /bin/sh
#
# Copyright (c) 2001 SuSE GmbH Nuernberg, Germany. All rights reserved.
#
# /etc/init.d/boot.lvm
#
### BEGIN INIT INFO
# Provides: boot.lvm
# Required-Start: boot.device-mapper boot.udev boot.rootfsck
# Should-Start: boot.multipath boot.md boot.dmraid
# Required-Stop: $null
# Should-Stop: $null
# Default-Start: B
# Default-Stop:
# Description: start logical volumes
### END INIT INFO
. /etc/rc.status
. /etc/sysconfig/lvm
# udev interaction
if [ -x /sbin/udevadm ] ; then
[ -z "$LVM_DEVICE_TIMEOUT" ] && LVM_DEVICE_TIMEOUT=60
else
LVM_DEVICE_TIMEOUT=0
fi
rc_reset
case "$1" in
start)
#
# Find and activate volume groups (HM 1/1/1999)
#
if test -d /etc/lvm -a -x /sbin/vgscan -a -x /sbin/vgchange ; then
# Waiting for udev to settle
if [ "$LVM_DEVICE_TIMEOUT" -gt 0 ] ; then
echo "Waiting for udev to settle..."
/sbin/udevadm settle --timeout=$LVM_DEVICE_TIMEOUT
fi
echo "Scanning for LVM volume groups..."
/sbin/vgscan --mknodes
echo "Activating LVM volume groups..."
/sbin/vgchange -a y $LVM_VGS_ACTIVATED_ON_BOOT
rc_status -v -r
fi
;;
stop)
if test -d /etc/lvm -a -x /sbin/vgchange ; then
/sbin/vgchange -a n
fi
rc_status -v
;;
status)
rc_failed 4
rc_status -v
;;
reload)
$0 start
;;
*)
echo "Usage: $0 {start|stop|status|reload}"
exit 1
;;
esac
rc_exit
++++++ bug-486952_clvmd-check-returncode-of-dlmrelease.diff ++++++
Index: LVM2.2.02.39/daemons/clvmd/clvmd-openais.c
===================================================================
--- LVM2.2.02.39.orig/daemons/clvmd/clvmd-openais.c
+++ LVM2.2.02.39/daemons/clvmd/clvmd-openais.c
@@ -368,7 +368,16 @@ static void _cluster_closedown(void)
DEBUGLOG("cluster_closedown\n");
unlock_all();
- dlm_release_lockspace(LOCKSPACE_NAME, lockspace, 0);
+ int r;
+ r = dlm_release_lockspace(LOCKSPACE_NAME, lockspace, 0);
+ if (r == -1) {
+ if (errno == EBUSY) {
+ syslog(LOG_ERR, "Some locks still active, close by force\n");
+ dlm_release_lockspace(LOCKSPACE_NAME, lockspace, 1);
+ } else {
+ syslog(LOG_ERR, "dlm_release_lockspace failed\n");
+ }
+ }
cpg_finalize(cpg_handle);
}
++++++ call_cpg_leave_before_shutdown.diff ++++++
Index: LVM2.2.02.39/daemons/clvmd/clvmd-openais.c
===================================================================
--- LVM2.2.02.39.orig/daemons/clvmd/clvmd-openais.c 2009-04-01 20:12:52.000000000 +0800
+++ LVM2.2.02.39/daemons/clvmd/clvmd-openais.c 2009-04-01 20:13:23.000000000 +0800
@@ -342,7 +342,7 @@
err = cpg_join(cpg_handle, &cpg_group_name);
if (err != SA_AIS_OK) {
cpg_finalize(cpg_handle);
- dlm_release_lockspace(LOCKSPACE_NAME, lockspace, 0);
+ dlm_release_lockspace(LOCKSPACE_NAME, lockspace, 1);
syslog(LOG_ERR, "Cannot join clvmd process group");
DEBUGLOG("Cannot join clvmd process group: %d\n", err);
return ais_to_errno(err);
@@ -351,8 +351,9 @@
err = cpg_local_get(cpg_handle,
&our_nodeid);
if (err != SA_AIS_OK) {
+ cpg_leave(cpg_handle, &cpg_group_name);
cpg_finalize(cpg_handle);
- dlm_release_lockspace(LOCKSPACE_NAME, lockspace, 0);
+ dlm_release_lockspace(LOCKSPACE_NAME, lockspace, 1);
syslog(LOG_ERR, "Cannot get local node id\n");
return ais_to_errno(err);
}
@@ -369,15 +370,11 @@
unlock_all();
int r;
- r = dlm_release_lockspace(LOCKSPACE_NAME, lockspace, 0);
- if (r == -1) {
- if (errno == EBUSY) {
- syslog(LOG_ERR, "Some locks still active, close by force\n");
- dlm_release_lockspace(LOCKSPACE_NAME, lockspace, 1);
- } else {
- syslog(LOG_ERR, "dlm_release_lockspace failed\n");
- }
+ r = dlm_release_lockspace(LOCKSPACE_NAME, lockspace, 1);
+ if (r != 0) {
+ syslog(LOG_ERR, "dlm_release_lockspace failed: %d\n", errno);
}
+ cpg_leave(cpg_handle, &cpg_group_name);
cpg_finalize(cpg_handle);
}
++++++ clvmd.ocf ++++++
#!/bin/bash
# Copyright (c) 2008 Xinwei Hu
# All Rights Reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of version 2 of the GNU General Public License as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it would be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#
# Further, this software is distributed without any warranty that it is
# free of the rightful claim of any third person regarding infringement
# or the like. Any license provided herein, whether implied or
# otherwise, applies only to this software file. Patent licenses, if
# any, provided herein do not apply to combinations of this program with
# other software, or any other product whatsoever.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write the Free Software Foundation,
# Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
#
#######################################################################
# OCF initialization
. ${OCF_ROOT}/resource.d/heartbeat/.ocf-shellfuncs
# Parameter defaults
: ${OCF_RESKEY_CRM_meta_gloablly_unique:="false"}
: ${OCF_RESKEY_daemon_timeout:="80"}
: ${OCF_RESKEY_daemon_options:="-d0"}
# Common variables
DAEMON="/usr/sbin/clvmd"
status_daemon()
{
PID=`pidofproc "$DAEMON"`
if [ -n "$PID" ]; then
return $OCF_SUCCESS
fi
return $OCF_NOT_RUNNING
}
bringup_daemon()
{
if [ ! -e "$DAEMON" ]; then
ocf_log err "Required binary not found: $DAEMON"
return $OCF_ERR_INSTALLED
fi
start_daemon "$DAEMON" "$OCF_RESKEY_daemon_options"; rc=$?
if [ $rc != 0 ]; then
ocf_log err "Could not start $DAEMON"
return $OCF_ERR_GENERIC
fi
sleep 1
COUNT=0
rc=$OCF_NOT_RUNNING
while [ $rc = $OCF_NOT_RUNNING ]; do
COUNT=`expr $COUNT + 1`
if [ $COUNT -gt $OCF_RESKEY_daemon_timeout ]; then
ocf_log err "`basename $DAEMON` did not come up"
return $OCF_ERR_GENERIC
fi
status_daemon; rc=$?
sleep 1
done
return $rc
}
kill_daemon()
{
status_daemon; rc=$?
if [ $rc != $OCF_SUCCESS ]; then
return rc
fi
ocf_log info "Stopping `basename "$DAEMON"`"
killproc -INT "$DAEMON"
sleep 1
status_daemon; rc=$?
COUNT=0
while [ $rc = $OCF_SUCCESS ]; do
COUNT=`expr $COUNT + 1`
if [ $COUNT -gt $OCF_RESKEY_daemon_timeout ]; then
ocf_log err "`basename $DAEMON` shutdown emergency"
killproc -9 "$DAEMON"
status_daemon; rc=$?
if [ $rc = $OCF_NOT_RUNNING ]; then
return $OCF_SUCCESS
else
return $OCF_ERR_GENERIC
fi
fi
killproc -INT "$DAEMON"
sleep 1
status_daemon; rc=$?
done
return $OCF_SUCCESS
}
clvmd_start() {
clvmd_monitor; rc=$?
if [ $rc != $OCF_NOT_RUNNING ]; then
return $rc
fi
ocf_log info "Starting $OCF_RESOURCE_INSTANCE"
bringup_daemon
return $?
}
clvmd_stop() {
clvmd_monitor; rc=$?
case $rc in
$OCF_NOT_RUNNING) return $OCF_SUCCESS;;
esac
ocf_log info "Stopping $OCF_RESOURCE_INSTANCE"
kill_daemon
}
clvmd_monitor() {
clvmd_validate
status_daemon
return $?
}
clvmd_usage() {
echo "usage: $0 {start|stop|monitor|validate-all|meta-data}"
echo " Expects to have a fully populated OCF RA-compliant environment set."
echo " In particualr, a value for OCF_ROOT"
}
clvmd_validate() {
: TODO: check for gloablly_unique=true and return OCF_ERR_CONFIGURED
case ${OCF_RESKEY_CRM_meta_gloablly_unique} in
yes|Yes|true|True|1)
ocf_log err "$OCF_RESOURCE_INSTANCE must be configured with the gloablly_unique=false meta attribute"
exit $OCF_ERR_CONFIGURED
;;
esac
return $OCF_SUCCESS
}
meta_data() {
cat <<END
<?xml version="1.0"?>
<!DOCTYPE resource-agent SYSTEM "ra-api-1.dtd">
<resource-agent name="clvmd">
<version>1.0</version>
<longdesc lang="en">
This is a clvmd Resource Agent.
It starts clvmd as anonymous clones.
</longdesc>
<shortdesc lang="en">clvmd resource agent</shortdesc>
<parameters>
<parameter name="daemon_timeout" unique="0">
<longdesc lang="en">
Number of seconds to allow the control daemon to come up and down
</longdesc>
<shortdesc lang="en">Daemon Timeout</shortdesc>
<content type="string" default="80"/>
</parameter>
<parameter name="daemon_options" unique="0">
<longdesc lang="en">
Options to clvmd. Refer to clvmd.8 for detailed descriptions.
</longdesc>
<shortdesc lang="en">Daemon Options</shortdesc>
<content type="string" default="-d0"/>
</parameter>
</parameters>
<actions>
<action name="start" timeout="90" />
<action name="stop" timeout="100" />
<action name="monitor" timeout="20" depth="0"/>
<action name="meta-data" timeout="5" />
<action name="validate-all" timeout="30" />
</actions>
</resource-agent>
END
}
case $__OCF_ACTION in
meta-data) meta_data
exit $OCF_SUCCESS
;;
start) clvmd_start
;;
stop) clvmd_stop
;;
monitor) clvmd_monitor
;;
validate-all) clvmd_validate
;;
usage|help) clvmd_usage
exit $OCF_SUCCESS
;;
*) clvmd_usage
exit $OCF_ERR_UNIMPLEMENTED
;;
esac
exit $?
++++++ clvmd-openais-use-dlm.diff ++++++
Index: LVM2.2.02.39/daemons/clvmd/clvmd-openais.c
===================================================================
--- LVM2.2.02.39.orig/daemons/clvmd/clvmd-openais.c 2008-06-20 20:46:21.000000000 +0800
+++ LVM2.2.02.39/daemons/clvmd/clvmd-openais.c 2009-02-25 22:13:32.000000000 +0800
@@ -34,9 +34,9 @@
#include <syslog.h>
#include <assert.h>
#include <libdevmapper.h>
+#include <libdlm.h>
#include <openais/saAis.h>
-#include <openais/saLck.h>
#include <openais/cpg.h>
#include "list.h"
@@ -50,6 +50,8 @@
/* Timeout value for several openais calls */
#define TIMEOUT 10
+#define LOCKSPACE_NAME "clvmd"
+
static void cpg_deliver_callback (cpg_handle_t handle,
struct cpg_name *groupName,
uint32_t nodeid,
@@ -66,9 +68,6 @@
/* Hash list of nodes in the cluster */
static struct dm_hash_table *node_hash;
-/* For associating lock IDs & resource handles */
-static struct dm_hash_table *lock_hash;
-
/* Number of active nodes */
static int num_nodes;
static unsigned int our_nodeid;
@@ -77,9 +76,15 @@
/* OpenAIS handles */
static cpg_handle_t cpg_handle;
-static SaLckHandleT lck_handle;
static struct cpg_name cpg_group_name;
+static dlm_lshandle_t *lockspace;
+
+struct lock_wait {
+ pthread_cond_t cond;
+ pthread_mutex_t mutex;
+ struct dlm_lksb lksb;
+};
/* Openais callback structs */
cpg_callbacks_t cpg_callbacks = {
@@ -93,13 +98,6 @@
int nodeid;
};
-struct lock_info
-{
- SaLckResourceHandleT res_handle;
- SaLckLockIdT lock_id;
- SaNameT lock_name;
-};
-
/* Set errno to something approximating the right value and return 0 or -1 */
static int ais_to_errno(SaAisErrorT err)
{
@@ -309,22 +307,11 @@
num_nodes = member_list_entries;
}
-static int lck_dispatch(struct local_client *client, char *buf, int len,
- const char *csid, struct local_client **new_client)
-{
- *new_client = NULL;
- saLckDispatch(lck_handle, SA_DISPATCH_ONE);
- return 1;
-}
-
static int _init_cluster(void)
{
SaAisErrorT err;
- SaVersionT ver = { 'B', 1, 1 };
- int select_fd;
node_hash = dm_hash_create(100);
- lock_hash = dm_hash_create(10);
err = cpg_initialize(&cpg_handle,
&cpg_callbacks);
@@ -335,16 +322,19 @@
return ais_to_errno(err);
}
- err = saLckInitialize(&lck_handle,
- NULL,
- &ver);
- if (err != SA_AIS_OK) {
- cpg_initialize(&cpg_handle, &cpg_callbacks);
- syslog(LOG_ERR, "Cannot initialise OpenAIS lock service: %d",
- err);
- DEBUGLOG("Cannot initialise OpenAIS lock service: %d\n\n", err);
- return ais_to_errno(err);
+ /* Create a lockspace for LV & VG locks to live in */
+ lockspace = dlm_create_lockspace(LOCKSPACE_NAME, 0600);
+ if (!lockspace) {
+ if (errno == EEXIST) {
+ lockspace = dlm_open_lockspace(LOCKSPACE_NAME);
+ }
+ if (!lockspace) {
+ syslog(LOG_ERR, "Unable to create lockspace for CLVM: %m");
+ return -1;
+ }
}
+ dlm_ls_pthread_init(lockspace);
+ DEBUGLOG("DLM initialisation complete\n");
/* Connect to the clvmd group */
strcpy((char *)cpg_group_name.value, "clvmd");
@@ -352,7 +342,7 @@
err = cpg_join(cpg_handle, &cpg_group_name);
if (err != SA_AIS_OK) {
cpg_finalize(cpg_handle);
- saLckFinalize(lck_handle);
+ dlm_release_lockspace(LOCKSPACE_NAME, lockspace, 0);
syslog(LOG_ERR, "Cannot join clvmd process group");
DEBUGLOG("Cannot join clvmd process group: %d\n", err);
return ais_to_errno(err);
@@ -362,15 +352,12 @@
&our_nodeid);
if (err != SA_AIS_OK) {
cpg_finalize(cpg_handle);
- saLckFinalize(lck_handle);
+ dlm_release_lockspace(LOCKSPACE_NAME, lockspace, 0);
syslog(LOG_ERR, "Cannot get local node id\n");
return ais_to_errno(err);
}
DEBUGLOG("Our local node id is %d\n", our_nodeid);
- saLckSelectionObjectGet(lck_handle, (SaSelectionObjectT *)&select_fd);
- add_internal_client(select_fd, lck_dispatch);
-
DEBUGLOG("Connected to OpenAIS\n");
return 0;
@@ -381,7 +368,7 @@
DEBUGLOG("cluster_closedown\n");
unlock_all();
- saLckFinalize(lck_handle);
+ dlm_release_lockspace(LOCKSPACE_NAME, lockspace, 0);
cpg_finalize(cpg_handle);
}
@@ -472,156 +459,69 @@
return somedown;
}
-/* Real locking */
-static int _lock_resource(char *resource, int mode, int flags, int *lockid)
+static int _sync_lock(const char *resource, int mode, int flags, int *lockid)
{
- struct lock_info *linfo;
- SaLckResourceHandleT res_handle;
- SaAisErrorT err;
- SaLckLockIdT lock_id;
- SaLckLockStatusT lockStatus;
-
- /* This needs to be converted from DLM/LVM2 value for OpenAIS LCK */
- if (flags & LCK_NONBLOCK) flags = SA_LCK_LOCK_NO_QUEUE;
-
- linfo = malloc(sizeof(struct lock_info));
- if (!linfo)
- return -1;
+ struct dlm_lksb lksb;
+ int err;
DEBUGLOG("lock_resource '%s', flags=%d, mode=%d\n", resource, flags, mode);
- linfo->lock_name.length = strlen(resource)+1;
- strcpy((char *)linfo->lock_name.value, resource);
-
- err = saLckResourceOpen(lck_handle, &linfo->lock_name,
- SA_LCK_RESOURCE_CREATE, TIMEOUT, &res_handle);
- if (err != SA_AIS_OK)
- {
- DEBUGLOG("ResourceOpen returned %d\n", err);
- free(linfo);
- return ais_to_errno(err);
- }
+ if (flags & LKF_CONVERT)
+ lksb.sb_lkid = *lockid;
- err = saLckResourceLock(
- res_handle,
- &lock_id,
+ err = dlm_ls_lock_wait(lockspace,
mode,
+ &lksb,
flags,
+ resource,
+ strlen(resource),
0,
- SA_TIME_END,
- &lockStatus);
- if (err != SA_AIS_OK && lockStatus != SA_LCK_LOCK_GRANTED)
+ NULL, NULL, NULL);
+
+ if (err != 0)
{
- free(linfo);
- saLckResourceClose(res_handle);
- return ais_to_errno(err);
+ DEBUGLOG("dlm_ls_lock returned %d\n", errno);
+ return err;
+ }
+ errno = lksb.sb_status;
+ if (lksb.sb_status != 0)
+ {
+ DEBUGLOG("dlm_ls_lock returns lksb.sb_status %d\n", lksb.sb_status);
+ return -1;
}
-
- /* Wait for it to complete */
-
- DEBUGLOG("lock_resource returning %d, lock_id=%llx\n", err,
- lock_id);
- linfo->lock_id = lock_id;
- linfo->res_handle = res_handle;
+ DEBUGLOG("lock_resource returning %d, lock_id=%x\n", err, lksb.sb_lkid);
- dm_hash_insert(lock_hash, resource, linfo);
+ *lockid = lksb.sb_lkid;
- return ais_to_errno(err);
+ return 0;
}
-
-static int _unlock_resource(char *resource, int lockid)
+static int _sync_unlock(const char *resource, int lockid)
{
- SaAisErrorT err;
- struct lock_info *linfo;
+ struct dlm_lksb lksb;
+ int err;
- DEBUGLOG("unlock_resource %s\n", resource);
- linfo = dm_hash_lookup(lock_hash, resource);
- if (!linfo)
- return 0;
+ DEBUGLOG("unlock_resource: %s lockid: %x\n", resource, lockid);
+ lksb.sb_lkid = lockid;
- DEBUGLOG("unlock_resource: lockid: %llx\n", linfo->lock_id);
- err = saLckResourceUnlock(linfo->lock_id, SA_TIME_END);
- if (err != SA_AIS_OK)
+ err = dlm_ls_unlock_wait(lockspace,
+ lockid,
+ 0,
+ &lksb);
+ if (err != 0)
{
DEBUGLOG("Unlock returned %d\n", err);
- return ais_to_errno(err);
+ return err;
}
-
- /* Release the resource */
- dm_hash_remove(lock_hash, resource);
- saLckResourceClose(linfo->res_handle);
- free(linfo);
-
- return ais_to_errno(err);
-}
-
-static int _sync_lock(const char *resource, int mode, int flags, int *lockid)
-{
- int status;
- char lock1[strlen(resource)+3];
- char lock2[strlen(resource)+3];
-
- snprintf(lock1, sizeof(lock1), "%s-1", resource);
- snprintf(lock2, sizeof(lock2), "%s-2", resource);
-
- switch (mode)
+ errno = lksb.sb_status;
+ if (lksb.sb_status != EUNLOCK)
{
- case LCK_EXCL:
- status = _lock_resource(lock1, SA_LCK_EX_LOCK_MODE, flags, lockid);
- if (status)
- goto out;
-
- /* If we can't get this lock too then bail out */
- status = _lock_resource(lock2, SA_LCK_EX_LOCK_MODE, LCK_NONBLOCK,
- lockid);
- if (status == SA_LCK_LOCK_NOT_QUEUED)
- {
- _unlock_resource(lock1, *lockid);
- status = -1;
- errno = EAGAIN;
- }
- break;
-
- case LCK_PREAD:
- case LCK_READ:
- status = _lock_resource(lock1, SA_LCK_PR_LOCK_MODE, flags, lockid);
- if (status)
- goto out;
- _unlock_resource(lock2, *lockid);
- break;
-
- case LCK_WRITE:
- status = _lock_resource(lock2, SA_LCK_EX_LOCK_MODE, flags, lockid);
- if (status)
- goto out;
- _unlock_resource(lock1, *lockid);
- break;
-
- default:
- status = -1;
- errno = EINVAL;
- break;
+ DEBUGLOG("dlm_ls_unlock_wait returns lksb.sb_status: %x\n", lksb.sb_status);
+ return -1;
}
-out:
- *lockid = mode;
- return status;
-}
-
-static int _sync_unlock(const char *resource, int lockid)
-{
- int status = 0;
- char lock1[strlen(resource)+3];
- char lock2[strlen(resource)+3];
-
- snprintf(lock1, sizeof(lock1), "%s-1", resource);
- snprintf(lock2, sizeof(lock2), "%s-2", resource);
-
- _unlock_resource(lock1, lockid);
- _unlock_resource(lock2, lockid);
+ return 0;
- return status;
}
/* We are always quorate ! */
Index: LVM2.2.02.39/daemons/clvmd/Makefile.in
===================================================================
--- LVM2.2.02.39.orig/daemons/clvmd/Makefile.in 2009-02-25 18:52:32.000000000 +0800
+++ LVM2.2.02.39/daemons/clvmd/Makefile.in 2009-02-25 18:52:32.000000000 +0800
@@ -59,7 +59,7 @@
ifeq ("$(OPENAIS)", "yes")
SOURCES += clvmd-openais.c
- LMLIBS += -lSaLck -lcpg
+ LMLIBS += -ldlm -lcpg
DEFS += -DUSE_OPENAIS
endif
Index: LVM2.2.02.39/daemons/clvmd/clvm.h
===================================================================
--- LVM2.2.02.39.orig/daemons/clvmd/clvm.h 2009-02-25 18:52:32.000000000 +0800
+++ LVM2.2.02.39/daemons/clvmd/clvm.h 2009-02-25 18:52:32.000000000 +0800
@@ -79,6 +79,7 @@
/* Locking flags - these match the ones
* in dlm.h
*/
+#ifndef LKF_NOQUEUE
#define LKF_NOQUEUE (0x00000001)
#define LKF_CANCEL (0x00000002)
#define LKF_CONVERT (0x00000004)
@@ -94,3 +95,4 @@
#define LKF_HEADQUE (0x00001000)
#define LKF_NOORDER (0x00002000)
#endif
+#endif
++++++ cmdline_large_minor.diff ++++++
--- tools/lvmcmdline.c
+++ tools/lvmcmdline.c 2008/02/20 10:45:12
@@ -265,8 +265,8 @@
if (!_get_int_arg(a, &ptr) || (*ptr) || (a->sign == SIGN_MINUS))
return 0;
- if (a->i_value > 255) {
- log_error("Minor number outside range 0-255");
+ if (a->i_value > 1048575) {
+ log_error("Minor number outside range 0-1048575");
return 0;
}
++++++ collect_lvm ++++++
#!/bin/sh
PVNAME=$1
/sbin/lvm pvs --config "devices {filter = [ \"a|$PVNAME|\", \"r/.*/\" ]}" --partial -o vg_name,vg_attr,pv_uuid,vg_uuid --ignorelockingfailure --noheadings $PVNAME 2>/dev/null | while read vgname vgattr pvuuid vguuid; do
if [[ $vgattr =~ mode. ]]; then
continue
fi
if [[ $vgattr =~ .....c ]]; then
exit 1
fi
lvlist=$(/sbin/lvm lvs --config "devices {filter = [ \"a|$PVNAME|\", \"r/.*/\" ]}" --partial -o lv_name,lv_attr --ignorelockingfailure --noheadings $vgname 2>/dev/null | while read lvname lvattr; do
if [[ $lvattr =~ mode. ]] ; then
continue
fi
if [[ $lvattr =~ ....-. ]]; then
echo -n $lvname
fi
done)
if [ -z "$lvlist" ] ; then
exit 1
fi
pvlist=$(/sbin/lvm vgdisplay --config "devices {filter = [ \"a|$PVNAME|\", \"r/.*/\" ]}" --partial -v $vgname 2>/dev/null | while read str1 str2 val; do
if [[ $str1 =~ PV && $str2 =~ UUID ]]; then
echo $val
fi
done)
echo PVUUID=$pvuuid
echo VGUUID=$vguuid
echo VGNAME=$vgname
collected=0
for pv in $pvlist; do
if [[ x$pv = x$pvuuid ]]; then
continue
fi
if [[ ! -h /dev/disk/by-id/lvm2-pvuuid-$pv ]]; then
echo COLLECT=1
collected=1
break
fi
done
if [[ $collected = 0 ]]; then
echo COLLECT=0
fi
# /lib/udev/collect $vguuid $pvuuid $pvlist
# echo COLLECT=$?
done
++++++ device-mapper-dmsetup-deps-export.patch ++++++
Index: LVM2.2.02.45/tools/dmsetup.c
===================================================================
--- LVM2.2.02.45.orig/tools/dmsetup.c 2009-04-27 17:46:16.000000000 +0800
+++ LVM2.2.02.45/tools/dmsetup.c 2009-04-27 17:58:50.000000000 +0800
@@ -1087,6 +1087,7 @@
const char *name = NULL;
const char *uuid = NULL;
struct dm_info info;
+ struct dm_deps *deps;
if (data)
name = names->name;
@@ -1156,6 +1157,22 @@
printf("\n");
}
+ dm_task_destroy(dmt);
+
+ if (!(dmt = dm_task_create(DM_DEVICE_DEPS)))
+ goto out;
+
+ if (!_set_task_device(dmt, name, 0))
+ goto out;
+
+ if (!dm_task_run(dmt))
+ goto out;
+
+ if (!(deps = dm_task_get_deps(dmt)))
+ goto out;
+
+ printf("DM_DEPS=%d\n", deps->count);
+
r = 1;
out:
if (dmt)
++++++ device-mapper-dmsetup-export.patch ++++++
Index: LVM2.2.02.45/tools/dmsetup.c
===================================================================
--- LVM2.2.02.45.orig/tools/dmsetup.c 2008-10-31 01:52:06.000000000 +0800
+++ LVM2.2.02.45/tools/dmsetup.c 2009-04-27 17:46:16.000000000 +0800
@@ -1075,6 +1075,94 @@
return r;
}
+static int _export(int argc, char **argv, void *data)
+{
+ int r = 0;
+ struct dm_task *dmt = NULL;
+ void *next = NULL;
+ uint64_t start, length;
+ char *target_type = NULL;
+ char *params;
+ struct dm_names *names = (struct dm_names *) data;
+ const char *name = NULL;
+ const char *uuid = NULL;
+ struct dm_info info;
+
+ if (data)
+ name = names->name;
+ else if (argc == 2)
+ name = argv[1];
+
+ if (!(dmt = dm_task_create(DM_DEVICE_STATUS)))
+ goto out;
+
+ if (!_set_task_device(dmt, name, 0))
+ goto out;
+
+ if (!dm_task_run(dmt))
+ goto out;
+
+ if (!dm_task_get_info(dmt, &info) || !info.exists)
+ goto out;
+
+ if (!name)
+ name = dm_task_get_name(dmt);
+
+ uuid = dm_task_get_uuid(dmt);
+ printf("DM_NAME=%s\n", name);
+
+ if ((uuid = dm_task_get_uuid(dmt)) && *uuid)
+ printf("DM_UUID=%s\n", uuid);
+
+ if (!info.exists) {
+ printf("DM_STATE=NOTPRESENT\n");
+ goto out;
+ }
+
+ printf("DM_STATE=%s\n",
+ info.suspended ? "SUSPENDED" :
+ (info.read_only ? "READONLY" : "ACTIVE"));
+
+ if (!info.live_table && !info.inactive_table)
+ printf("DM_TABLE_STATE=NONE\n");
+ else
+ printf("DM_TABLE_STATE=%s%s%s\n",
+ info.live_table ? "LIVE" : "",
+ info.live_table && info.inactive_table ? "/" : "",
+ info.inactive_table ? "INACTIVE" : "");
+
+ if (info.open_count != -1)
+ printf("DM_OPENCOUNT=%d\n", info.open_count);
+
+ printf("DM_LAST_EVENT_NR=%" PRIu32 "\n", info.event_nr);
+
+ printf("DM_MAJOR=%d\n", info.major);
+ printf("DM_MINOR=%d\n", info.minor);
+
+ if (info.target_count != -1)
+ printf("DM_TARGET_COUNT=%d\n", info.target_count);
+
+ /* export all table types */
+ next = dm_get_next_target(dmt, next, &start, &length,
+ &target_type, ¶ms);
+ if (target_type) {
+ printf("DM_TARGET_TYPES=%s", target_type);
+ while (next) {
+ next = dm_get_next_target(dmt, next, &start, &length,
+ &target_type, ¶ms);
+ if (target_type)
+ printf(",%s", target_type);
+ }
+ printf("\n");
+ }
+
+ r = 1;
+ out:
+ if (dmt)
+ dm_task_destroy(dmt);
+ return r;
+}
+
/* Show target names and their version numbers */
static int _targets(int argc __attribute((unused)), char **argv __attribute((unused)), void *data __attribute((unused)))
{
@@ -2115,6 +2203,7 @@
{"info", "[<device>]", 0, 1, _info},
{"deps", "[<device>]", 0, 1, _deps},
{"status", "[<device>] [--target <target_type>]", 0, 1, _status},
+ {"export", "[<device>]", 0, 1, _export},
{"table", "[<device>] [--target <target_type>] [--showkeys]", 0, 1, _status},
{"wait", "<device> [<event_nr>]", 0, 2, _wait},
{"mknodes", "[<device>]", 0, 1, _mknodes},
Index: LVM2.2.02.45/man/dmsetup.8.in
===================================================================
--- LVM2.2.02.45.orig/man/dmsetup.8.in 2007-12-28 23:13:38.000000000 +0800
+++ LVM2.2.02.45/man/dmsetup.8.in 2009-04-27 17:48:53.000000000 +0800
@@ -46,6 +46,9 @@
.I [--noheadings] [--separator separator] [-o fields] [-O|--sort sort_fields]
.I [device_name]
.br
+.B dmsetup export
+.I [device_name]
+.br
.B dmsetup deps
.I [device_name]
.br
@@ -146,6 +149,10 @@
If successful a device will appear as
/dev/device-mapper/<device-name>.
See below for information on the table format.
+.IP \fBexport
+.I [device_name]
+.br
+Outputs information in key/value format to be imported by other programs.
.IP \fBdeps
.I [device_name]
.br
++++++ device-mapper-gcc-warning.diff ++++++
Index: LVM2.2.02.45/libdm/datastruct/hash.c
===================================================================
--- LVM2.2.02.45.orig/libdm/datastruct/hash.c 2008-11-04 02:59:59.000000000 +0800
+++ LVM2.2.02.45/libdm/datastruct/hash.c 2009-04-27 17:52:05.000000000 +0800
@@ -19,7 +19,7 @@
struct dm_hash_node *next;
void *data;
unsigned keylen;
- char key[0];
+ unsigned char key[0];
};
struct dm_hash_table {
@@ -140,7 +140,7 @@
static struct dm_hash_node **_find(struct dm_hash_table *t, const char *key,
uint32_t len)
{
- unsigned h = _hash(key, len) & (t->num_slots - 1);
+ unsigned h = _hash((unsigned char*)key, len) & (t->num_slots - 1);
struct dm_hash_node **c;
for (c = &t->slots[h]; *c; c = &((*c)->next))
@@ -235,7 +235,7 @@
char *dm_hash_get_key(struct dm_hash_table *t __attribute((unused)),
struct dm_hash_node *n)
{
- return n->key;
+ return (char*)n->key;
}
void *dm_hash_get_data(struct dm_hash_table *t __attribute((unused)),
Index: LVM2.2.02.45/libdm/ioctl/libdm-iface.c
===================================================================
--- LVM2.2.02.45.orig/libdm/ioctl/libdm-iface.c 2009-02-13 04:42:07.000000000 +0800
+++ LVM2.2.02.45/libdm/ioctl/libdm-iface.c 2009-04-27 17:53:30.000000000 +0800
@@ -1668,7 +1668,8 @@
dmt->no_open_count ? 'N' : 'O',
dmt->no_flush ? 'N' : 'F',
dmt->skip_lockfs ? "S " : "",
- dmt->sector, dmt->message ? dmt->message : "",
+ (unsigned long long int)dmt->sector,
+ dmt->message ? dmt->message : "",
dmi->data_size);
#ifdef DM_IOCTLS
if (ioctl(_control_fd, command, dmi) < 0) {
++++++ device-mapper-static.diff ++++++
Index: LVM2.2.02.45/libdm/Makefile.in
===================================================================
--- LVM2.2.02.45.orig/libdm/Makefile.in 2009-04-27 17:41:57.000000000 +0800
+++ LVM2.2.02.45/libdm/Makefile.in 2009-04-27 17:56:06.000000000 +0800
@@ -78,7 +78,6 @@
$(libdir)/libdevmapper.$(LIB_SUFFIX)
install_static: install_@interface@_static
- $(LN_S) -f libdevmapper.a.$(LIB_VERSION_DM) $(libdir)/libdevmapper.a
install_ioctl: ioctl/libdevmapper.$(LIB_SUFFIX)
$(INSTALL) -D -m 555 $(STRIP) $< \
@@ -90,7 +89,7 @@
install_ioctl_static: ioctl/libdevmapper.a
$(INSTALL) -D -m 555 $(STRIP) $< \
- $(libdir)/libdevmapper.a.$(LIB_VERSION_DM)
+ $(libdir)/libdevmapper.a
$(VERSIONED_SHLIB): %.$(LIB_SUFFIX).$(LIB_VERSION_DM): $(interface)/%.$(LIB_SUFFIX)
rm -f $@
++++++ device-mapper-wait_udev.diff ++++++
Index: LVM2.2.02.45/libdm/ioctl/libdm-iface.c
===================================================================
--- LVM2.2.02.45.orig/libdm/ioctl/libdm-iface.c 2009-04-27 17:53:30.000000000 +0800
+++ LVM2.2.02.45/libdm/ioctl/libdm-iface.c 2009-04-27 17:57:54.000000000 +0800
@@ -129,6 +129,67 @@
# define DM_EXISTS_FLAG 0x00000004
#endif
+static unsigned long long get_seq()
+{
+ struct stat s;
+ int r;
+ unsigned long long seq = 0;
+ FILE* fp;
+ r = stat("/sys/kernel/uevent_seqnum", &s);
+ if (r) { return seq; }
+ if (!S_ISREG(s.st_mode)) { return seq; }
+ fp = fopen("/sys/kernel/uevent_seqnum", "r");
+ if (fp == NULL) { return seq; }
+ fscanf(fp, "%llu\n", &seq);
+ fclose(fp);
+ return seq;
+}
+
+static int wait_4_udev(unsigned long long start_seq, unsigned long long end_seq)
+{
+ FILE* fp;
+ struct stat s;
+ int r;
+ int ite=30; /* Iterate 30 times. Otherwise, it's considered timed out */
+ unsigned long long seq;
+ /*
+ * len("/dev/.udev/queue/") + len(str(0xffffffffffffffff)) = 38
+ */
+ #define PATH_SIZE 40
+ char filename[PATH_SIZE];
+ #undef PATH_SIZE
+
+ if (start_seq > end_seq || end_seq == 0) return 1;
+
+ /* Wait until end_seq is enqueued into udev */
+ r = stat("/dev/.udev/uevent_seqnum", &s);
+ if (r) { return 1; }
+ if (!S_ISREG(s.st_mode)) { return 1; }
+ while (ite-- > 0) {
+ fp = fopen("/dev/.udev/uevent_seqnum", "r");
+ if (fp == NULL) { return 1; }
+ fscanf(fp, "%llu\n", &seq);
+ fclose(fp);
+ if (seq >= end_seq) { break; }
+ usleep(200000);
+ }
+ if (ite <=0 ) return 1;
+
+ /* Loop to make sure all $seq are unlinked in /dev/.udev/queue then */
+ for (seq = start_seq; seq <= end_seq; seq++) {
+ ite = 30;
+ while (ite-- > 0) {
+ snprintf(filename, sizeof(filename), "/dev/.udev/queue/%llu", seq);
+ r = open(filename, O_RDONLY);
+ if (r == -1 && errno == ENOENT) break;
+ if (r >= 0) close(r);
+ usleep(200000);
+ }
+ if (ite <=0 ) return 1;
+ }
+ return 0;
+}
+
static void *_align(void *ptr, unsigned int a)
{
register unsigned long agn = --a;
@@ -679,6 +740,7 @@
{
struct dm_ioctl_v1 *dmi;
unsigned int command;
+ unsigned long long before_seq, after_seq;
dmi = _flatten_v1(dmt);
if (!dmi) {
@@ -705,6 +767,8 @@
dmi->name, dmi->uuid, dmt->newname ? " " : "",
dmt->newname ? dmt->newname : "",
dmi->data_size);
+
+ before_seq = get_seq();
if (dmt->type == DM_DEVICE_LIST) {
if (!_dm_names_v1(dmi))
goto bad;
@@ -724,10 +788,13 @@
#else /* Userspace alternative for testing */
#endif
+ after_seq = get_seq();
if (dmi->flags & DM_BUFFER_FULL_FLAG)
/* FIXME Increase buffer size and retry operation (if query) */
log_error("WARNING: libdevmapper buffer too small for data");
+ wait_4_udev(before_seq, after_seq);
+
switch (dmt->type) {
case DM_DEVICE_CREATE:
add_dev_node(dmt->dev_name, MAJOR(dmi->dev), MINOR(dmi->dev),
@@ -1706,6 +1773,7 @@
{
struct dm_ioctl *dmi;
unsigned command;
+ unsigned long long before_seq, after_seq;
#ifdef DM_COMPAT
if (_dm_version == 1)
@@ -1736,9 +1804,11 @@
return 0;
repeat_ioctl:
+ before_seq = get_seq();
if (!(dmi = _do_dm_ioctl(dmt, command, _ioctl_buffer_double_factor)))
return 0;
+ after_seq = get_seq();
if (dmi->flags & DM_BUFFER_FULL_FLAG) {
switch (dmt->type) {
case DM_DEVICE_LIST_VERSIONS:
@@ -1755,6 +1825,8 @@
}
}
+ wait_4_udev(before_seq, after_seq);
+
switch (dmt->type) {
case DM_DEVICE_CREATE:
if (dmt->dev_name && *dmt->dev_name)
++++++ dont_ignore_tmp_device_file.diff ++++++
Index: LVM2.2.02.39/lib/device/dev-cache.c
===================================================================
--- LVM2.2.02.39.orig/lib/device/dev-cache.c 2008-05-29 06:27:47.000000000 +0800
+++ LVM2.2.02.39/lib/device/dev-cache.c 2009-03-16 23:14:49.000000000 +0800
@@ -356,7 +356,11 @@
dirent_count = scandir(dir, &dirent, NULL, alphasort);
if (dirent_count > 0) {
for (n = 0; n < dirent_count; n++) {
- if (dirent[n]->d_name[0] == '.') {
+ if (dirent[n]->d_name[0] == '.' && dirent[n]->d_name[1] == '\0') {
+ free(dirent[n]);
+ continue;
+ }
+ if (dirent[0]->d_name[0] == '.' && dirent[n]->d_name[1] == '.' && dirent[n]->d_name[2] == '\0') {
free(dirent[n]);
continue;
}
++++++ enable-clvmd.patch ++++++
--- daemons/clvmd/clvmd.c
+++ daemons/clvmd/clvmd.c
@@ -37,7 +37,7 @@
#include <syslog.h>
#include <errno.h>
#include <limits.h>
-#include <libdlm.h>
+//#include <libdlm.h>
#include "clvmd-comms.h"
#include "lvm-functions.h"
--- daemons/clvmd/clvmd-command.c
+++ daemons/clvmd/clvmd-command.c
@@ -65,7 +65,7 @@
#include <unistd.h>
#include <errno.h>
#include <libdevmapper.h>
-#include <libdlm.h>
+//#include <libdlm.h>
#include "list.h"
#include "locking.h"
--- daemons/clvmd/clvm.h
+++ daemons/clvmd/clvm.h
@@ -68,4 +68,29 @@
#define CLVMD_CMD_GET_CLUSTERNAME 41
#define CLVMD_CMD_SET_DEBUG 42
#define CLVMD_CMD_VG_BACKUP 43
+
+/* Lock modes: */
+#define LKM_NLMODE 0 /* null lock */
+#define LKM_CRMODE 1 /* concurrent read */
+#define LKM_CWMODE 2 /* concurrent write */
+#define LKM_PRMODE 3 /* protected read */
+#define LKM_PWMODE 4 /* protected write */
+#define LKM_EXMODE 5 /* exclusive */
+/* Locking flags - these match the ones
+ * in dlm.h
+ */
+#define LKF_NOQUEUE (0x00000001)
+#define LKF_CANCEL (0x00000002)
+#define LKF_CONVERT (0x00000004)
+#define LKF_VALBLK (0x00000008)
+#define LKF_QUECVT (0x00000010)
+#define LKF_IVVALBLK (0x00000020)
+#define LKF_CONVDEADLK (0x00000040)
+#define LKF_PERSISTENT (0x00000080)
+#define LKF_NODLCKWT (0x00000100)
+#define LKF_NODLCKBLK (0x00000200)
+#define LKF_EXPEDITE (0x00000400)
+#define LKF_NOQUEUEBAST (0x00000800)
+#define LKF_HEADQUE (0x00001000)
+#define LKF_NOORDER (0x00002000)
#endif
--- daemons/clvmd/lvm-functions.c
+++ daemons/clvmd/lvm-functions.c
@@ -31,7 +31,7 @@
#include <syslog.h>
#include <assert.h>
#include <libdevmapper.h>
-#include <libdlm.h>
+//#include <libdlm.h>
#include "list.h"
#include "lvm-types.h"
++++++ improve_probing.diff ++++++
Index: lib/filters/filter.c
===================================================================
--- lib/filters/filter.c.orig 2009-04-27 16:15:37.000000000 +0800
+++ lib/filters/filter.c 2009-04-27 16:15:39.000000000 +0800
@@ -13,6 +13,12 @@
* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+#include <sys/ioctl.h>
+#include <linux/fs.h>
+#undef MAJOR
+#undef MINOR
+#undef MKDEV
+
#include "lib.h"
#include "dev-cache.h"
#include "filter.h"
@@ -103,11 +109,18 @@
}
/* Check it's accessible */
- if (!dev_open_flags(dev, O_RDONLY, 0, 1)) {
+ if (!dev_open_flags(dev, O_RDONLY|O_NONBLOCK, 0, 1)) {
log_debug("%s: Skipping: open failed", name);
return 0;
}
-
+
+ /* Skip cdrom device */
+ #define CDROM_GET_CAPABILITY 0x5331
+ if (ioctl(dev->fd, CDROM_GET_CAPABILITY) >= 0) {
+ log_debug("%s: Skipping: cdrom device", name );
+ goto out;
+ }
+
/* Check it's not too small */
if (!dev_get_size(dev, &size)) {
log_debug("%s: Skipping: dev_get_size failed", name);
++++++ k_dev_t.dif ++++++
Index: LVM2.2.02.45/libdm/ioctl/libdm-compat.h
===================================================================
--- LVM2.2.02.45.orig/libdm/ioctl/libdm-compat.h 2008-11-01 10:19:18.000000000 +0800
+++ LVM2.2.02.45/libdm/ioctl/libdm-compat.h 2009-04-27 17:43:08.000000000 +0800
@@ -40,7 +40,7 @@
int32_t open_count; /* out */
uint32_t flags; /* in/out */
- __kernel_dev_t dev; /* in/out */
+ __kernel_old_dev_t dev; /* in/out */
char name[DM_NAME_LEN]; /* device name */
char uuid[DM_UUID_LEN]; /* unique identifier for
@@ -60,7 +60,7 @@
struct dm_target_deps_v1 {
uint32_t count;
- __kernel_dev_t dev[0]; /* out */
+ __kernel_old_dev_t dev[0]; /* out */
};
enum {
++++++ lvm.conf ++++++
# This is an example configuration file for the LVM2 system.
# It contains the default settings that would be used if there was no
# /etc/lvm/lvm.conf file.
#
# Refer to 'man lvm.conf' for further information including the file layout.
#
# To put this file in a different directory and override /etc/lvm set
# the environment variable LVM_SYSTEM_DIR before running the tools.
# This section allows you to configure which block devices should
# be used by the LVM system.
devices {
# Where do you want your volume groups to appear ?
dir = "/dev"
# An array of directories that contain the device nodes you wish
# to use with LVM2.
scan = [ "/dev" ]
# A filter that tells LVM2 to only use a restricted set of devices.
# The filter consists of an array of regular expressions. These
# expressions can be delimited by a character of your choice, and
# prefixed with either an 'a' (for accept) or 'r' (for reject).
# The first expression found to match a device name determines if
# the device will be accepted or rejected (ignored). Devices that
# don't match any patterns are accepted.
# Remember to run vgscan after you change this parameter to ensure
# that the cache file gets regenerated (see below).
# By default we accept every block device except udev names:
filter = [ "r|/dev/.*/by-path/.*|", "r|/dev/.*/by-id/.*|", "a/.*/" ]
# Exclude the cdrom drive
# filter = [ "r|/dev/cdrom|" ]
# When testing I like to work with just loopback devices:
# filter = [ "a/loop/", "r/.*/" ]
# Or maybe all loops and ide drives except hdc:
# filter =[ "a|loop|", "r|/dev/hdc|", "a|/dev/ide|", "r|.*|" ]
# Use anchors if you want to be really specific
# filter = [ "a|^/dev/hda8$|", "r/.*/" ]
# The results of the filtering are cached on disk to avoid
# rescanning dud devices (which can take a very long time). By
# default this cache file is hidden in the /etc/lvm directory.
# It is safe to delete this file: the tools regenerate it.
cache = "/etc/lvm/.cache"
# You can turn off writing this cache file by setting this to 0.
write_cache_state = 1
# Advanced settings.
# List of pairs of additional acceptable block device types found
# in /proc/devices with maximum (non-zero) number of partitions.
# types = [ "fd", 16 ]
# If sysfs is mounted (2.6 kernels) restrict device scanning to
# the block devices it believes are valid.
# 1 enables; 0 disables.
sysfs_scan = 1
# By default, LVM2 will ignore devices used as components of
# software RAID (md) devices by looking for md superblocks.
# 1 enables; 0 disables.
md_component_detection = 1
}
# This section that allows you to configure the nature of the
# information that LVM2 reports.
log {
# Controls the messages sent to stdout or stderr.
# There are three levels of verbosity, 3 being the most verbose.
verbose = 0
# Should we send log messages through syslog?
# 1 is yes; 0 is no.
syslog = 1
# Should we log error and debug messages to a file?
# By default there is no log file.
#file = "/var/log/lvm2.log"
# Should we overwrite the log file each time the program is run?
# By default we append.
overwrite = 0
# What level of log messages should we send to the log file and/or syslog?
# There are 6 syslog-like log levels currently in use - 2 to 7 inclusive.
# 7 is the most verbose (LOG_DEBUG).
level = 0
# Format of output messages
# Whether or not (1 or 0) to indent messages according to their severity
indent = 1
# Whether or not (1 or 0) to display the command name on each line output
command_names = 0
# A prefix to use before the message text (but after the command name,
# if selected). Default is two spaces, so you can see/grep the severity
# of each message.
prefix = " "
# To make the messages look similar to the original LVM tools use:
# indent = 0
# command_names = 1
# prefix = " -- "
# Set this if you want log messages during activation.
# Don't use this in low memory situations (can deadlock).
# activation = 0
}
# Configuration of metadata backups and archiving. In LVM2 when we
# talk about a 'backup' we mean making a copy of the metadata for the
# *current* system. The 'archive' contains old metadata configurations.
# Backups are stored in a human readeable text format.
backup {
# Should we maintain a backup of the current metadata configuration ?
# Use 1 for Yes; 0 for No.
# Think very hard before turning this off!
backup = 1
# Where shall we keep it ?
# Remember to back up this directory regularly!
backup_dir = "/etc/lvm/backup"
# Should we maintain an archive of old metadata configurations.
# Use 1 for Yes; 0 for No.
# On by default. Think very hard before turning this off.
archive = 1
# Where should archived files go ?
# Remember to back up this directory regularly!
archive_dir = "/etc/lvm/archive"
# What is the minimum number of archive files you wish to keep ?
retain_min = 10
# What is the minimum time you wish to keep an archive file for ?
retain_days = 30
}
# Settings for the running LVM2 in shell (readline) mode.
shell {
# Number of lines of history to store in ~/.lvm_history
history_size = 100
}
# Miscellaneous global LVM2 settings
global {
# The file creation mask for any files and directories created.
# Interpreted as octal if the first digit is zero.
umask = 077
# Allow other users to read the files
#umask = 022
# Enabling test mode means that no changes to the on disk metadata
# will be made. Equivalent to having the -t option on every
# command. Defaults to off.
test = 0
# Whether or not to communicate with the kernel device-mapper.
# Set to 0 if you want to use the tools to manipulate LVM metadata
# without activating any logical volumes.
# If the device-mapper kernel driver is not present in your kernel
# setting this to 0 should suppress the error messages.
activation = 1
# If we can't communicate with device-mapper, should we try running
# the LVM1 tools?
# This option only applies to 2.4 kernels and is provided to help you
# switch between device-mapper kernels and LVM1 kernels.
# The LVM1 tools need to be installed with .lvm1 suffices
# e.g. vgscan.lvm1 and they will stop working after you start using
# the new lvm2 on-disk metadata format.
# The default value is set when the tools are built.
# fallback_to_lvm1 = 0
# The default metadata format that commands should use - "lvm1" or "lvm2".
# The command line override is -M1 or -M2.
# Defaults to "lvm1" if compiled in, else "lvm2".
# format = "lvm1"
# Location of proc filesystem
proc = "/proc"
# Type of locking to use. Defaults to file-based locking (1).
# Turn locking off by setting to 0 (dangerous: risks metadata corruption
# if LVM2 commands get run concurrently).
locking_type = 1
# Local non-LV directory that holds file-based locks while commands are
# in progress. A directory like /tmp that may get wiped on reboot is OK.
locking_dir = "/var/lock/lvm"
# Other entries can go here to allow you to load shared libraries
# e.g. if support for LVM1 metadata was compiled as a shared library use
# format_libraries = "liblvm2format1.so"
# Full pathnames can be given.
# Search this directory first for shared libraries.
# library_dir = "/lib"
}
activation {
# Device used in place of missing stripes if activating incomplete volume.
# For now, you need to set this up yourself first (e.g. with 'dmsetup')
# For example, you could make it return I/O errors using the 'error'
# target or make it return zeros.
missing_stripe_filler = "/dev/ioerror"
# Size (in KB) of each copy operation when mirroring
mirror_region_size = 512
# How much stack (in KB) to reserve for use while devices suspended
reserved_stack = 256
# How much memory (in KB) to reserve for use while devices suspended
reserved_memory = 8192
# Nice value used while devices suspended
process_priority = -18
# If volume_list is defined, each LV is only activated if there is a
# match against the list.
# "vgname" and "vgname/lvname" are matched exactly.
# "@tag" matches any tag set in the LV or VG.
# "@*" matches if any tag defined on the host is also set in the LV or VG
#
# volume_list = [ "vg1", "vg2/lvol1", "@tag1", "@*" ]
}
####################
# Advanced section #
####################
# Metadata settings
#
# metadata {
# Default number of copies of metadata to hold on each PV. 0, 1 or 2.
# It's best to leave this at 2.
# You might want to override it from the command line with 0 or 1
# when running pvcreate on new PVs which are to be added to large VGs.
# pvmetadatacopies = 2
# Approximate default size of on-disk metadata areas in sectors.
# You should increase this if you have large volume groups or
# you want to retain a large on-disk history of your metadata changes.
# pvmetadatasize = 255
# List of directories holding live copies of text format metadata.
# These directories must not be on logical volumes!
# It's possible to use LVM2 with a couple of directories here,
# preferably on different (non-LV) filesystems, and with no other
# on-disk metadata (pvmetadatacopies = 0). Or this can be in
# addition to on-disk metadata areas.
# The feature was originally added to simplify testing and is not
# supported under low memory situations - the machine could lock up.
#
# Never edit any files in these directories by hand unless you
# you are absolutely sure you know what you are doing! Use
# the supplied toolset to make changes (e.g. vgcfgrestore).
# dirs = [ "/etc/lvm/metadata", "/mnt/disk2/lvm/metadata2" ]
#}
dmeventd {
# mirror_library is the library used when monitoring a mirror device.
#
# "libdevmapper-event-lvm2mirror.so" attempts to recover from
# failures. It removes failed devices from a volume group and
# reconfigures a mirror as necessary. If no mirror library is
# provided, mirrors are not monitored through dmeventd.
mirror_library = "libdevmapper-event-lvm2mirror.so.2.02"
# snapshot_library is the library used when monitoring a snapshot device.
#
# "libdevmapper-event-lvm2snapshot.so" monitors the filling of
# snapshots and emits a warning through syslog, when the use of
# snapshot exceedes 80%. The warning is repeated when 85%, 90% and
# 95% of the snapshot are filled.
snapshot_library = "libdevmapper-event-lvm2snapshot.so.2.02"
}
++++++ lvm-no_chown.diff ++++++
Index: daemons/clvmd/Makefile.in
===================================================================
--- daemons/clvmd/Makefile.in.orig 2009-04-27 16:51:29.000000000 +0800
+++ daemons/clvmd/Makefile.in 2009-04-27 16:51:32.000000000 +0800
@@ -107,7 +107,7 @@
.PHONY: install_clvmd
install_clvmd: $(TARGETS)
- $(INSTALL) -D $(OWNER) $(GROUP) -m 555 $(STRIP) clvmd \
+ $(INSTALL) -D -m 555 $(STRIP) clvmd \
$(usrsbindir)/clvmd
install: $(INSTALL_TARGETS)
Index: doc/Makefile.in
===================================================================
--- doc/Makefile.in.orig 2009-04-27 16:51:29.000000000 +0800
+++ doc/Makefile.in 2009-04-27 16:51:32.000000000 +0800
@@ -23,7 +23,7 @@
install:
@if [ ! -e $(confdir)/$(CONFDEST) ]; then \
echo "Installing $(CONFSRC) as $(confdir)/$(CONFDEST)"; \
- @INSTALL@ -D $(OWNER) $(GROUP) -m 644 $(CONFSRC) \
+ @INSTALL@ -D -m 644 $(CONFSRC) \
$(confdir)/$(CONFDEST); \
fi
Index: lib/format1/Makefile.in
===================================================================
--- lib/format1/Makefile.in.orig 2009-04-27 16:51:29.000000000 +0800
+++ lib/format1/Makefile.in 2009-04-27 16:51:32.000000000 +0800
@@ -31,7 +31,7 @@
include $(top_srcdir)/make.tmpl
install: liblvm2format1.so
- $(INSTALL) -D $(OWNER) $(GROUP) -m 555 $(STRIP) $< \
+ $(INSTALL) -D -m 555 $(STRIP) $< \
$(libdir)/liblvm2format1.so.$(LIB_VERSION)
$(LN_S) -f liblvm2format1.so.$(LIB_VERSION) $(libdir)/liblvm2format1.so
Index: lib/format_pool/Makefile.in
===================================================================
--- lib/format_pool/Makefile.in.orig 2009-04-27 16:51:29.000000000 +0800
+++ lib/format_pool/Makefile.in 2009-04-27 16:51:32.000000000 +0800
@@ -28,7 +28,7 @@
include $(top_srcdir)/make.tmpl
install: liblvm2formatpool.so
- $(INSTALL) -D $(OWNER) $(GROUP) -m 555 $(STRIP) $< \
+ $(INSTALL) -D -m 555 $(STRIP) $< \
$(libdir)/liblvm2formatpool.so.$(LIB_VERSION)
$(LN_S) -f liblvm2formatpool.so.$(LIB_VERSION) \
$(libdir)/liblvm2formatpool.so
Index: lib/locking/Makefile.in
===================================================================
--- lib/locking/Makefile.in.orig 2009-04-27 16:51:29.000000000 +0800
+++ lib/locking/Makefile.in 2009-04-27 16:51:32.000000000 +0800
@@ -24,7 +24,7 @@
include $(top_srcdir)/make.tmpl
install install_cluster: liblvm2clusterlock.so
- $(INSTALL) -D $(OWNER) $(GROUP) -m 555 $(STRIP) $< \
+ $(INSTALL) -D -m 555 $(STRIP) $< \
$(libdir)/liblvm2clusterlock.so.$(LIB_VERSION)
$(LN_S) -f liblvm2clusterlock.so.$(LIB_VERSION) \
$(libdir)/liblvm2clusterlock.so
Index: lib/mirror/Makefile.in
===================================================================
--- lib/mirror/Makefile.in.orig 2009-04-27 16:51:29.000000000 +0800
+++ lib/mirror/Makefile.in 2009-04-27 16:51:32.000000000 +0800
@@ -24,7 +24,7 @@
include $(top_srcdir)/make.tmpl
install: liblvm2mirror.so
- $(INSTALL) -D $(OWNER) $(GROUP) -m 555 $(STRIP) $< \
+ $(INSTALL) -D -m 555 $(STRIP) $< \
$(libdir)/liblvm2mirror.so.$(LIB_VERSION)
$(LN_S) -f liblvm2mirror.so.$(LIB_VERSION) $(libdir)/liblvm2mirror.so
Index: lib/snapshot/Makefile.in
===================================================================
--- lib/snapshot/Makefile.in.orig 2009-04-27 16:51:29.000000000 +0800
+++ lib/snapshot/Makefile.in 2009-04-27 16:51:32.000000000 +0800
@@ -24,7 +24,7 @@
include $(top_srcdir)/make.tmpl
install: liblvm2snapshot.so
- $(INSTALL) -D $(OWNER) $(GROUP) -m 555 $(STRIP) $< \
+ $(INSTALL) -D -m 555 $(STRIP) $< \
$(libdir)/liblvm2snapshot.so.$(LIB_VERSION)
$(LN_S) -f liblvm2snapshot.so.$(LIB_VERSION) \
$(libdir)/liblvm2snapshot.so
Index: man/Makefile.in
===================================================================
--- man/Makefile.in.orig 2009-04-27 16:51:29.000000000 +0800
+++ man/Makefile.in 2009-04-27 16:52:20.000000000 +0800
@@ -62,14 +62,14 @@
@for f in $(MAN8); \
do \
$(RM) $(MAN8DIR)/$$f; \
- @INSTALL@ -D $(OWNER) $(GROUP) -m 444 $$f $(MAN8DIR)/$$f; \
+ @INSTALL@ -D -m 444 $$f $(MAN8DIR)/$$f; \
done
@echo "Installing $(MAN5) in $(MAN5DIR)"
@for f in $(MAN5); \
do \
$(RM) $(MAN5DIR)/$$f; \
- @INSTALL@ -D $(OWNER) $(GROUP) -m 444 $$f $(MAN5DIR)/$$f; \
+ @INSTALL@ -D -m 444 $$f $(MAN5DIR)/$$f; \
done
install_cluster:
@@ -77,7 +77,7 @@
@for f in $(MAN8CLUSTER); \
do \
$(RM) $(MAN8DIR)/$$f; \
- @INSTALL@ -D $(OWNER) $(GROUP) -m 444 $$f $(MAN8DIR)/$$f; \
+ @INSTALL@ -D -m 444 $$f $(MAN8DIR)/$$f; \
done
install_device-mapper:
@@ -85,5 +85,5 @@
@for f in $(MAN8DM); \
do \
$(RM) $(MAN8DIR)/$$f; \
- @INSTALL@ -D $(OWNER) $(GROUP) -m 444 $$f $(MAN8DIR)/$$f; \
+ @INSTALL@ -D -m 444 $$f $(MAN8DIR)/$$f; \
done
Index: po/Makefile.in
===================================================================
--- po/Makefile.in.orig 2009-04-27 16:51:29.000000000 +0800
+++ po/Makefile.in 2009-04-27 16:51:32.000000000 +0800
@@ -53,13 +53,13 @@
@echo Installing translation files in $(localedir)
@( \
for lang in $(LANGS); do \
- $(INSTALL) -D $(OWNER) $(GROUP) -m 444 $$lang.mo \
+ $(INSTALL) -D -m 444 $$lang.mo \
$(localedir)/$$lang/LC_MESSAGES/lvm2.mo;\
done; \
)
@( \
for lang in $(LANGS); do \
- $(INSTALL) -D $(OWNER) $(GROUP) -m 444 $$lang.mo \
+ $(INSTALL) -D -m 444 $$lang.mo \
$(localedir)/$$lang/LC_MESSAGES/device-mapper.mo;\
done; \
)
Index: scripts/Makefile.in
===================================================================
--- scripts/Makefile.in.orig 2009-04-27 16:51:29.000000000 +0800
+++ scripts/Makefile.in 2009-04-27 16:51:32.000000000 +0800
@@ -18,9 +18,9 @@
include $(top_srcdir)/make.tmpl
install:
- $(INSTALL) -D $(OWNER) $(GROUP) -m 555 $(STRIP) lvm_dump.sh \
+ $(INSTALL) -D -m 555 $(STRIP) lvm_dump.sh \
$(sbindir)/lvmdump
ifeq ("@FSADM@", "yes")
- $(INSTALL) -D $(OWNER) $(GROUP) -m 555 $(STRIP) fsadm.sh \
+ $(INSTALL) -D -m 555 $(STRIP) fsadm.sh \
$(sbindir)/fsadm
endif
Index: tools/Makefile.in
===================================================================
--- tools/Makefile.in.orig 2009-04-27 16:51:29.000000000 +0800
+++ tools/Makefile.in 2009-04-27 16:51:32.000000000 +0800
@@ -156,21 +156,21 @@
endif
install_cmdlib_dynamic: liblvm2cmd.$(LIB_SUFFIX)
- $(INSTALL) -D $(OWNER) $(GROUP) -m 555 $(STRIP) liblvm2cmd.$(LIB_SUFFIX) \
+ $(INSTALL) -D -m 555 $(STRIP) liblvm2cmd.$(LIB_SUFFIX) \
$(libdir)/liblvm2cmd.$(LIB_SUFFIX).$(LIB_VERSION_LVM)
$(LN_S) -f liblvm2cmd.$(LIB_SUFFIX).$(LIB_VERSION_LVM) $(libdir)/liblvm2cmd.$(LIB_SUFFIX)
- $(INSTALL) -D $(OWNER) $(GROUP) -m 444 lvm2cmd.h \
+ $(INSTALL) -D -m 444 lvm2cmd.h \
$(includedir)/lvm2cmd.h
install_cmdlib_static: liblvm2cmd-static.a
- $(INSTALL) -D $(OWNER) $(GROUP) -m 555 $(STRIP) liblvm2cmd-static.a \
+ $(INSTALL) -D -m 555 $(STRIP) liblvm2cmd-static.a \
$(libdir)/liblvm2cmd.a.$(LIB_VERSION_LVM)
$(LN_S) -f liblvm2cmd.a.$(LIB_VERSION_LVM) $(libdir)/liblvm2cmd.a
- $(INSTALL) -D $(OWNER) $(GROUP) -m 444 lvm2cmd.h \
+ $(INSTALL) -D -m 444 lvm2cmd.h \
$(includedir)/lvm2cmd.h
install_tools_dynamic: lvm .commands
- $(INSTALL) -D $(OWNER) $(GROUP) -m 555 $(STRIP) lvm \
+ $(INSTALL) -D -m 555 $(STRIP) lvm \
$(sbindir)/lvm
@echo Creating symbolic links for individual commands in $(sbindir)
@( \
@@ -181,14 +181,14 @@
)
install_tools_static: lvm.static
- $(INSTALL) -D $(OWNER) $(GROUP) -m 555 $(STRIP) lvm.static \
+ $(INSTALL) -D -m 555 $(STRIP) lvm.static \
$(staticdir)/lvm.static
install_dmsetup_dynamic: dmsetup
- $(INSTALL) -D $(OWNER) $(GROUP) -m 555 $(STRIP) $< $(sbindir)/$<
+ $(INSTALL) -D -m 555 $(STRIP) $< $(sbindir)/$<
install_dmsetup_static: dmsetup.static
- $(INSTALL) -D $(OWNER) $(GROUP) -m 555 $(STRIP) $< $(sbindir)/$<
+ $(INSTALL) -D -m 555 $(STRIP) $< $(sbindir)/$<
install_device-mapper: $(INSTALL_DMSETUP_TARGETS)
Index: daemons/dmeventd/Makefile.in
===================================================================
--- daemons/dmeventd/Makefile.in.orig 2008-11-05 01:25:32.000000000 +0800
+++ daemons/dmeventd/Makefile.in 2009-04-27 16:57:01.000000000 +0800
@@ -64,24 +64,24 @@
install_device-mapper: install
install_include:
- $(INSTALL) -D $(OWNER) $(GROUP) -m 444 libdevmapper-event.h \
+ $(INSTALL) -D -m 444 libdevmapper-event.h \
$(includedir)/libdevmapper-event.h
install_dynamic: libdevmapper-event.$(LIB_SUFFIX)
- $(INSTALL) -D $(OWNER) $(GROUP) -m 555 $(STRIP) $< \
+ $(INSTALL) -D -m 555 $(STRIP) $< \
$(libdir)/libdevmapper-event.$(LIB_SUFFIX).$(LIB_VERSION)
$(LN_S) -f libdevmapper-event.$(LIB_SUFFIX).$(LIB_VERSION) \
$(libdir)/libdevmapper-event.$(LIB_SUFFIX)
install_dmeventd: dmeventd
- $(INSTALL) -D $(OWNER) $(GROUP) -m 555 $(STRIP) $< $(sbindir)/$<
+ $(INSTALL) -D -m 555 $(STRIP) $< $(sbindir)/$<
install_pkgconfig:
- $(INSTALL) -D $(OWNER) $(GROUP) -m 444 libdevmapper-event.pc \
+ $(INSTALL) -D -m 444 libdevmapper-event.pc \
$(usrlibdir)/pkgconfig/devmapper-event.pc
install_static: libdevmapper-event.a
- $(INSTALL) -D $(OWNER) $(GROUP) -m 555 $(STRIP) $< \
+ $(INSTALL) -D -m 555 $(STRIP) $< \
$(libdir)/libdevmapper-event.a.$(LIB_VERSION)
$(LN_S) -f libdevmapper-event.a.$(LIB_VERSION) $(libdir)/libdevmapper-event.a
Index: daemons/dmeventd/plugins/mirror/Makefile.in
===================================================================
--- daemons/dmeventd/plugins/mirror/Makefile.in.orig 2008-11-04 06:14:26.000000000 +0800
+++ daemons/dmeventd/plugins/mirror/Makefile.in 2009-04-27 16:55:45.000000000 +0800
@@ -32,6 +32,6 @@
include $(top_srcdir)/make.tmpl
install: libdevmapper-event-lvm2mirror.$(LIB_SUFFIX)
- $(INSTALL) -D $(OWNER) $(GROUP) -m 555 $(STRIP) $< \
+ $(INSTALL) -D -m 555 $(STRIP) $< \
$(libdir)/$<.$(LIB_VERSION)
$(LN_S) -f $<.$(LIB_VERSION) $(libdir)/$<
Index: daemons/dmeventd/plugins/snapshot/Makefile.in
===================================================================
--- daemons/dmeventd/plugins/snapshot/Makefile.in.orig 2008-11-04 06:14:27.000000000 +0800
+++ daemons/dmeventd/plugins/snapshot/Makefile.in 2009-04-27 16:56:00.000000000 +0800
@@ -32,6 +32,6 @@
include $(top_srcdir)/make.tmpl
install: libdevmapper-event-lvm2snapshot.$(LIB_SUFFIX)
- $(INSTALL) -D $(OWNER) $(GROUP) -m 555 $(STRIP) $< \
+ $(INSTALL) -D -m 555 $(STRIP) $< \
$(libdir)/$<.$(LIB_VERSION)
$(LN_S) -f $<.$(LIB_VERSION) $(libdir)/$<
Index: libdm/Makefile.in
===================================================================
--- libdm/Makefile.in.orig 2008-11-15 04:59:56.000000000 +0800
+++ libdm/Makefile.in 2009-04-27 16:57:28.000000000 +0800
@@ -70,7 +70,7 @@
install_device-mapper: install
install_include:
- $(INSTALL) -D $(OWNER) $(GROUP) -m 444 libdevmapper.h \
+ $(INSTALL) -D -m 444 libdevmapper.h \
$(includedir)/libdevmapper.h
install_dynamic: install_@interface@
@@ -81,15 +81,15 @@
$(LN_S) -f libdevmapper.a.$(LIB_VERSION_DM) $(libdir)/libdevmapper.a
install_ioctl: ioctl/libdevmapper.$(LIB_SUFFIX)
- $(INSTALL) -D $(OWNER) $(GROUP) -m 555 $(STRIP) $< \
+ $(INSTALL) -D -m 555 $(STRIP) $< \
$(libdir)/libdevmapper.$(LIB_SUFFIX).$(LIB_VERSION_DM)
install_pkgconfig:
- $(INSTALL) -D $(OWNER) $(GROUP) -m 444 libdevmapper.pc \
+ $(INSTALL) -D -m 444 libdevmapper.pc \
$(usrlibdir)/pkgconfig/devmapper.pc
install_ioctl_static: ioctl/libdevmapper.a
- $(INSTALL) -D $(OWNER) $(GROUP) -m 555 $(STRIP) $< \
+ $(INSTALL) -D -m 555 $(STRIP) $< \
$(libdir)/libdevmapper.a.$(LIB_VERSION_DM)
$(VERSIONED_SHLIB): %.$(LIB_SUFFIX).$(LIB_VERSION_DM): $(interface)/%.$(LIB_SUFFIX)
++++++ lvm-pv-create-link.diff ++++++
Index: LVM2.2.02.45/tools/pvremove.c
===================================================================
--- LVM2.2.02.45.orig/tools/pvremove.c 2009-04-27 16:35:32.000000000 +0800
+++ LVM2.2.02.45/tools/pvremove.c 2009-04-27 16:49:48.000000000 +0800
@@ -18,6 +18,30 @@
const char _really_wipe[] =
"Really WIPE LABELS from physical volume \"%s\" of volume group \"%s\" [y/n]? ";
+static const char* pv_remove_symlink(struct cmd_context* cmd, const char* name)
+{
+ struct physical_volume *pv;
+ char *pvuuid;
+ char pvuuid_link[70];
+
+ if (!(pv = pv_read(cmd, name, NULL, NULL, 0, 0))) {
+ return NULL;
+ }
+
+ pvuuid = malloc(sizeof(char)*40);
+ if (pvuuid == NULL) {
+ return NULL;
+ }
+
+ id_write_format(&pv->id, pvuuid, 40);
+
+ snprintf(pvuuid_link, 70, "/dev/disk/by-id/lvm2-pvuuid-%s", pvuuid);
+ unlink(pvuuid_link); //we really don't care if it successed or not.
+
+ free(pvuuid);
+ return pvuuid;
+}
+
/*
* Decide whether it is "safe" to wipe the labels on this device.
* 0 indicates we may not.
@@ -125,6 +149,8 @@
log_print("Labels on physical volume \"%s\" successfully wiped",
pv_name);
+ pv_remove_symlink(cmd, pv_name);
+
ret = ECMD_PROCESSED;
error:
Index: LVM2.2.02.45/tools/pvcreate.c
===================================================================
--- LVM2.2.02.45.orig/tools/pvcreate.c 2009-04-27 16:35:32.000000000 +0800
+++ LVM2.2.02.45/tools/pvcreate.c 2009-04-27 16:45:34.000000000 +0800
@@ -36,6 +36,89 @@
const char _really_init[] =
"Really INITIALIZE physical volume \"%s\" of volume group \"%s\" [y/n]? ";
+static const char* pv_follow_if_link (const char* path)
+{
+ int r;
+ int len = 60;
+ char *fpath = NULL;
+ char *npath = NULL;
+ struct stat st;
+
+ r = lstat(path, &st);
+ if (r == -1) return NULL; //shouldn't happen
+
+ if (S_ISLNK(st.st_mode)) {
+ while (1) {
+ npath = realloc(fpath, sizeof(char)*len);
+ if (npath == NULL) {
+ if (fpath != NULL) free(fpath);
+ return NULL;
+ }
+ fpath = npath;
+
+ memset(fpath, 0, sizeof(char)*len);
+ r = readlink(path, fpath, len);
+ if (r != -1 && fpath[len-1] == 0) break;
+ if (r == -1) {
+ free(fpath);
+ return NULL;
+ } else {
+ len = len * 2;
+ }
+ }
+ }
+ else {
+ fpath = strdup(path);
+ }
+ return fpath;
+}
+
+
+static const char* pv_symlink_handle(struct cmd_context* cmd, const char* name, int create)
+{
+ struct physical_volume *pv;
+ char *pvuuid;
+ char *pvuuid_link;
+
+ pvuuid_link = malloc(70);
+ if (pvuuid_link == NULL) return NULL;
+
+ if (!(pv = pv_read(cmd, name, NULL, NULL, 0, 0))) {
+ free(pvuuid_link);
+ return NULL;
+ }
+
+ pvuuid = malloc(sizeof(char)*40);
+ if (pvuuid == NULL) {
+ free(pvuuid_link);
+ return NULL;
+ }
+
+ id_write_format(&pv->id, pvuuid, 40);
+
+ snprintf(pvuuid_link, 70, "/dev/disk/by-id/lvm2-pvuuid-%s", pvuuid);
+
+ //we really don't care if it successed or not.
+ if (create) {
+ const char* tname = NULL;
+ int r;
+ tname = pv_follow_if_link(name);
+ if (tname != NULL) {
+ r = symlink(tname, pvuuid_link);
+ free(tname);
+ }
+ else {
+ symlink(name, pvuuid_link);
+ }
+ } else {
+ //pvuuid_link is saved for future unlink
+ //unlink(pvuuid_link);
+ }
+
+ free(pvuuid);
+ return pvuuid_link;
+}
+
/*
* See if we may pvcreate on this device.
* 0 indicates we may not.
@@ -150,6 +233,8 @@
void *pv;
struct device *dev;
struct dm_list mdas;
+ const char *oldsymlink;
+
if (pp->idp) {
if ((dev = device_from_pvid(cmd, pp->idp)) &&
@@ -213,12 +298,22 @@
log_very_verbose("Writing physical volume data to disk \"%s\"",
pv_name);
+
+ oldsymlink = pv_symlink_handle(cmd, pv_name, 0);
+
if (!(pv_write(cmd, (struct physical_volume *)pv, &mdas,
pp->labelsector))) {
log_error("Failed to write physical volume \"%s\"", pv_name);
+ if (oldsymlink) free(oldsymlink);
goto error;
}
+ pv_symlink_handle(cmd, pv_name, 1);
+ if (oldsymlink) {
+ unlink(oldsymlink);
+ free(oldsymlink);
+ }
+
log_print("Physical volume \"%s\" successfully created", pv_name);
unlock_vg(cmd, VG_ORPHANS);
Index: LVM2.2.02.45/tools/pvchange.c
===================================================================
--- LVM2.2.02.45.orig/tools/pvchange.c 2009-04-27 16:35:32.000000000 +0800
+++ LVM2.2.02.45/tools/pvchange.c 2009-04-27 16:45:18.000000000 +0800
@@ -15,6 +15,90 @@
#include "tools.h"
+static const char* pv_follow_if_link (const char* path)
+{
+ int r;
+ int len = 60;
+ char *fpath = NULL;
+ char *npath = NULL;
+ struct stat st;
+
+ r = lstat(path, &st);
+ if (r == -1) return NULL; //shouldn't happen
+
+ if (S_ISLNK(st.st_mode)) {
+ while (1) {
+ npath = realloc(fpath, sizeof(char)*len);
+ if (npath == NULL) {
+ if (fpath != NULL) free(fpath);
+ return NULL;
+ }
+ fpath = npath;
+
+ memset(fpath, 0, sizeof(char)*len);
+ r = readlink(path, fpath, len);
+ if (r != -1 && fpath[len-1] == 0) break;
+ if (r == -1) {
+ free(fpath);
+ return NULL;
+ } else {
+ len = len * 2;
+ }
+ }
+ }
+ else {
+ fpath = strdup(path);
+ }
+ return fpath;
+}
+
+static const char* pv_symlink_handle(struct cmd_context* cmd, const char* name, int create)
+{
+ struct physical_volume *pv;
+ char *pvuuid;
+ char *pvuuid_link;
+
+ pvuuid_link = malloc(70);
+ if (pvuuid_link == NULL) return NULL;
+
+
+ if (!(pv = pv_read(cmd, name, NULL, NULL, 0, 0))) {
+ free(pvuuid_link);
+ return NULL;
+ }
+
+ pvuuid = malloc(sizeof(char)*40);
+ if (pvuuid == NULL) {
+ free(pvuuid_link);
+ return NULL;
+ }
+
+ id_write_format(&pv->id, pvuuid, 40);
+
+ snprintf(pvuuid_link, 70, "/dev/disk/by-id/lvm2-pvuuid-%s", pvuuid);
+
+ //we really don't care if it successed or not.
+ if (create) {
+ const char* tname = NULL;
+ int r;
+ tname = pv_follow_if_link(name);
+ if (tname != NULL) {
+ r = symlink(tname, pvuuid_link);
+ free(tname);
+ }
+ else {
+ symlink(name, pvuuid_link);
+ }
+ } else {
+ //pvuuid_link is saved for future unlink
+ //unlink(pvuuid_link);
+ }
+
+ free(pvuuid);
+ return pvuuid_link;
+}
+
+
/* FIXME Locking. PVs in VG. */
static int _pvchange_single(struct cmd_context *cmd, struct physical_volume *pv,
@@ -202,11 +286,23 @@
return 0;
}
backup(vg);
- } else if (!(pv_write(cmd, pv, NULL, INT64_C(-1)))) {
- unlock_vg(cmd, vg_name);
- log_error("Failed to store physical volume \"%s\"",
- pv_name);
- return 0;
+ } else {
+ const char* oldsymlink;
+ oldsymlink = pv_symlink_handle(cmd, pv_name, 0);
+
+ if (!(pv_write(cmd, pv, NULL, INT64_C(-1)))) {
+ unlock_vg(cmd, vg_name);
+ log_error("Failed to store physical volume \"%s\"",
+ pv_name);
+ if (oldsymlink) free(oldsymlink);
+ return 0;
+ }
+ pv_symlink_handle(cmd, pv_name, 1);
+ if (oldsymlink) {
+ unlink(oldsymlink);
+ free(oldsymlink);
+ }
+
}
unlock_vg(cmd, vg_name);
++++++ man_page_sectors.diff ++++++
Index: man/pvdisplay.8.in
===================================================================
--- man/pvdisplay.8.in.orig 2009-04-27 16:17:35.000000000 +0800
+++ man/pvdisplay.8.in 2009-04-27 16:17:50.000000000 +0800
@@ -25,7 +25,7 @@
* physical volume device name
* volume group name
-* physical volume size in kilobytes
+* physical volume size in sectors
* internal physical volume number (obsolete)
* physical volume status
* physical volume (not) allocatable
++++++ mkinitrd-boot.sh ++++++
#!/bin/bash
#%stage: boot
#%depends: start
#%modules: $dm_modules dm-mod dm-snapshot
#%programs: /sbin/dmsetup /sbin/blockdev
# dm-crypt dm-zero dm-mirror
#%if: -n "$root_dm"
#
##### Device Mapper
##
## If the root device uses device mapper, this initializes and waits for the control file
##
## Command line parameters
## -----------------------
##
## root_dm=1 use device mapper
##
load_modules
# because we run before udev we need to create the device node manually
mkdir /dev/mapper
mknod /dev/mapper/control c 10 63
++++++ mkinitrd-setup.sh ++++++
#!/bin/bash
#
#%stage: devicemapper
#%depends: dmroot
#
# no dmsetup -> no dm
if [ -x /sbin/dmsetup ]; then
dm_blockdev=
# if any device before was on dm we have to activate it
[ "$tmp_root_dm" ] && root_dm=1
blockdev="$(dm_resolvedeps_recursive $blockdev)"
[ "$?" = 0 ] && root_dm=1
# include dm when using dm based block devs
[ "$DM_BLOCK" ] && root_dm=1
# include modules
if [ -n "$root_dm" ] ; then
# Add all dm modules
dm_modules=
for table in $(dmsetup table | cut -f 4 -d ' ' | sort | uniq); do
if [ "$table" ] && [ "$table" != "linear" ] && [ "$table" != "striped" ] ; then
dm_modules="$dm_modules dm-$table"
fi
done
fi
# include dm block var from sysconfig
mkdir -p etc/sysconfig
grep DM_BLOCK /etc/sysconfig/kernel > etc/sysconfig/kernel
save_var root_dm
fi
++++++ no_buildroot_shared.diff ++++++
Index: tools/Makefile.in
===================================================================
--- tools/Makefile.in.orig 2009-04-27 16:15:35.000000000 +0800
+++ tools/Makefile.in 2009-04-27 16:15:46.000000000 +0800
@@ -95,7 +95,7 @@
LVMLIBS += -ldevmapper
-DEFS += -DLVM_SHARED_PATH=\"$(exec_prefix)/sbin/lvm\"
+DEFS += -DLVM_SHARED_PATH=\"/sbin/lvm\"
include $(top_srcdir)/make.tmpl
++++++ no-inc-audit.diff ++++++
Index: lib/device/dev-io.c
===================================================================
--- lib/device/dev-io.c.orig 2009-04-27 16:15:36.000000000 +0800
+++ lib/device/dev-io.c 2009-04-27 16:15:42.000000000 +0800
@@ -31,6 +31,7 @@
# define u64 uint64_t /* Missing without __KERNEL__ */
# undef WNOHANG /* Avoid redefinition */
# undef WUNTRACED /* Avoid redefinition */
+# define _LINUX_AUDIT_H_ /* Avoid inclusion */
# include <linux/fs.h> /* For block ioctl definitions */
# define BLKSIZE_SHIFT SECTOR_SHIFT
# ifndef BLKGETSIZE64 /* fs.h out-of-date */
Index: lib/filters/filter.c
===================================================================
--- lib/filters/filter.c.orig 2009-04-27 16:15:39.000000000 +0800
+++ lib/filters/filter.c 2009-04-27 16:15:42.000000000 +0800
@@ -14,6 +14,7 @@
*/
#include <sys/ioctl.h>
+#define _LINUX_AUDIT_H_
#include <linux/fs.h>
#undef MAJOR
#undef MINOR
++++++ pipe_buff-definition.diff ++++++
--- daemons/clvmd/clvmd.c
+++ daemons/clvmd/clvmd.c
@@ -59,6 +59,8 @@
#define ISLOCAL_CSID(c) (memcmp(c, our_csid, max_csid_len) == 0)
+#include <linux/limits.h>
+
/* Head of the fd list. Also contains
the cluster_socket details */
static struct local_client local_client_head;
++++++ pvscan_2TB_limit.diff ++++++
Index: tools/pvscan.c
===================================================================
--- tools/pvscan.c.orig 2008-11-04 06:14:30.000000000 +0800
+++ tools/pvscan.c 2009-04-27 16:15:52.000000000 +0800
@@ -166,7 +166,7 @@
size_new += pv_size(pv);
size_total += pv_size(pv);
} else
- size_total += pv_pe_count(pv) * pv_pe_size(pv);
+ size_total += (uint64_t)pv_pe_count(pv) * pv_pe_size(pv);
}
/* find maximum pv name length */
++++++ sigterm_in_main_thread.diff ++++++
Index: LVM2.2.02.39/daemons/clvmd/clvmd.c
===================================================================
--- LVM2.2.02.39.orig/daemons/clvmd/clvmd.c 2009-03-24 19:29:14.000000000 +0800
+++ LVM2.2.02.39/daemons/clvmd/clvmd.c 2009-03-24 19:34:01.000000000 +0800
@@ -348,9 +348,11 @@
signal(SIGHUP, sighup_handler);
signal(SIGPIPE, SIG_IGN);
- /* Block SIGUSR2 in the main process */
+ /* Block SIGUSR2/SIGINT/SIGTERM in process */
sigemptyset(&ss);
sigaddset(&ss, SIGUSR2);
+ sigaddset(&ss, SIGINT);
+ sigaddset(&ss, SIGTERM);
sigprocmask(SIG_BLOCK, &ss, NULL);
/* Initialise the LVM thread variables */
@@ -633,6 +635,11 @@
{
DEBUGLOG("Using timeout of %d seconds\n", cmd_timeout);
+ sigset_t ss;
+ sigemptyset(&ss);
+ sigaddset(&ss, SIGINT);
+ sigaddset(&ss, SIGTERM);
+ pthread_sigmask(SIG_UNBLOCK, &ss, NULL);
/* Main loop */
while (!quit) {
fd_set in;
@@ -771,6 +778,8 @@
}
closedown:
+
+ pthread_sigmask(SIG_BLOCK, &ss, NULL);
clops->cluster_closedown();
close(local_sock);
}
++++++ support-drbd-filter.diff ++++++
This is still very primitive support of drbd in lvm2.
Can we use some /sys information for this ?
Index: LVM2.2.02.39/lib/cache/lvmcache.c
===================================================================
--- LVM2.2.02.39.orig/lib/cache/lvmcache.c 2008-06-27 23:18:31.000000000 +0800
+++ LVM2.2.02.39/lib/cache/lvmcache.c 2009-03-31 12:08:29.000000000 +0800
@@ -1119,6 +1119,13 @@
pvid, dev_name(dev),
dev_name(existing->dev));
return NULL;
+ } else if (MAJOR(existing->dev->dev) == drbd_major() &&
+ MAJOR(dev->dev) != drbd_major()) {
+ log_very_verbose("Ignoring duplicate PV %s on "
+ "%s - using drbd %s",
+ pvid, dev_name(dev),
+ dev_name(existing->dev));
+ return NULL;
} else if (MAJOR(existing->dev->dev) != md_major() &&
MAJOR(dev->dev) == md_major())
log_very_verbose("Duplicate PV %s on %s - "
@@ -1131,6 +1138,12 @@
"using dm %s", pvid,
dev_name(existing->dev),
dev_name(dev));
+ else if (MAJOR(existing->dev->dev) != drbd_major() &&
+ MAJOR(dev->dev) == drbd_major())
+ log_very_verbose("Duplicate PV %s on %s - "
+ "using drbd %s", pvid,
+ dev_name(existing->dev),
+ dev_name(dev));
/* FIXME If both dm, check dependencies */
//else if (dm_is_dm_major(MAJOR(existing->dev->dev)) &&
//dm_is_dm_major(MAJOR(dev->dev)))
Index: LVM2.2.02.39/lib/filters/filter.c
===================================================================
--- LVM2.2.02.39.orig/lib/filters/filter.c 2009-03-31 11:48:52.000000000 +0800
+++ LVM2.2.02.39/lib/filters/filter.c 2009-03-31 11:57:38.000000000 +0800
@@ -46,12 +46,20 @@
static int _md_major = -1;
static int _device_mapper_major = -1;
+static int _drbd_major = -1;
int md_major(void)
{
return _md_major;
}
+/* FIXME: Should we consider filter out non-primary
+ drbd resource ?? */
+int drbd_major(void)
+{
+ return _drbd_major;
+}
+
/*
* Devices are only checked for partition tables if their minor number
* is a multiple of the number corresponding to their type below
@@ -208,6 +216,9 @@
if (!strncmp("md", line + i, 2) && isspace(*(line + i + 2)))
_md_major = line_maj;
+ if (!strncmp("drbd", line + i, 4) && isspace(*(line + i + 4)))
+ _drbd_major = line_maj;
+
/* Look for device-mapper device */
/* FIXME Cope with multiple majors */
if (!strncmp("device-mapper", line + i, 13) && isspace(*(line + i + 13)))
++++++ sysconfig.lvm ++++++
## Path: System/File systems/LVM
## Description: LVM configuration
## Type: string
## Default: ""
#
# This variable allows to only activate the LVM volume groups listed at
# bootup. If it is empty, all LVM volume groups are activated at bootup.
# This variable needs setting only under very special circumstances.
# For almost all standard LVM installations it can safely stay empty.
#
LVM_VGS_ACTIVATED_ON_BOOT=""
++++++ sys_mount_instead_linux_fs.diff ++++++
Index: lib/device/dev-io.c
===================================================================
--- lib/device/dev-io.c.orig 2009-04-27 16:15:42.000000000 +0800
+++ lib/device/dev-io.c 2009-04-27 16:15:49.000000000 +0800
@@ -32,7 +32,7 @@
# undef WNOHANG /* Avoid redefinition */
# undef WUNTRACED /* Avoid redefinition */
# define _LINUX_AUDIT_H_ /* Avoid inclusion */
-# include <linux/fs.h> /* For block ioctl definitions */
+# include <sys/mount.h> /* For block ioctl definitions */
# define BLKSIZE_SHIFT SECTOR_SHIFT
# ifndef BLKGETSIZE64 /* fs.h out-of-date */
# define BLKGETSIZE64 _IOR(0x12, 114, size_t)
Index: lib/filters/filter.c
===================================================================
--- lib/filters/filter.c.orig 2009-04-27 16:15:42.000000000 +0800
+++ lib/filters/filter.c 2009-04-27 16:15:49.000000000 +0800
@@ -15,7 +15,7 @@
#include <sys/ioctl.h>
#define _LINUX_AUDIT_H_
-#include <linux/fs.h>
+#include <sys/mount.h>
#undef MAJOR
#undef MINOR
#undef MKDEV
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package pam-config for openSUSE:Factory
checked in at Fri May 15 21:51:05 CEST 2009.
--------
--- pam-config/pam-config.changes 2009-04-30 13:11:21.000000000 +0200
+++ pam-config/pam-config.changes 2009-05-08 13:20:47.000000000 +0200
@@ -1,0 +2,6 @@
+Fri May 8 13:18:47 CEST 2009 - mc(a)suse.de
+
+- Version 0.71
+ * re-add lost query option [bnc#501341]
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
Old:
----
pam-config-0.70.tar.bz2
New:
----
pam-config-0.71.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ pam-config.spec ++++++
--- /var/tmp/diff_new_pack.alv580/_old 2009-05-15 21:50:47.000000000 +0200
+++ /var/tmp/diff_new_pack.alv580/_new 2009-05-15 21:50:47.000000000 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package pam-config (Version 0.70)
+# spec file for package pam-config (Version 0.71)
#
# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
@@ -20,7 +20,7 @@
Name: pam-config
Summary: Modify common PAM configuration files
-Version: 0.70
+Version: 0.71
Release: 1
License: GPL v2 only
AutoReqProv: on
@@ -95,6 +95,9 @@
%ghost %config %{_sysconfdir}/pam.d/common-session-pc
%changelog
+* Fri May 08 2009 mc(a)suse.de
+- Version 0.71
+ * re-add lost query option [bnc#501341]
* Thu Apr 30 2009 kukuk(a)suse.de
- Version 0.70
* Fix try_first_pass handling for pam_ssh [bnc#499711]
++++++ pam-config-0.70.tar.bz2 -> pam-config-0.71.tar.bz2 ++++++
++++ 6053 lines of diff (skipped)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package docbook-xsl-stylesheets for openSUSE:Factory
checked in at Fri May 15 21:49:25 CEST 2009.
--------
--- docbook-xsl-stylesheets/docbook-xsl-stylesheets.changes 2009-03-11 15:08:20.000000000 +0100
+++ docbook-xsl-stylesheets/docbook-xsl-stylesheets.changes 2009-05-08 11:14:20.000000000 +0200
@@ -1,0 +2,6 @@
+Fri May 8 11:10:21 CEST 2009 - ke(a)suse.de
+
+- Update to version 1.75.0; for news, see
+http://sourceforge.net/forum/forum.php?forum_id=951185.
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
Old:
----
docbook-xsl-1.74.3.tar.bz2
docbook-xsl-doc-1.74.3.tar.bz2
New:
----
docbook-xsl-1.75.0.tar.bz2
docbook-xsl-doc-1.75.0.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ docbook-xsl-stylesheets.spec ++++++
--- /var/tmp/diff_new_pack.W29339/_old 2009-05-15 21:48:44.000000000 +0200
+++ /var/tmp/diff_new_pack.W29339/_new 2009-05-15 21:48:44.000000000 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package docbook-xsl-stylesheets (Version 1.74.3)
+# spec file for package docbook-xsl-stylesheets (Version 1.75.0)
#
# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
@@ -27,8 +27,8 @@
Requires: xmlcharent docbook_4
%define regcat /usr/bin/sgml-register-catalog
PreReq: sgml-skel %{regcat} /usr/bin/xmlcatalog
-Summary: XSL Stylesheets for the DocBook 4 and earlier
-Version: 1.74.3
+Summary: XSL Stylesheets for DocBook 4
+Version: 1.75.0
Release: 1
Source0: http://switch.dl.sourceforge.net/sourceforge/docbook/docbook-xsl-%{version}…
Source1: http://switch.dl.sourceforge.net/sourceforge/docbook/docbook-xsl-doc-%{vers…
@@ -39,14 +39,15 @@
%description
These are the XSL stylesheets for DocBook XML and "Simplified" DocBook
-DTDs. Generally, stylesheets do not know any namespace and you should
-use these for DocBook 4 and earlier only.
+DTDs. Use these stylesheets for documents based on DocBook 4 and
+earlier; they are not aware of the namespace feature.
-The stylesheets transforms your DocBook document into (X)HTML,
-Manpages, XSL-FO (for PDF) and a few other formats.
+The stylesheets transform DocBook documents into HTML, XHTML, Manpages,
+XSL-FO (for PDF), and a few other formats.
XSL is a standard W3C stylesheet language for both print and online
-rendering. For more information about XSL, see the XSL page at the W3C.
+rendering. For more information about XSL, see the XSL page at the W3C:
+http://www.w3.org/Style/XSL/
@@ -224,6 +225,9 @@
# %{xml_mod_style_prod_dir}/current
%changelog
+* Fri May 08 2009 ke(a)suse.de
+- Update to version 1.75.0; for news, see
+ http://sourceforge.net/forum/forum.php?forum_id=951185.
* Wed Mar 11 2009 ke(a)suse.de
- Update to version 1.74.3; for news, see
http://sourceforge.net/forum/forum.php?forum_id=920190.
@@ -412,7 +416,7 @@
Andreas Schwab [# 176111].
* Wed Jan 25 2006 mls(a)suse.de
- converted neededforbuild to BuildRequires
-* Fri Jan 20 2006 kukuk(a)suse.de
+* Sat Jan 21 2006 kukuk(a)suse.de
- Update to version 1.69.1 (fix generation of manual pages from
xml sources).
* Mon Jul 18 2005 ke(a)suse.de
++++++ docbook-xsl-1.74.3.tar.bz2 -> docbook-xsl-1.75.0.tar.bz2 ++++++
++++ 79885 lines of diff (skipped)
++++++ docbook-xsl-doc-1.74.3.tar.bz2 -> docbook-xsl-doc-1.75.0.tar.bz2 ++++++
++++ 30624 lines of diff (skipped)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package Mesa for openSUSE:Factory
checked in at Fri May 15 21:47:23 CEST 2009.
--------
--- Mesa/Mesa.changes 2009-04-22 15:01:14.000000000 +0200
+++ Mesa/Mesa.changes 2009-05-15 18:39:05.000000000 +0200
@@ -1,0 +2,12 @@
+Fri May 15 18:25:09 CEST 2009 - sndirsch(a)suse.de
+
+- Mesa 7.4.2
+ * Fixed segfault when rendering to front buffer with DRI 1.
+ * Fixed swrast texture rectangle bug when wrap mode =
+ GL_CLAMP_TO_BORDER and filter mode = GL_LINEAR. (bug 21461)
+ * Fixed texture object mem leak during context destruction.
+ * Fixed a state validation bug in glCopyTex[Sub]Image()
+ * Fixed some i965 GLSL bugs.
+ * Fixed an R300 driver texture object bad memory reference.
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
Old:
----
MesaDemos-7.4.1.tar.bz2
MesaLib-7.4.1.tar.bz2
New:
----
MesaDemos-7.4.2.tar.bz2
MesaLib-7.4.2.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ Mesa.spec ++++++
--- /var/tmp/diff_new_pack.d25951/_old 2009-05-15 21:47:00.000000000 +0200
+++ /var/tmp/diff_new_pack.d25951/_new 2009-05-15 21:47:00.000000000 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package Mesa (Version 7.4.1)
+# spec file for package Mesa (Version 7.4.2)
#
# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
@@ -32,7 +32,7 @@
Obsoletes: Mesa-64bit
%endif
#
-Version: 7.4.1
+Version: 7.4.2
Release: 1
Summary: Mesa is a 3-D graphics library with an API which is very similar to that of OpenGL
Source: MesaLib-%{version}.tar.bz2
@@ -211,6 +211,15 @@
%{_mandir}/man3/*
%changelog
+* Fri May 15 2009 sndirsch(a)suse.de
+- Mesa 7.4.2
+ * Fixed segfault when rendering to front buffer with DRI 1.
+ * Fixed swrast texture rectangle bug when wrap mode =
+ GL_CLAMP_TO_BORDER and filter mode = GL_LINEAR. (bug 21461)
+ * Fixed texture object mem leak during context destruction.
+ * Fixed a state validation bug in glCopyTex[Sub]Image()
+ * Fixed some i965 GLSL bugs.
+ * Fixed an R300 driver texture object bad memory reference.
* Wed Apr 22 2009 sndirsch(a)suse.de
- no longer package static libGL/libGLU; can't work any longer
due to static X libraries having been removed
++++++ MesaDemos-7.4.1.tar.bz2 -> MesaDemos-7.4.2.tar.bz2 ++++++
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/Mesa-7.4.1/progs/xdemos/glxcontexts.c new/Mesa-7.4.2/progs/xdemos/glxcontexts.c
--- old/Mesa-7.4.1/progs/xdemos/glxcontexts.c 2008-08-25 16:46:42.000000000 +0200
+++ new/Mesa-7.4.2/progs/xdemos/glxcontexts.c 2009-04-27 15:09:33.000000000 +0200
@@ -385,6 +385,10 @@
} else
do_draw();
+ glDeleteLists(gear1, 1);
+ glDeleteLists(gear2, 1);
+ glDeleteLists(gear3, 1);
+
glXSwapBuffers(dpy, win);
glXDestroyContext(dpy, ctx);
}
++++++ MesaLib-7.4.1.tar.bz2 -> MesaLib-7.4.2.tar.bz2 ++++++
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/Mesa-7.4.1/configs/default new/Mesa-7.4.2/configs/default
--- old/Mesa-7.4.1/configs/default 2009-04-18 18:47:53.000000000 +0200
+++ new/Mesa-7.4.2/configs/default 2009-05-14 21:19:17.000000000 +0200
@@ -10,7 +10,7 @@
# Version info
MESA_MAJOR=7
MESA_MINOR=4
-MESA_TINY=1
+MESA_TINY=2
MESA_VERSION = $(MESA_MAJOR).$(MESA_MINOR).$(MESA_TINY)
# external projects. This should be useless now that we use libdrm.
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/Mesa-7.4.1/configs/default~ new/Mesa-7.4.2/configs/default~
--- old/Mesa-7.4.1/configs/default~ 2009-03-13 04:28:49.000000000 +0100
+++ new/Mesa-7.4.2/configs/default~ 2009-04-18 18:47:53.000000000 +0200
@@ -9,8 +9,8 @@
# Version info
MESA_MAJOR=7
-MESA_MINOR=3
-MESA_TINY=0
+MESA_MINOR=4
+MESA_TINY=1
MESA_VERSION = $(MESA_MAJOR).$(MESA_MINOR).$(MESA_TINY)
# external projects. This should be useless now that we use libdrm.
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/Mesa-7.4.1/docs/download.html new/Mesa-7.4.2/docs/download.html
--- old/Mesa-7.4.1/docs/download.html 2009-04-18 18:46:55.000000000 +0200
+++ new/Mesa-7.4.2/docs/download.html 2009-05-15 14:21:35.000000000 +0200
@@ -9,7 +9,7 @@
<H1>Downloading</H1>
<p>
-Current stable release: <b>7.4.1</b>
+Current stable release: <b>7.4.2</b>
<br>
Last unstable/development release: <b>7.3</b>
</p>
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/Mesa-7.4.1/docs/news.html new/Mesa-7.4.2/docs/news.html
--- old/Mesa-7.4.1/docs/news.html 2009-04-18 18:46:48.000000000 +0200
+++ new/Mesa-7.4.2/docs/news.html 2009-05-15 14:21:05.000000000 +0200
@@ -11,6 +11,13 @@
<H1>News</H1>
+<h2>May 15, 2009</h2>
+<p>
+<a href="relnotes-7.4.2.html">Mesa 7.4.2</a> is released.
+This is a stable release fixing bugs since the 7.4.1 release.
+</p>
+
+
<h2>April 18, 2009</h2>
<p>
<a href="relnotes-7.4.1.html">Mesa 7.4.1</a> is released.
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/Mesa-7.4.1/docs/relnotes-7.4.1.html new/Mesa-7.4.2/docs/relnotes-7.4.1.html
--- old/Mesa-7.4.1/docs/relnotes-7.4.1.html 2009-04-18 18:46:20.000000000 +0200
+++ new/Mesa-7.4.2/docs/relnotes-7.4.1.html 2009-05-01 01:08:37.000000000 +0200
@@ -20,21 +20,24 @@
</p>
<p>
See the <a href="install.html">Compiling/Installing page</a> for prerequisites
-for DRI ardware acceleration.
+for DRI hardware acceleration.
</p>
<h2>MD5 checksums</h2>
<pre>
-tbd
+0c3a72f3295a53a134c04bd7d209ea62 MesaLib-7.4.1.tar.gz
+423260578b653818ba66c2fcbde6d7ad MesaLib-7.4.1.tar.bz2
+84f78b154d4bd5c3ecc42eeff2e56676 MesaLib-7.4.1.zip
+aa0ad323e59d6d10ff33ac0dde462a60 MesaDemos-7.4.1.tar.gz
+1e169fb6abc2b45613f1c98a82dfe690 MesaDemos-7.4.1.tar.bz2
+294e42be2d74176596c994ec23322fcf MesaDemos-7.4.1.zip
+92373bfa48e7b68dddf356e86b0e5699 MesaGLUT-7.4.1.tar.gz
+336f3824b578b072211e0beecf4f04f4 MesaGLUT-7.4.1.tar.bz2
+20751388d8ef16b42d25d9e3d705d101 MesaGLUT-7.4.1.zip
</pre>
-<h2>New features</h2>
-<ul>
-</ul>
-
-
<h2>Bug fixes</h2>
<ul>
<li>Fixed a two-sided lighting bug in fixed-function-to-GPU code generation
@@ -51,10 +54,6 @@
<li>Fixed glPopAttrib() bug when restoring user clip planes
</ul>
-<h2>Changes</h2>
-<ul>
-</ul>
-
<h2>Driver Status</h2>
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/Mesa-7.4.1/docs/relnotes-7.4.2.html new/Mesa-7.4.2/docs/relnotes-7.4.2.html
--- old/Mesa-7.4.1/docs/relnotes-7.4.2.html 1970-01-01 01:00:00.000000000 +0100
+++ new/Mesa-7.4.2/docs/relnotes-7.4.2.html 2009-05-15 14:21:24.000000000 +0200
@@ -0,0 +1,66 @@
+<HTML>
+
+<TITLE>Mesa Release Notes</TITLE>
+
+<head><link rel="stylesheet" type="text/css" href="mesa.css"></head>
+
+<BODY>
+
+<body bgcolor="#eeeeee">
+
+<H1>Mesa 7.4.2 Release Notes / May 15, 2009</H1>
+
+<p>
+Mesa 7.4.2 is a stable development release fixing bugs since the 7.4.1 release.
+</p>
+<p>
+Mesa 7.4.2 implements the OpenGL 2.1 API, but the version reported by
+glGetString(GL_VERSION) depends on the particular driver being used.
+Some drivers don't support all the features required in OpenGL 2.1.
+</p>
+<p>
+See the <a href="install.html">Compiling/Installing page</a> for prerequisites
+for DRI hardware acceleration.
+</p>
+
+
+<h2>MD5 checksums</h2>
+<pre>
+tbd
+</pre>
+
+
+<h2>Bug fixes</h2>
+<ul>
+<li>Fixed segfault when rendering to front buffer with DRI 1.
+<li>Fixed swrast texture rectangle bug when wrap mode = GL_CLAMP_TO_BORDER and
+ filter mode = GL_LINEAR. (bug 21461)
+<li>Fixed texture object mem leak during context destruction.
+<li>Fixed a state validation bug in glCopyTex[Sub]Image()
+<li>Fixed some i965 GLSL bugs.
+<li>Fixed an R300 driver texture object bad memory reference.
+</ul>
+
+
+
+<h2>Driver Status</h2>
+
+<pre>
+Driver Status
+---------------------- ----------------------
+DRI drivers varies with the driver
+XMesa/GLX (on Xlib) implements OpenGL 2.1
+OSMesa (off-screen) implements OpenGL 2.1
+Windows/Win32 implements OpenGL 2.1
+Glide (3dfx Voodoo1/2) implements OpenGL 1.3
+SVGA unsupported
+Wind River UGL unsupported
+DJGPP unsupported
+GGI unsupported
+BeOS unsupported
+Allegro unsupported
+D3D unsupported
+</pre>
+
+</body>
+</html>
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/Mesa-7.4.1/docs/relnotes-7.4.html new/Mesa-7.4.2/docs/relnotes-7.4.html
--- old/Mesa-7.4.1/docs/relnotes-7.4.html 2009-03-28 02:00:20.000000000 +0100
+++ new/Mesa-7.4.2/docs/relnotes-7.4.html 2009-05-01 01:08:37.000000000 +0200
@@ -20,7 +20,7 @@
</p>
<p>
See the <a href="install.html">Compiling/Installing page</a> for prerequisites
-for DRI ardware acceleration.
+for DRI hardware acceleration.
</p>
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/Mesa-7.4.1/docs/relnotes.html new/Mesa-7.4.2/docs/relnotes.html
--- old/Mesa-7.4.1/docs/relnotes.html 2009-04-01 00:26:24.000000000 +0200
+++ new/Mesa-7.4.2/docs/relnotes.html 2009-04-18 19:12:09.000000000 +0200
@@ -20,6 +20,7 @@
</p>
<UL>
+<LI><A HREF="relnotes-7.4.2.html">7.4.2 release notes</A>
<LI><A HREF="relnotes-7.4.1.html">7.4.1 release notes</A>
<LI><A HREF="relnotes-7.4.html">7.4 release notes</A>
<LI><A HREF="relnotes-7.3.html">7.3 release notes</A>
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/Mesa-7.4.1/Makefile new/Mesa-7.4.2/Makefile
--- old/Mesa-7.4.1/Makefile 2009-04-18 18:49:25.000000000 +0200
+++ new/Mesa-7.4.2/Makefile 2009-05-14 21:19:11.000000000 +0200
@@ -178,7 +178,7 @@
# Rules for making release tarballs
-VERSION=7.4.1
+VERSION=7.4.2
DIRECTORY = Mesa-$(VERSION)
LIB_NAME = MesaLib-$(VERSION)
DEMO_NAME = MesaDemos-$(VERSION)
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/Mesa-7.4.1/Makefile~ new/Mesa-7.4.2/Makefile~
--- old/Mesa-7.4.1/Makefile~ 1970-01-01 01:00:00.000000000 +0100
+++ new/Mesa-7.4.2/Makefile~ 2009-04-18 18:49:25.000000000 +0200
@@ -0,0 +1,537 @@
+# Top-level Mesa makefile
+
+TOP = .
+
+SUBDIRS = src progs
+
+
+default: $(TOP)/configs/current
+ @for dir in $(SUBDIRS) ; do \
+ if [ -d $$dir ] ; then \
+ (cd $$dir && $(MAKE)) || exit 1 ; \
+ fi \
+ done
+
+
+doxygen:
+ cd doxygen && $(MAKE)
+
+clean:
+ -@touch $(TOP)/configs/current
+ -@for dir in $(SUBDIRS) ; do \
+ if [ -d $$dir ] ; then \
+ (cd $$dir && $(MAKE) clean) ; \
+ fi \
+ done
+ -@test -s $(TOP)/configs/current || rm -f $(TOP)/configs/current
+
+
+realclean: clean
+ -rm -rf lib*
+ -rm -f $(TOP)/configs/current
+ -rm -f $(TOP)/configs/autoconf
+ -rm -rf autom4te.cache
+ -find . '(' -name '*.o' -o -name '*.a' -o -name '*.so' -o \
+ -name depend -o -name depend.bak ')' -exec rm -f '{}' ';'
+
+
+distclean: realclean
+
+
+install:
+ @for dir in $(SUBDIRS) ; do \
+ if [ -d $$dir ] ; then \
+ (cd $$dir && $(MAKE) install) || exit 1 ; \
+ fi \
+ done
+
+
+# DirectFBGL module installation
+linux-directfb-install:
+ cd src/mesa/drivers/directfb && $(MAKE) install
+
+
+.PHONY: default doxygen clean realclean distclean install linux-directfb-install
+
+
+# If there's no current configuration file
+$(TOP)/configs/current:
+ @echo
+ @echo
+ @echo "Please choose a configuration from the following list:"
+ @ls -1 $(TOP)/configs | grep -v "current\|default\|CVS\|autoconf.*"
+ @echo
+ @echo "Then type 'make <config>' (ex: 'make linux-x86')"
+ @echo
+ @echo "Or, run './configure' then 'make'"
+ @echo "See './configure --help' for details"
+ @echo
+ @echo "(ignore the following error message)"
+ @exit 1
+
+
+# Rules to set/install a specific build configuration
+aix \
+aix-64 \
+aix-64-static \
+aix-gcc \
+aix-static \
+autoconf \
+bluegene-osmesa \
+bluegene-xlc-osmesa \
+beos \
+catamount-osmesa-pgi \
+darwin \
+darwin-fat-32bit \
+darwin-fat-all \
+darwin-static \
+darwin-static-x86ppc \
+freebsd \
+freebsd-dri \
+freebsd-dri-amd64 \
+freebsd-dri-x86 \
+hpux10 \
+hpux10-gcc \
+hpux10-static \
+hpux11-32 \
+hpux11-32-static \
+hpux11-32-static-nothreads \
+hpux11-64 \
+hpux11-64-static \
+hpux11-ia64 \
+hpux11-ia64-static \
+hpux9 \
+hpux9-gcc \
+irix6-64 \
+irix6-64-static \
+irix6-n32 \
+irix6-n32-static \
+irix6-o32 \
+irix6-o32-static \
+linux \
+linux-alpha \
+linux-alpha-static \
+linux-debug \
+linux-directfb \
+linux-dri \
+linux-dri-debug \
+linux-dri-x86 \
+linux-dri-x86-64 \
+linux-dri-ppc \
+linux-dri-xcb \
+linux-indirect \
+linux-fbdev \
+linux-glide \
+linux-ia64-icc \
+linux-ia64-icc-static \
+linux-icc \
+linux-icc-static \
+linux-osmesa \
+linux-osmesa16 \
+linux-osmesa16-static \
+linux-osmesa32 \
+linux-ppc \
+linux-ppc-static \
+linux-solo \
+linux-solo-x86 \
+linux-solo-ia64 \
+linux-sparc \
+linux-sparc5 \
+linux-static \
+linux-ultrasparc \
+linux-tcc \
+linux-x86 \
+linux-x86-debug \
+linux-x86-32 \
+linux-x86-64 \
+linux-x86-64-debug \
+linux-x86-64-static \
+linux-x86-glide \
+linux-x86-static \
+netbsd \
+openbsd \
+osf1 \
+osf1-static \
+solaris-x86 \
+solaris-x86-gcc \
+solaris-x86-gcc-static \
+sunos4 \
+sunos4-gcc \
+sunos4-static \
+sunos5 \
+sunos5-gcc \
+sunos5-64-gcc \
+sunos5-smp \
+sunos5-v8 \
+sunos5-v8-static \
+sunos5-v9 \
+sunos5-v9-static \
+sunos5-v9-cc-g++ \
+ultrix-gcc:
+ @ if test -f configs/current || test -L configs/current ; then \
+ echo "Please run 'make realclean' before changing configs" ; \
+ exit 1 ; \
+ fi
+ (cd configs && rm -f current && ln -s $@ current)
+ $(MAKE) default
+
+
+# Rules for making release tarballs
+
+VERSION=7.4.1
+DIRECTORY = Mesa-$(VERSION)
+LIB_NAME = MesaLib-$(VERSION)
+DEMO_NAME = MesaDemos-$(VERSION)
+GLUT_NAME = MesaGLUT-$(VERSION)
+
+MAIN_FILES = \
+ $(DIRECTORY)/Makefile* \
+ $(DIRECTORY)/configure \
+ $(DIRECTORY)/configure.ac \
+ $(DIRECTORY)/acinclude.m4 \
+ $(DIRECTORY)/aclocal.m4 \
+ $(DIRECTORY)/descrip.mms \
+ $(DIRECTORY)/mms-config. \
+ $(DIRECTORY)/bin/config.guess \
+ $(DIRECTORY)/bin/config.sub \
+ $(DIRECTORY)/bin/install-sh \
+ $(DIRECTORY)/bin/mklib \
+ $(DIRECTORY)/bin/minstall \
+ $(DIRECTORY)/bin/version.mk \
+ $(DIRECTORY)/configs/[a-z]* \
+ $(DIRECTORY)/docs/*.html \
+ $(DIRECTORY)/docs/COPYING \
+ $(DIRECTORY)/docs/README.* \
+ $(DIRECTORY)/docs/RELNOTES* \
+ $(DIRECTORY)/docs/*.spec \
+ $(DIRECTORY)/include/GL/internal/glcore.h \
+ $(DIRECTORY)/include/GL/dmesa.h \
+ $(DIRECTORY)/include/GL/ggimesa.h \
+ $(DIRECTORY)/include/GL/gl.h \
+ $(DIRECTORY)/include/GL/glext.h \
+ $(DIRECTORY)/include/GL/gl_mangle.h \
+ $(DIRECTORY)/include/GL/glu.h \
+ $(DIRECTORY)/include/GL/glu_mangle.h \
+ $(DIRECTORY)/include/GL/glx.h \
+ $(DIRECTORY)/include/GL/glxext.h \
+ $(DIRECTORY)/include/GL/glx_mangle.h \
+ $(DIRECTORY)/include/GL/glfbdev.h \
+ $(DIRECTORY)/include/GL/mesa_wgl.h \
+ $(DIRECTORY)/include/GL/mglmesa.h \
+ $(DIRECTORY)/include/GL/osmesa.h \
+ $(DIRECTORY)/include/GL/svgamesa.h \
+ $(DIRECTORY)/include/GL/vms_x_fix.h \
+ $(DIRECTORY)/include/GL/wmesa.h \
+ $(DIRECTORY)/src/Makefile \
+ $(DIRECTORY)/src/descrip.mms \
+ $(DIRECTORY)/src/mesa/Makefile* \
+ $(DIRECTORY)/src/mesa/sources \
+ $(DIRECTORY)/src/mesa/descrip.mms \
+ $(DIRECTORY)/src/mesa/gl.pc.in \
+ $(DIRECTORY)/src/mesa/osmesa.pc.in \
+ $(DIRECTORY)/src/mesa/depend \
+ $(DIRECTORY)/src/mesa/main/*.[chS] \
+ $(DIRECTORY)/src/mesa/main/descrip.mms \
+ $(DIRECTORY)/src/mesa/glapi/*.[chS] \
+ $(DIRECTORY)/src/mesa/glapi/descrip.mms \
+ $(DIRECTORY)/src/mesa/math/*.[ch] \
+ $(DIRECTORY)/src/mesa/math/descrip.mms \
+ $(DIRECTORY)/src/mesa/shader/*.[ch] \
+ $(DIRECTORY)/src/mesa/shader/descrip.mms \
+ $(DIRECTORY)/src/mesa/shader/grammar/*.[ch] \
+ $(DIRECTORY)/src/mesa/shader/grammar/descrip.mms \
+ $(DIRECTORY)/src/mesa/shader/slang/*.[ch] \
+ $(DIRECTORY)/src/mesa/shader/slang/descrip.mms \
+ $(DIRECTORY)/src/mesa/shader/slang/library/*.[ch] \
+ $(DIRECTORY)/src/mesa/shader/slang/library/*.gc \
+ $(DIRECTORY)/src/mesa/shader/slang/library/*.syn \
+ $(DIRECTORY)/src/mesa/shader/slang/library/Makefile \
+ $(DIRECTORY)/src/mesa/swrast/*.[ch] \
+ $(DIRECTORY)/src/mesa/swrast/descrip.mms \
+ $(DIRECTORY)/src/mesa/swrast_setup/*.[ch] \
+ $(DIRECTORY)/src/mesa/swrast_setup/descrip.mms \
+ $(DIRECTORY)/src/mesa/vbo/*.[chS] \
+ $(DIRECTORY)/src/mesa/vbo/descrip.mms \
+ $(DIRECTORY)/src/mesa/tnl/*.[chS] \
+ $(DIRECTORY)/src/mesa/tnl/descrip.mms \
+ $(DIRECTORY)/src/mesa/tnl_dd/*.[ch] \
+ $(DIRECTORY)/src/mesa/tnl_dd/imm/*.[ch] \
+ $(DIRECTORY)/src/mesa/tnl_dd/imm/NOTES.imm \
+ $(DIRECTORY)/src/mesa/drivers/Makefile \
+ $(DIRECTORY)/src/mesa/drivers/beos/*.cpp \
+ $(DIRECTORY)/src/mesa/drivers/beos/Makefile \
+ $(DIRECTORY)/src/mesa/drivers/common/*.[ch] \
+ $(DIRECTORY)/src/mesa/drivers/common/descrip.mms \
+ $(DIRECTORY)/src/mesa/drivers/directfb/*.[ch] \
+ $(DIRECTORY)/src/mesa/drivers/directfb/Makefile \
+ $(DIRECTORY)/src/mesa/drivers/dos/*.[chS] \
+ $(DIRECTORY)/src/mesa/drivers/fbdev/Makefile \
+ $(DIRECTORY)/src/mesa/drivers/fbdev/glfbdev.c \
+ $(DIRECTORY)/src/mesa/drivers/glide/*.[ch] \
+ $(DIRECTORY)/src/mesa/drivers/ggi/*.[ch] \
+ $(DIRECTORY)/src/mesa/drivers/ggi/ggimesa.conf.in \
+ $(DIRECTORY)/src/mesa/drivers/ggi/default/*.c \
+ $(DIRECTORY)/src/mesa/drivers/ggi/default/genkgi.conf.in \
+ $(DIRECTORY)/src/mesa/drivers/ggi/display/*.c \
+ $(DIRECTORY)/src/mesa/drivers/ggi/display/fbdev.conf.in \
+ $(DIRECTORY)/src/mesa/drivers/ggi/include/ggi/mesa/*.h \
+ $(DIRECTORY)/src/mesa/drivers/osmesa/Makefile \
+ $(DIRECTORY)/src/mesa/drivers/osmesa/Makefile.win \
+ $(DIRECTORY)/src/mesa/drivers/osmesa/descrip.mms \
+ $(DIRECTORY)/src/mesa/drivers/osmesa/osmesa.def \
+ $(DIRECTORY)/src/mesa/drivers/osmesa/*.[ch] \
+ $(DIRECTORY)/src/mesa/drivers/svga/*.[ch] \
+ $(DIRECTORY)/src/mesa/drivers/windows/*/*.[ch] \
+ $(DIRECTORY)/src/mesa/drivers/windows/*/*.def \
+ $(DIRECTORY)/src/mesa/drivers/x11/Makefile \
+ $(DIRECTORY)/src/mesa/drivers/x11/descrip.mms \
+ $(DIRECTORY)/src/mesa/drivers/x11/*.[ch] \
+ $(DIRECTORY)/src/mesa/drivers/glslcompiler/Makefile \
+ $(DIRECTORY)/src/mesa/drivers/glslcompiler/glslcompiler.c \
+ $(DIRECTORY)/src/mesa/ppc/*.[ch] \
+ $(DIRECTORY)/src/mesa/sparc/*.[chS] \
+ $(DIRECTORY)/src/mesa/x86/Makefile \
+ $(DIRECTORY)/src/mesa/x86/*.[ch] \
+ $(DIRECTORY)/src/mesa/x86/*.S \
+ $(DIRECTORY)/src/mesa/x86/rtasm/*.[ch] \
+ $(DIRECTORY)/src/mesa/x86-64/*.[chS] \
+ $(DIRECTORY)/src/mesa/x86-64/Makefile \
+ $(DIRECTORY)/progs/Makefile \
+ $(DIRECTORY)/progs/util/README \
+ $(DIRECTORY)/progs/util/*.[ch] \
+ $(DIRECTORY)/progs/util/sampleMakefile \
+ $(DIRECTORY)/vms/analyze_map.com \
+ $(DIRECTORY)/vms/xlib.opt \
+ $(DIRECTORY)/vms/xlib_share.opt \
+ $(DIRECTORY)/windows/VC8/
+
+
+DRI_FILES = \
+ $(DIRECTORY)/include/GL/internal/dri_interface.h \
+ $(DIRECTORY)/include/GL/internal/glcore.h \
+ $(DIRECTORY)/include/GL/internal/sarea.h \
+ $(DIRECTORY)/src/glx/Makefile \
+ $(DIRECTORY)/src/glx/x11/Makefile \
+ $(DIRECTORY)/src/glx/x11/*.[ch] \
+ $(DIRECTORY)/src/mesa/drivers/dri/Makefile \
+ $(DIRECTORY)/src/mesa/drivers/dri/Makefile.template \
+ $(DIRECTORY)/src/mesa/drivers/dri/dri.pc.in \
+ $(DIRECTORY)/src/mesa/drivers/dri/common/xmlpool/*.[ch] \
+ $(DIRECTORY)/src/mesa/drivers/dri/common/xmlpool/*.po \
+ $(DIRECTORY)/src/mesa/drivers/dri/*/*.[chS] \
+ $(DIRECTORY)/src/mesa/drivers/dri/*/Makefile \
+ $(DIRECTORY)/src/mesa/drivers/dri/*/Doxyfile \
+ $(DIRECTORY)/src/mesa/drivers/dri/*/server/*.[ch]
+
+SGI_GLU_FILES = \
+ $(DIRECTORY)/src/glu/Makefile \
+ $(DIRECTORY)/src/glu/descrip.mms \
+ $(DIRECTORY)/src/glu/glu.pc.in \
+ $(DIRECTORY)/src/glu/sgi/Makefile \
+ $(DIRECTORY)/src/glu/sgi/Makefile.mgw \
+ $(DIRECTORY)/src/glu/sgi/Makefile.win \
+ $(DIRECTORY)/src/glu/sgi/Makefile.DJ \
+ $(DIRECTORY)/src/glu/sgi/glu.def \
+ $(DIRECTORY)/src/glu/sgi/dummy.cc \
+ $(DIRECTORY)/src/glu/sgi/descrip.mms \
+ $(DIRECTORY)/src/glu/sgi/glu.exports \
+ $(DIRECTORY)/src/glu/sgi/glu.exports.darwin \
+ $(DIRECTORY)/src/glu/sgi/mesaglu.opt \
+ $(DIRECTORY)/src/glu/sgi/include/gluos.h \
+ $(DIRECTORY)/src/glu/sgi/libnurbs/interface/*.h \
+ $(DIRECTORY)/src/glu/sgi/libnurbs/interface/*.cc \
+ $(DIRECTORY)/src/glu/sgi/libnurbs/internals/*.h \
+ $(DIRECTORY)/src/glu/sgi/libnurbs/internals/*.cc \
+ $(DIRECTORY)/src/glu/sgi/libnurbs/nurbtess/*.h \
+ $(DIRECTORY)/src/glu/sgi/libnurbs/nurbtess/*.cc \
+ $(DIRECTORY)/src/glu/sgi/libtess/README \
+ $(DIRECTORY)/src/glu/sgi/libtess/alg-outline \
+ $(DIRECTORY)/src/glu/sgi/libtess/*.[ch] \
+ $(DIRECTORY)/src/glu/sgi/libutil/*.[ch]
+
+MESA_GLU_FILES = \
+ $(DIRECTORY)/src/glu/mesa/README[12] \
+ $(DIRECTORY)/src/glu/mesa/Makefile* \
+ $(DIRECTORY)/src/glu/mesa/descrip.mms \
+ $(DIRECTORY)/src/glu/mesa/mms_depend \
+ $(DIRECTORY)/src/glu/mesa/*.def \
+ $(DIRECTORY)/src/glu/mesa/depend \
+ $(DIRECTORY)/src/glu/mesa/*.[ch]
+
+GLW_FILES = \
+ $(DIRECTORY)/src/glw/*.[ch] \
+ $(DIRECTORY)/src/glw/Makefile* \
+ $(DIRECTORY)/src/glw/README \
+ $(DIRECTORY)/src/glw/glw.pc.in \
+ $(DIRECTORY)/src/glw/depend
+
+DEMO_FILES = \
+ $(DIRECTORY)/progs/beos/*.cpp \
+ $(DIRECTORY)/progs/beos/Makefile \
+ $(DIRECTORY)/progs/images/*.rgb \
+ $(DIRECTORY)/progs/images/*.rgba \
+ $(DIRECTORY)/progs/demos/Makefile* \
+ $(DIRECTORY)/progs/demos/descrip.mms \
+ $(DIRECTORY)/progs/demos/*.[ch] \
+ $(DIRECTORY)/progs/demos/*.cxx \
+ $(DIRECTORY)/progs/demos/*.dat \
+ $(DIRECTORY)/progs/demos/README \
+ $(DIRECTORY)/progs/fbdev/Makefile \
+ $(DIRECTORY)/progs/fbdev/glfbdevtest.c \
+ $(DIRECTORY)/progs/osdemos/Makefile \
+ $(DIRECTORY)/progs/osdemos/*.c \
+ $(DIRECTORY)/progs/xdemos/Makefile* \
+ $(DIRECTORY)/progs/xdemos/descrip.mms \
+ $(DIRECTORY)/progs/xdemos/*.[chf] \
+ $(DIRECTORY)/progs/redbook/Makefile* \
+ $(DIRECTORY)/progs/redbook/README \
+ $(DIRECTORY)/progs/redbook/*.[ch] \
+ $(DIRECTORY)/progs/samples/Makefile* \
+ $(DIRECTORY)/progs/samples/README \
+ $(DIRECTORY)/progs/samples/*.c \
+ $(DIRECTORY)/progs/glsl/Makefile* \
+ $(DIRECTORY)/progs/glsl/*.c \
+ $(DIRECTORY)/progs/glsl/*.frag \
+ $(DIRECTORY)/progs/glsl/*.vert \
+ $(DIRECTORY)/progs/windml/Makefile.ugl \
+ $(DIRECTORY)/progs/windml/*.c \
+ $(DIRECTORY)/progs/windml/*.bmp \
+ $(DIRECTORY)/progs/ggi/*.c \
+ $(DIRECTORY)/windows/VC6/progs/demos/*.dsp \
+ $(DIRECTORY)/windows/VC6/progs/progs.dsw \
+ $(DIRECTORY)/windows/VC7/progs/demos/*.vcproj \
+ $(DIRECTORY)/windows/VC7/progs/progs.sln
+
+GLUT_FILES = \
+ $(DIRECTORY)/include/GL/glut.h \
+ $(DIRECTORY)/include/GL/glutf90.h \
+ $(DIRECTORY)/src/glut/glx/Makefile* \
+ $(DIRECTORY)/src/glut/glx/depend \
+ $(DIRECTORY)/src/glut/glx/glut.pc.in \
+ $(DIRECTORY)/src/glut/glx/*def \
+ $(DIRECTORY)/src/glut/glx/descrip.mms \
+ $(DIRECTORY)/src/glut/glx/mms_depend \
+ $(DIRECTORY)/src/glut/glx/*.[ch] \
+ $(DIRECTORY)/src/glut/beos/*.[ch] \
+ $(DIRECTORY)/src/glut/beos/*.cpp \
+ $(DIRECTORY)/src/glut/beos/Makefile \
+ $(DIRECTORY)/src/glut/dos/*.[ch] \
+ $(DIRECTORY)/src/glut/dos/Makefile.DJ \
+ $(DIRECTORY)/src/glut/dos/PC_HW/*.[chS] \
+ $(DIRECTORY)/src/glut/ggi/*.[ch] \
+ $(DIRECTORY)/src/glut/ggi/Makefile \
+ $(DIRECTORY)/src/glut/fbdev/Makefile \
+ $(DIRECTORY)/src/glut/fbdev/*[ch] \
+ $(DIRECTORY)/src/glut/mini/*[ch] \
+ $(DIRECTORY)/src/glut/mini/glut.pc.in \
+ $(DIRECTORY)/src/glut/directfb/Makefile \
+ $(DIRECTORY)/src/glut/directfb/NOTES \
+ $(DIRECTORY)/src/glut/directfb/*[ch] \
+ $(DIRECTORY)/windows/VC6/progs/glut/glut.dsp \
+ $(DIRECTORY)/windows/VC7/progs/glut/glut.vcproj
+
+DEPEND_FILES = \
+ $(TOP)/src/mesa/depend \
+ $(TOP)/src/glx/x11/depend \
+ $(TOP)/src/glw/depend \
+ $(TOP)/src/glut/glx/depend \
+ $(TOP)/src/glu/sgi/depend
+
+
+LIB_FILES = $(MAIN_FILES) $(DRI_FILES) $(SGI_GLU_FILES) $(GLW_FILES)
+
+
+# Everything for new a Mesa release:
+tarballs: rm_depend configure aclocal.m4 lib_gz demo_gz glut_gz \
+ lib_bz2 demo_bz2 glut_bz2 lib_zip demo_zip glut_zip md5
+
+
+# Helper for autoconf builds
+ACLOCAL = aclocal
+ACLOCAL_FLAGS =
+AUTOCONF = autoconf
+AC_FLAGS =
+aclocal.m4: configure.ac acinclude.m4
+ $(ACLOCAL) $(ACLOCAL_FLAGS)
+configure: configure.ac aclocal.m4 acinclude.m4
+ $(AUTOCONF) $(AC_FLAGS)
+
+rm_depend:
+ @for dep in $(DEPEND_FILES) ; do \
+ rm -f $$dep ; \
+ touch $$dep ; \
+ done
+
+lib_gz:
+ rm -f configs/current ; \
+ rm -f configs/autoconf ; \
+ cd .. ; \
+ tar -cf $(LIB_NAME).tar $(LIB_FILES) ; \
+ gzip $(LIB_NAME).tar ; \
+ mv $(LIB_NAME).tar.gz $(DIRECTORY)
+
+demo_gz:
+ cd .. ; \
+ tar -cf $(DEMO_NAME).tar $(DEMO_FILES) ; \
+ gzip $(DEMO_NAME).tar ; \
+ mv $(DEMO_NAME).tar.gz $(DIRECTORY)
+
+glut_gz:
+ cd .. ; \
+ tar -cf $(GLUT_NAME).tar $(GLUT_FILES) ; \
+ gzip $(GLUT_NAME).tar ; \
+ mv $(GLUT_NAME).tar.gz $(DIRECTORY)
+
+lib_bz2:
+ rm -f configs/current ; \
+ rm -f configs/autoconf ; \
+ cd .. ; \
+ tar -cf $(LIB_NAME).tar $(LIB_FILES) ; \
+ bzip2 $(LIB_NAME).tar ; \
+ mv $(LIB_NAME).tar.bz2 $(DIRECTORY)
+
+demo_bz2:
+ cd .. ; \
+ tar -cf $(DEMO_NAME).tar $(DEMO_FILES) ; \
+ bzip2 $(DEMO_NAME).tar ; \
+ mv $(DEMO_NAME).tar.bz2 $(DIRECTORY)
+
+glut_bz2:
+ cd .. ; \
+ tar -cf $(GLUT_NAME).tar $(GLUT_FILES) ; \
+ bzip2 $(GLUT_NAME).tar ; \
+ mv $(GLUT_NAME).tar.bz2 $(DIRECTORY)
+
+lib_zip:
+ rm -f configs/current ; \
+ rm -f configs/autoconf ; \
+ rm -f $(LIB_NAME).zip ; \
+ cd .. ; \
+ zip -qr $(LIB_NAME).zip $(LIB_FILES) ; \
+ mv $(LIB_NAME).zip $(DIRECTORY)
+
+demo_zip:
+ rm -f $(DEMO_NAME).zip ; \
+ cd .. ; \
+ zip -qr $(DEMO_NAME).zip $(DEMO_FILES) ; \
+ mv $(DEMO_NAME).zip $(DIRECTORY)
+
+glut_zip:
+ rm -f $(GLUT_NAME).zip ; \
+ cd .. ; \
+ zip -qr $(GLUT_NAME).zip $(GLUT_FILES) ; \
+ mv $(GLUT_NAME).zip $(DIRECTORY)
+
+md5:
+ @-md5sum $(LIB_NAME).tar.gz
+ @-md5sum $(LIB_NAME).tar.bz2
+ @-md5sum $(LIB_NAME).zip
+ @-md5sum $(DEMO_NAME).tar.gz
+ @-md5sum $(DEMO_NAME).tar.bz2
+ @-md5sum $(DEMO_NAME).zip
+ @-md5sum $(GLUT_NAME).tar.gz
+ @-md5sum $(GLUT_NAME).tar.bz2
+ @-md5sum $(GLUT_NAME).zip
+
+.PHONY: tarballs rm_depend lib_gz demo_gz glut_gz lib_bz2 demo_bz2 \
+ glut_bz2 lib_zip demo_zip glut_zip md5
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/Mesa-7.4.1/src/glx/x11/dri_glx.c new/Mesa-7.4.2/src/glx/x11/dri_glx.c
--- old/Mesa-7.4.1/src/glx/x11/dri_glx.c 2009-02-18 00:35:00.000000000 +0100
+++ new/Mesa-7.4.2/src/glx/x11/dri_glx.c 2009-05-04 16:34:09.000000000 +0200
@@ -600,7 +600,7 @@
char *driverName;
int i;
- psp = Xmalloc(sizeof *psp);
+ psp = Xcalloc(1, sizeof *psp);
if (psp == NULL)
return NULL;
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/Mesa-7.4.1/src/glx/x11/drisw_glx.c new/Mesa-7.4.2/src/glx/x11/drisw_glx.c
--- old/Mesa-7.4.1/src/glx/x11/drisw_glx.c 2009-01-22 18:38:33.000000000 +0100
+++ new/Mesa-7.4.2/src/glx/x11/drisw_glx.c 2009-05-04 16:34:09.000000000 +0200
@@ -359,7 +359,7 @@
const char *driverName = "swrast";
int i;
- psp = Xmalloc(sizeof *psp);
+ psp = Xcalloc(1, sizeof *psp);
if (psp == NULL)
return NULL;
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/Mesa-7.4.1/src/mesa/drivers/dri/i965/brw_sf_state.c new/Mesa-7.4.2/src/mesa/drivers/dri/i965/brw_sf_state.c
--- old/Mesa-7.4.1/src/mesa/drivers/dri/i965/brw_sf_state.c 2009-03-17 15:48:46.000000000 +0100
+++ new/Mesa-7.4.2/src/mesa/drivers/dri/i965/brw_sf_state.c 2009-05-14 20:05:01.000000000 +0200
@@ -43,10 +43,11 @@
const GLfloat depth_scale = 1.0F / ctx->DrawBuffer->_DepthMaxF;
struct brw_sf_viewport sfv;
GLfloat y_scale, y_bias;
+ const GLboolean render_to_fbo = (ctx->DrawBuffer->Name != 0);
memset(&sfv, 0, sizeof(sfv));
- if (intel_rendering_to_texture(ctx)) {
+ if (render_to_fbo) {
y_scale = 1.0;
y_bias = 0;
}
@@ -75,7 +76,7 @@
* Note that the hardware's coordinates are inclusive, while Mesa's min is
* inclusive but max is exclusive.
*/
- if (intel_rendering_to_texture(ctx)) {
+ if (render_to_fbo) {
/* texmemory: Y=0=bottom */
sfv.scissor.xmin = ctx->DrawBuffer->_Xmin;
sfv.scissor.xmax = ctx->DrawBuffer->_Xmax - 1;
@@ -114,7 +115,7 @@
GLboolean scissor, line_smooth, point_sprite, point_attenuated;
float line_width;
float point_size;
- GLboolean render_to_texture;
+ GLboolean render_to_fbo;
};
static void
@@ -147,7 +148,7 @@
key->point_size = ctx->Point.Size;
key->point_attenuated = ctx->Point._Attenuated;
- key->render_to_texture = intel_rendering_to_texture(&brw->intel.ctx);
+ key->render_to_fbo = brw->intel.ctx.DrawBuffer->Name != 0;
}
static dri_bo *
@@ -194,10 +195,10 @@
else
sf.sf5.front_winding = BRW_FRONTWINDING_CW;
- /* The viewport is inverted for rendering to texture, and that inverts
+ /* The viewport is inverted for rendering to a FBO, and that inverts
* polygon front/back orientation.
*/
- sf.sf5.front_winding ^= key->render_to_texture;
+ sf.sf5.front_winding ^= key->render_to_fbo;
switch (key->cull_face) {
case GL_FRONT:
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/Mesa-7.4.1/src/mesa/drivers/dri/i965/brw_wm_surface_state.c new/Mesa-7.4.2/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
--- old/Mesa-7.4.1/src/mesa/drivers/dri/i965/brw_wm_surface_state.c 2009-03-17 15:48:46.000000000 +0100
+++ new/Mesa-7.4.2/src/mesa/drivers/dri/i965/brw_wm_surface_state.c 2009-04-27 15:09:33.000000000 +0200
@@ -310,6 +310,7 @@
GLubyte color_mask[4];
GLboolean color_blend;
uint32_t tiling;
+ uint32_t draw_offset;
} key;
memset(&key, 0, sizeof(key));
@@ -326,6 +327,7 @@
key.width = region->pitch; /* XXX: not really! */
key.height = region->height;
key.cpp = region->cpp;
+ key.draw_offset = region->draw_offset; /* cur 3d or cube face offset */
} else {
key.surface_type = BRW_SURFACE_NULL;
key.surface_format = BRW_SURFACEFORMAT_B8G8R8A8_UNORM;
@@ -333,6 +335,7 @@
key.width = 1;
key.height = 1;
key.cpp = 4;
+ key.draw_offset = 0;
}
memcpy(key.color_mask, ctx->Color.ColorMask,
sizeof(key.color_mask));
@@ -354,8 +357,9 @@
surf.ss0.surface_format = key.surface_format;
surf.ss0.surface_type = key.surface_type;
+ surf.ss1.base_addr = key.draw_offset;
if (region_bo != NULL)
- surf.ss1.base_addr = region_bo->offset; /* reloc */
+ surf.ss1.base_addr += region_bo->offset; /* reloc */
surf.ss2.width = key.width - 1;
surf.ss2.height = key.height - 1;
@@ -380,12 +384,12 @@
* them both. We might be able to figure out from other state
* a more restrictive relocation to emit.
*/
- dri_bo_emit_reloc(brw->wm.surf_bo[unit],
- I915_GEM_DOMAIN_RENDER,
- I915_GEM_DOMAIN_RENDER,
- 0,
- offsetof(struct brw_surface_state, ss1),
- region_bo);
+ drm_intel_bo_emit_reloc(brw->wm.surf_bo[unit],
+ offsetof(struct brw_surface_state, ss1),
+ region_bo,
+ key.draw_offset,
+ I915_GEM_DOMAIN_RENDER,
+ I915_GEM_DOMAIN_RENDER);
}
}
}
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/Mesa-7.4.1/src/mesa/drivers/dri/intel/intel_context.c new/Mesa-7.4.2/src/mesa/drivers/dri/intel/intel_context.c
--- old/Mesa-7.4.1/src/mesa/drivers/dri/intel/intel_context.c 2009-04-18 18:51:25.000000000 +0200
+++ new/Mesa-7.4.2/src/mesa/drivers/dri/intel/intel_context.c 2009-04-27 15:09:33.000000000 +0200
@@ -534,7 +534,8 @@
if ((ctx->DrawBuffer->Name == 0) && intel->front_buffer_dirty) {
__DRIscreen *const screen = intel->intelScreen->driScrnPriv;
- if ((screen->dri2.loader->base.version >= 2)
+ if (screen->dri2.loader
+ && (screen->dri2.loader->base.version >= 2)
&& (screen->dri2.loader->flushFrontBuffer != NULL)) {
(*screen->dri2.loader->flushFrontBuffer)(intel->driDrawable,
intel->driDrawable->loaderPrivate);
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/Mesa-7.4.1/src/mesa/drivers/dri/intel/intel_pixel.c new/Mesa-7.4.2/src/mesa/drivers/dri/intel/intel_pixel.c
--- old/Mesa-7.4.1/src/mesa/drivers/dri/intel/intel_pixel.c 2009-03-17 15:48:46.000000000 +0100
+++ new/Mesa-7.4.2/src/mesa/drivers/dri/intel/intel_pixel.c 2009-04-27 15:09:33.000000000 +0200
@@ -183,7 +183,7 @@
intel->meta.saved_vp_height = ctx->Viewport.Height;
intel->meta.saved_matrix_mode = ctx->Transform.MatrixMode;
- /* _mesa_Viewport(0, 0, ctx->DrawBuffer->Width, ctx->DrawBuffer->Height);*/
+ _mesa_Viewport(0, 0, ctx->DrawBuffer->Width, ctx->DrawBuffer->Height);
_mesa_MatrixMode(GL_PROJECTION);
_mesa_PushMatrix();
@@ -205,8 +205,8 @@
_mesa_MatrixMode(intel->meta.saved_matrix_mode);
- /* _mesa_Viewport(intel->meta.saved_vp_x, intel->meta.saved_vp_y,
- intel->meta.saved_vp_width, intel->meta.saved_vp_height);*/
+ _mesa_Viewport(intel->meta.saved_vp_x, intel->meta.saved_vp_y,
+ intel->meta.saved_vp_width, intel->meta.saved_vp_height);
}
/**
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/Mesa-7.4.1/src/mesa/drivers/dri/r300/r300_context.h new/Mesa-7.4.2/src/mesa/drivers/dri/r300/r300_context.h
--- old/Mesa-7.4.1/src/mesa/drivers/dri/r300/r300_context.h 2009-01-22 18:38:33.000000000 +0100
+++ new/Mesa-7.4.2/src/mesa/drivers/dri/r300/r300_context.h 2009-05-01 01:08:36.000000000 +0200
@@ -211,7 +211,7 @@
};
struct r300_texture_env_state {
- r300TexObjPtr texobj;
+ struct gl_texture_object *texobj;
GLenum format;
GLenum envMode;
};
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/Mesa-7.4.1/src/mesa/drivers/dri/r300/r300_state.c new/Mesa-7.4.2/src/mesa/drivers/dri/r300/r300_state.c
--- old/Mesa-7.4.1/src/mesa/drivers/dri/r300/r300_state.c 2009-03-17 15:48:46.000000000 +0100
+++ new/Mesa-7.4.2/src/mesa/drivers/dri/r300/r300_state.c 2009-05-01 01:08:36.000000000 +0200
@@ -1487,7 +1487,7 @@
#endif
tmu_mappings[i] = hw_tmu;
- t = r300->state.texture.unit[i].texobj;
+ t = (r300TexObjPtr) r300->state.texture.unit[i].texobj->DriverData;
/* XXX questionable fix for bug 9170: */
if (!t)
continue;
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/Mesa-7.4.1/src/mesa/drivers/dri/r300/r300_texmem.c new/Mesa-7.4.2/src/mesa/drivers/dri/r300/r300_texmem.c
--- old/Mesa-7.4.1/src/mesa/drivers/dri/r300/r300_texmem.c 2009-01-22 18:38:33.000000000 +0100
+++ new/Mesa-7.4.2/src/mesa/drivers/dri/r300/r300_texmem.c 2009-05-01 01:08:36.000000000 +0200
@@ -44,6 +44,7 @@
#include "main/colormac.h"
#include "main/macros.h"
#include "main/simple_list.h"
+#include "main/texobj.h"
#include "radeon_reg.h" /* gets definition for usleep */
#include "r300_context.h"
#include "r300_state.h"
@@ -71,8 +72,8 @@
}
for (i = 0; i < rmesa->radeon.glCtx->Const.MaxTextureUnits; i++) {
- if (rmesa->state.texture.unit[i].texobj == t) {
- rmesa->state.texture.unit[i].texobj = NULL;
+ if (rmesa->state.texture.unit[i].texobj == t->base.tObj) {
+ _mesa_reference_texobj(&rmesa->state.texture.unit[i].texobj, NULL);
}
}
}
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/Mesa-7.4.1/src/mesa/drivers/dri/r300/r300_texstate.c new/Mesa-7.4.2/src/mesa/drivers/dri/r300/r300_texstate.c
--- old/Mesa-7.4.1/src/mesa/drivers/dri/r300/r300_texstate.c 2009-01-22 18:38:33.000000000 +0100
+++ new/Mesa-7.4.2/src/mesa/drivers/dri/r300/r300_texstate.c 2009-05-01 01:08:36.000000000 +0200
@@ -567,19 +567,20 @@
/* Update state if this is a different texture object to last
* time.
*/
- if (rmesa->state.texture.unit[unit].texobj != t) {
+ if (rmesa->state.texture.unit[unit].texobj != tObj) {
if (rmesa->state.texture.unit[unit].texobj != NULL) {
+ r300TexObjPtr t_old = (r300TexObjPtr) rmesa->state.texture.unit[unit].texobj->DriverData;
+
/* The old texture is no longer bound to this texture unit.
* Mark it as such.
*/
- rmesa->state.texture.unit[unit].texobj->base.bound &=
- ~(1 << unit);
+ t_old->base.bound &= ~(1 << unit);
}
- rmesa->state.texture.unit[unit].texobj = t;
+ _mesa_reference_texobj(&rmesa->state.texture.unit[unit].texobj, tObj);
t->base.bound |= (1 << unit);
- driUpdateTextureLRU((driTextureObject *) t); /* XXX: should be locked! */
+ driUpdateTextureLRU(&t->base); /* XXX: should be locked! */
}
return !t->border_fallback;
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/Mesa-7.4.1/src/mesa/drivers/dri/radeon/radeon_screen.c new/Mesa-7.4.2/src/mesa/drivers/dri/radeon/radeon_screen.c
--- old/Mesa-7.4.1/src/mesa/drivers/dri/radeon/radeon_screen.c 2009-04-06 21:55:48.000000000 +0200
+++ new/Mesa-7.4.2/src/mesa/drivers/dri/radeon/radeon_screen.c 2009-04-28 18:58:13.000000000 +0200
@@ -554,11 +554,8 @@
screen->chip_family = CHIP_FAMILY_RS300;
break;
- /* 9500 with 1 pipe verified by: Reid Linnemann <lreid(a)cs.okstate.edu> */
+
case PCI_CHIP_R300_AD:
- screen->chip_family = CHIP_FAMILY_RV350;
- screen->chip_flags = RADEON_CHIPSET_TCL;
- break;
case PCI_CHIP_R300_AE:
case PCI_CHIP_R300_AF:
case PCI_CHIP_R300_AG:
@@ -886,6 +883,18 @@
} else {
screen->num_gb_pipes = temp;
}
+
+ /* pipe overrides */
+ switch (dri_priv->deviceID) {
+ case PCI_CHIP_R300_AD: /* 9500 with 1 quadpipe verified by: Reid Linnemann <lreid(a)cs.okstate.edu> */
+ case PCI_CHIP_RV410_5E4C: /* RV410 SE only have 1 quadpipe */
+ case PCI_CHIP_RV410_5E4F: /* RV410 SE only have 1 quadpipe */
+ screen->num_gb_pipes = 1;
+ break;
+ default:
+ break;
+ }
+
}
if ( sPriv->drm_version.minor >= 10 ) {
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/Mesa-7.4.1/src/mesa/main/teximage.c new/Mesa-7.4.2/src/mesa/main/teximage.c
--- old/Mesa-7.4.1/src/mesa/main/teximage.c 2009-03-17 15:48:46.000000000 +0100
+++ new/Mesa-7.4.2/src/mesa/main/teximage.c 2009-05-04 15:54:52.000000000 +0200
@@ -50,6 +50,17 @@
/**
+ * State changes which we care about for glCopyTex[Sub]Image() calls.
+ * In particular, we care about pixel transfer state and buffer state
+ * (such as glReadBuffer to make sure we read from the right renderbuffer).
+ */
+#define NEW_COPY_TEX_STATE (_IMAGE_NEW_TRANSFER_STATE | \
+ _NEW_BUFFERS | \
+ _NEW_PIXEL)
+
+
+
+/**
* We allocate texture memory on 512-byte boundaries so we can use MMX/SSE
* elsewhere.
*/
@@ -2918,7 +2929,7 @@
GET_CURRENT_CONTEXT(ctx);
ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
- if (ctx->NewState & _IMAGE_NEW_TRANSFER_STATE)
+ if (ctx->NewState & NEW_COPY_TEX_STATE)
_mesa_update_state(ctx);
#if FEATURE_convolve
@@ -2983,7 +2994,7 @@
GET_CURRENT_CONTEXT(ctx);
ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
- if (ctx->NewState & _IMAGE_NEW_TRANSFER_STATE)
+ if (ctx->NewState & NEW_COPY_TEX_STATE)
_mesa_update_state(ctx);
#if FEATURE_convolve
@@ -3051,7 +3062,7 @@
GET_CURRENT_CONTEXT(ctx);
ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
- if (ctx->NewState & _IMAGE_NEW_TRANSFER_STATE)
+ if (ctx->NewState & NEW_COPY_TEX_STATE)
_mesa_update_state(ctx);
if (copytexsubimage_error_check1(ctx, 1, target, level))
@@ -3106,7 +3117,7 @@
GET_CURRENT_CONTEXT(ctx);
ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
- if (ctx->NewState & _IMAGE_NEW_TRANSFER_STATE)
+ if (ctx->NewState & NEW_COPY_TEX_STATE)
_mesa_update_state(ctx);
if (copytexsubimage_error_check1(ctx, 2, target, level))
@@ -3161,7 +3172,7 @@
GET_CURRENT_CONTEXT(ctx);
ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
- if (ctx->NewState & _IMAGE_NEW_TRANSFER_STATE)
+ if (ctx->NewState & NEW_COPY_TEX_STATE)
_mesa_update_state(ctx);
if (copytexsubimage_error_check1(ctx, 3, target, level))
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/Mesa-7.4.1/src/mesa/main/texstate.c new/Mesa-7.4.2/src/mesa/main/texstate.c
--- old/Mesa-7.4.1/src/mesa/main/texstate.c 2009-03-17 15:48:46.000000000 +0100
+++ new/Mesa-7.4.2/src/mesa/main/texstate.c 2009-05-11 17:46:29.000000000 +0200
@@ -802,6 +802,9 @@
/* unreference current textures */
for (u = 0; u < MAX_TEXTURE_IMAGE_UNITS; u++) {
struct gl_texture_unit *unit = ctx->Texture.Unit + u;
+ /* The _Current texture could account for another reference */
+ _mesa_reference_texobj(&ctx->Texture.Unit[u]._Current, NULL);
+
for (tgt = 0; tgt < NUM_TEXTURE_TARGETS; tgt++) {
_mesa_reference_texobj(&unit->CurrentTex[tgt], NULL);
}
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/Mesa-7.4.1/src/mesa/main/version.h new/Mesa-7.4.2/src/mesa/main/version.h
--- old/Mesa-7.4.1/src/mesa/main/version.h 2009-04-18 18:47:15.000000000 +0200
+++ new/Mesa-7.4.2/src/mesa/main/version.h 2009-05-14 21:19:44.000000000 +0200
@@ -1,8 +1,9 @@
/*
* Mesa 3-D graphics library
- * Version: 7.4.1
+ * Version: 7.4.2
*
* Copyright (C) 1999-2008 Brian Paul All Rights Reserved.
+ * Copyright (C) 2009 VMware, Inc. All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
@@ -30,8 +31,8 @@
/* Mesa version */
#define MESA_MAJOR 7
#define MESA_MINOR 4
-#define MESA_PATCH 0
-#define MESA_VERSION_STRING "7.4.1"
+#define MESA_PATCH 2
+#define MESA_VERSION_STRING "7.4.2"
/* To make version comparison easy */
#define MESA_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/Mesa-7.4.1/src/mesa/shader/arbprogparse.c new/Mesa-7.4.2/src/mesa/shader/arbprogparse.c
--- old/Mesa-7.4.1/src/mesa/shader/arbprogparse.c 2009-04-07 16:34:23.000000000 +0200
+++ new/Mesa-7.4.2/src/mesa/shader/arbprogparse.c 2009-04-28 18:58:13.000000000 +0200
@@ -1496,10 +1496,16 @@
curr = vc_head;
while (curr) {
if (curr->type == vt_attrib) {
- if (curr->attrib_is_generic)
- genericAttrib[ curr->attrib_binding ] = GL_TRUE;
- else
+ if (curr->attrib_is_generic) {
+ GLuint attr = (curr->attrib_binding == 0)
+ ? 0 : (curr->attrib_binding - VERT_ATTRIB_GENERIC0);
+ assert(attr < MAX_VERTEX_PROGRAM_ATTRIBS);
+ genericAttrib[attr] = GL_TRUE;
+ }
+ else {
+ assert(curr->attrib_binding < MAX_VERTEX_PROGRAM_ATTRIBS);
explicitAttrib[ curr->attrib_binding ] = GL_TRUE;
+ }
}
curr = curr->next;
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/Mesa-7.4.1/src/mesa/shader/slang/slang_link.c new/Mesa-7.4.2/src/mesa/shader/slang/slang_link.c
--- old/Mesa-7.4.1/src/mesa/shader/slang/slang_link.c 2009-03-13 04:28:49.000000000 +0100
+++ new/Mesa-7.4.2/src/mesa/shader/slang/slang_link.c 2009-05-11 17:45:36.000000000 +0200
@@ -249,6 +249,11 @@
_mesa_append_uniform(shProg->Uniforms, p->Name, prog->Target, i);
if (uniform)
uniform->Initialized = p->Initialized;
+
+ /* Add the flag indicating that the program is dependent on constant
+ * state.
+ */
+ prog->Parameters->StateFlags |= _NEW_PROGRAM;
}
/* The samplerMap[] table we build here is used to remap/re-index
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/Mesa-7.4.1/src/mesa/swrast/s_texfilter.c new/Mesa-7.4.2/src/mesa/swrast/s_texfilter.c
--- old/Mesa-7.4.1/src/mesa/swrast/s_texfilter.c 2009-04-07 16:33:30.000000000 +0200
+++ new/Mesa-7.4.2/src/mesa/swrast/s_texfilter.c 2009-04-28 17:09:06.000000000 +0200
@@ -2061,6 +2061,7 @@
fcol -= 0.5F;
i0 = IFLOOR(fcol);
i1 = i0 + 1;
+ break;
default:
_mesa_problem(NULL, "bad wrapMode in clamp_rect_coord_linear");
i0 = i1 = 0;
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package psmisc for openSUSE:Factory
checked in at Fri May 15 21:46:47 CEST 2009.
--------
--- psmisc/psmisc.changes 2009-03-27 16:57:13.000000000 +0100
+++ psmisc/psmisc.changes 2009-05-11 14:05:47.000000000 +0200
@@ -1,0 +2,27 @@
+Mon May 11 14:04:09 CEST 2009 - werner(a)suse.de
+
+- Update to psmisc-22.7
+ * Updated Polish, Russian, Swedish and Indonesian PO files
+ * Changed fuser.1 so signal is SIGNAL to reduce confusion about wether
+ or not it is a parameter Debian #517413
+ * fuser.1 references pkill(1) Debian #517414
+ * Added Chinese (traditional) PO file
+ * Updated Russian PO file
+ * Clarified -m and -c for fuser Debian #467289
+ * Patch from Arnaud Giersch to fix udp ports in fuser Debian #502208
+ * pstree man page mentions -Z may not be available Debian #478327
+ * pstree handles UTF-8 lengths much better Debian #413503
+ * killall says no process found when process not found Debian #500097
+ * pstree makes a bigger buffer for -al flags Debian #352603
+ * Dynamically reallocate buffer for fuser patch from Don Armstrong
+ * Updated Indonesian PO file
+ * peekfd off by one problem in fds Debian #460530
+ * Patch from Marcus Watts for better comm handling in pstree
+ * Updated Hungarian po file
+ * Updated French and German po files
+ * Fuser -m detects more open sockets SF patch #1728412 Thnks marienz
+ * Updated Italian, Chinese simplified, Dutch, Swedish and Polish po files
+ * Removed old fuser
+- Adapt our patches
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
Old:
----
psmisc-22.5-pstree.patch
psmisc-22.6.dif
psmisc-22.6-memleaks.patch
psmisc-22.6-nfs4fuser.patch
psmisc-22.6.tar.bz2
psmisc-22.6-writeonly.patch
New:
----
psmisc-22.7.dif
psmisc-22.7-memleaks.patch
psmisc-22.7-nfs4fuser.patch
psmisc-22.7-pstree.patch
psmisc-22.7.tar.bz2
psmisc-22.7-writeonly.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ psmisc.spec ++++++
--- /var/tmp/diff_new_pack.kS6425/_old 2009-05-15 21:38:11.000000000 +0200
+++ /var/tmp/diff_new_pack.kS6425/_new 2009-05-15 21:38:11.000000000 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package psmisc (Version 22.6)
+# spec file for package psmisc (Version 22.7)
#
# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
@@ -26,19 +26,19 @@
Group: System/Monitoring
PreReq: %fillup_prereq %insserv_prereq
AutoReqProv: on
-Version: 22.6
-Release: 64
+Version: 22.7
+Release: 1
Provides: ps:/usr/bin/killall
Summary: Utilities for managing processes on your system
Source: http://switch.dl.sourceforge.net/sourceforge/psmisc/psmisc-%{version}.tar.b…
-Patch0: %name-%version.dif
-Patch1: %name-22.5-pstree.patch
-Patch2: %name-22.6-nfs4fuser.patch
+Patch0: %name-22.7.dif
+Patch1: %name-22.7-pstree.patch
+Patch2: %name-22.7-nfs4fuser.patch
Patch3: %name-22.6-netunix.patch
-Patch4: %name-22.6-writeonly.patch
+Patch4: %name-22.7-writeonly.patch
Patch5: %name-22.6-fdleak.patch
Patch6: %name-22.6-tigetstr.patch
-Patch7: %name-22.6-memleaks.patch
+Patch7: %name-22.7-memleaks.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%define nopeek s390 s390x ia64
@@ -107,6 +107,30 @@
%{_mandir}/man1/pstree.1*
%changelog
+* Mon May 11 2009 werner(a)suse.de
+- Update to psmisc-22.7
+ * Updated Polish, Russian, Swedish and Indonesian PO files
+ * Changed fuser.1 so signal is SIGNAL to reduce confusion about wether
+ or not it is a parameter Debian #517413
+ * fuser.1 references pkill(1) Debian #517414
+ * Added Chinese (traditional) PO file
+ * Updated Russian PO file
+ * Clarified -m and -c for fuser Debian #467289
+ * Patch from Arnaud Giersch to fix udp ports in fuser Debian #502208
+ * pstree man page mentions -Z may not be available Debian #478327
+ * pstree handles UTF-8 lengths much better Debian #413503
+ * killall says no process found when process not found Debian #500097
+ * pstree makes a bigger buffer for -al flags Debian #352603
+ * Dynamically reallocate buffer for fuser patch from Don Armstrong
+ * Updated Indonesian PO file
+ * peekfd off by one problem in fds Debian #460530
+ * Patch from Marcus Watts for better comm handling in pstree
+ * Updated Hungarian po file
+ * Updated French and German po files
+ * Fuser -m detects more open sockets SF patch #1728412 Thnks marienz
+ * Updated Italian, Chinese simplified, Dutch, Swedish and Polish po files
+ * Removed old fuser
+- Adapt our patches
* Fri Mar 27 2009 werner(a)suse.de
- nfs4fuser: do not match on shadow mounts
- resolve some memory leaks in fuser
++++++ psmisc-22.6-fdleak.patch ++++++
--- /var/tmp/diff_new_pack.kS6425/_old 2009-05-15 21:38:11.000000000 +0200
+++ /var/tmp/diff_new_pack.kS6425/_new 2009-05-15 21:38:11.000000000 +0200
@@ -1,10 +1,10 @@
--- src/fuser.c
-+++ src/fuser.c 2008-09-01 15:03:05.054239318 +0200
-@@ -1306,6 +1308,7 @@ void fill_unix_cache(struct unixsocket_l
++++ src/fuser.c 2008-09-01 15:03:05.000000000 +0200
+@@ -1404,6 +1404,7 @@ void fill_unix_cache(struct unixsocket_l
*unixsocket_head = newsocket;
} /* while */
+ fclose(fp);
}
- /*
+ static inline int isnetfs(const char * type)
++++++ psmisc-22.6-netunix.patch ++++++
--- /var/tmp/diff_new_pack.kS6425/_old 2009-05-15 21:38:11.000000000 +0200
+++ /var/tmp/diff_new_pack.kS6425/_new 2009-05-15 21:38:11.000000000 +0200
@@ -1,4 +1,3 @@
-Files src/fuser and src/fuser differ
--- src/fuser.c
+++ src/fuser.c 2008-05-16 14:58:07.906452331 +0200
@@ -1310,12 +1310,21 @@ void fill_unix_cache(struct unixsocket_l
++++++ psmisc-22.6-tigetstr.patch ++++++
--- /var/tmp/diff_new_pack.kS6425/_old 2009-05-15 21:38:11.000000000 +0200
+++ /var/tmp/diff_new_pack.kS6425/_new 2009-05-15 21:38:11.000000000 +0200
@@ -1,6 +1,6 @@
--- src/pstree.c
-+++ src/pstree.c 2008-10-09 16:24:23.278874191 +0200
-@@ -861,7 +861,7 @@ main (int argc, char **argv)
++++ src/pstree.c 2008-10-09 16:24:23.000000000 +0200
+@@ -912,7 +912,7 @@ main (int argc, char **argv)
} else if (isatty (1) && (termname = getenv ("TERM")) && \
(strlen (termname) > 0) && \
(setupterm (NULL, 1 /* stdout */, NULL) == OK) && \
++++++ psmisc-22.6.dif -> psmisc-22.7.dif ++++++
--- psmisc/psmisc-22.6.dif 2008-10-01 18:02:45.000000000 +0200
+++ psmisc/psmisc-22.7.dif 2009-05-11 14:05:43.000000000 +0200
@@ -1,10 +1,10 @@
--- configure.ac
-+++ configure.ac 2007-12-14 15:01:53.293387939 +0100
++++ configure.ac 2009-05-11 13:59:05.145901759 +0200
@@ -1,10 +1,10 @@
dnl Process this file with autoconf to produce a configure script.
-AC_PREREQ(2.61)
+AC_PREREQ(2.60)
- AC_INIT([psmisc],[22.6])
+ AC_INIT([psmisc],[22.7])
AC_CONFIG_SRCDIR([src/comm.h])
AC_CONFIG_HEADER([config.h])
AC_CONFIG_AUX_DIR([config])
@@ -33,8 +33,8 @@
dnl Checks for library functions.
AC_FUNC_CLOSEDIR_VOID
--- src/fuser.c
-+++ src/fuser.c 2008-10-01 18:02:08.469114183 +0200
-@@ -147,7 +147,6 @@ static void scan_procs(const opt_type op
++++ src/fuser.c 2008-10-01 18:02:08.000000000 +0200
+@@ -149,7 +149,6 @@ static void scan_procs(const opt_type op
{
DIR *topproc_dir;
struct dirent *topproc_dent;
@@ -42,7 +42,7 @@
struct inode_list *ino_tmp;
struct device_list *dev_tmp;
pid_t pid, my_pid;
-@@ -157,11 +156,6 @@ static void scan_procs(const opt_type op
+@@ -159,11 +158,6 @@ static void scan_procs(const opt_type op
char cwd_real[PATH_MAX+1];
char exe_real[PATH_MAX+1];
++++++ psmisc-22.6-memleaks.patch -> psmisc-22.7-memleaks.patch ++++++
--- psmisc/psmisc-22.6-memleaks.patch 2009-03-27 16:51:23.000000000 +0100
+++ psmisc/psmisc-22.7-memleaks.patch 2009-05-11 14:05:35.000000000 +0200
@@ -1,6 +1,6 @@
--- src/fuser.c
-+++ src/fuser.c 2009-03-27 16:02:11.032550210 +0100
-@@ -218,6 +218,9 @@ static void scan_procs(const opt_type op
++++ src/fuser.c 2009-05-11 13:55:56.314402075 +0200
+@@ -225,6 +225,9 @@ static void scan_procs(const opt_type op
if (islocatedon(&cwd_real[0], ino_tmp->name->filename))
add_matched_proc(ino_tmp->name, pid, uid, ACCESS_CWD);
}
@@ -8,9 +8,9 @@
+ if (cwd_stat) free(cwd_stat);
+ if (exe_stat) free(exe_stat);
#ifndef __linux__
- check_dir(pid, "lib", dev_head, ino_head, uid, ACCESS_MMAP);
- check_dir(pid, "mmap", dev_head, ino_head, uid, ACCESS_MMAP);
-@@ -232,10 +235,9 @@ static void add_inode(struct inode_list
+ check_dir(pid, "lib", dev_head, ino_head, uid, ACCESS_MMAP, sockets, netdev);
+ check_dir(pid, "mmap", dev_head, ino_head, uid, ACCESS_MMAP, sockets, netdev);
+@@ -239,10 +242,9 @@ static void add_inode(struct inode_list
{
struct inode_list *ino_tmp, *ino_head;
@@ -23,7 +23,7 @@
ino_tmp->name = this_name;
ino_tmp->device = device;
ino_tmp->inode = inode;
-@@ -243,15 +245,15 @@ static void add_inode(struct inode_list
+@@ -250,15 +252,15 @@ static void add_inode(struct inode_list
*ino_list = ino_tmp;
}
@@ -42,7 +42,7 @@
dev_tmp->name = this_name;
dev_tmp->device = device;
dev_tmp->next = dev_head;
-@@ -262,16 +264,14 @@ static void add_ip_conn(struct ip_connec
+@@ -269,16 +271,14 @@ static void add_ip_conn(struct ip_connec
{
struct ip_connections *ip_tmp, *ip_head;
@@ -60,7 +60,7 @@
*ip_list = ip_tmp;
}
-@@ -280,10 +280,9 @@ static void add_ip6_conn(struct ip6_conn
+@@ -287,10 +287,9 @@ static void add_ip6_conn(struct ip6_conn
{
struct ip6_connections *ip_tmp, *ip_head;
@@ -72,7 +72,7 @@
ip_tmp->name = this_name;
ip_tmp->lcl_port = lcl_port;
ip_tmp->rmt_port = rmt_port;
-@@ -312,7 +311,7 @@ static void add_matched_proc(struct name
+@@ -319,7 +318,7 @@ static void add_matched_proc(struct name
}
}
/* Not found */
@@ -81,7 +81,7 @@
fprintf(stderr,_("Cannot allocate memory for matched proc: %s\n"), strerror(errno));
return;
}
-@@ -322,10 +321,13 @@ static void add_matched_proc(struct name
+@@ -329,10 +328,13 @@ static void add_matched_proc(struct name
pptr->next = NULL;
/* set command name */
pptr->command = NULL;
@@ -96,7 +96,7 @@
cmdlen = 0;
for (cptr = cmdname; cmdlen < MAX_CMDNAME && *cptr ; cptr++) {
if (isprint(*cptr))
-@@ -339,6 +341,10 @@ static void add_matched_proc(struct name
+@@ -346,6 +348,10 @@ static void add_matched_proc(struct name
name_list->matched_procs = pptr;
else
last_proc->next = pptr;
@@ -107,7 +107,7 @@
}
int parse_mount(struct names *this_name, struct device_list **dev_list)
-@@ -365,16 +371,16 @@ int parse_file(struct names *this_name,
+@@ -372,16 +378,16 @@ int parse_file(struct names *this_name,
real[0] = '\0';
if (check4nfs(this_name->filename, real)) {
@@ -131,7 +131,7 @@
this_name->filename = strdup(real);
}
-@@ -1211,22 +1217,26 @@ static struct stat *get_pidstat(const op
+@@ -1218,23 +1224,25 @@ static struct stat *get_pidstat(const op
char pathname[256];
struct stat *st;
@@ -140,33 +140,30 @@
return NULL;
snprintf(pathname, 256, "/proc/%d/%s", pid, filename);
if (check4nfs(pathname, real)) {
-- if ((opts & (OPT_MOUNTPOINT|OPT_MOUNTS)) == 0)
+ if ((opts & (OPT_MOUNTPOINT|OPT_MOUNTS)) == 0)
- return NULL;
-+ if ((opts & (OPT_MOUNTPOINT|OPT_MOUNTS)) == 0) {
+ goto out;
-+ }
}
-- if (stat(pathname, st) != 0)
+ if (stat(pathname, st) != 0)
- return NULL;
- else
- return st;
-+ if (stat(pathname, st) != 0) {
+ goto out;
-+ }
+ return st;
+out:
+ free(st);
+ return NULL;
}
- static void check_dir(const pid_t pid, const char *dirname, struct device_list *dev_head, struct inode_list *ino_head, const uid_t uid, const char access)
+ static void check_dir(const pid_t pid, const char *dirname, struct device_list *dev_head, struct inode_list *ino_head, const uid_t uid, const char access,
+ struct unixsocket_list *sockets, dev_t netdev)
{
- char *dirpath, *filepath;
+ char *dirpath = NULL, *filepath = NULL;
DIR *dirp;
struct dirent *direntry;
struct inode_list *ino_tmp;
-@@ -1234,13 +1244,13 @@ static void check_dir(const pid_t pid, c
+@@ -1243,13 +1251,13 @@ static void check_dir(const pid_t pid, c
struct stat st, lst;
if ( (dirpath = malloc(MAX_PATHNAME)) == NULL)
@@ -183,7 +180,7 @@
while ( (direntry = readdir(dirp)) != NULL) {
if (direntry->d_name[0] < '0' || direntry->d_name[0] > '9')
continue;
-@@ -1274,8 +1284,11 @@ static void check_dir(const pid_t pid, c
+@@ -1293,8 +1301,11 @@ static void check_dir(const pid_t pid, c
}
} /* while fd_dent */
closedir(dirp);
@@ -197,7 +194,7 @@
}
static void check_map(const pid_t pid, const char *filename, struct device_list *dev_head, struct inode_list *ino_head, const uid_t uid, const char access)
-@@ -1330,7 +1343,7 @@ void add_mount_device(struct mountdev_li
+@@ -1349,7 +1360,7 @@ void add_mount_device(struct mountdev_li
struct mountdev_list *newmount;
/*printf("Adding mount Path: %s Dir:%s dev:%0x\n",dir, fsname, device);*/
@@ -206,7 +203,7 @@
return;
newmount->fsname = strdup(fsname);
newmount->dir = strdup(dir);
-@@ -1375,14 +1388,17 @@ void fill_unix_cache(struct unixsocket_l
+@@ -1394,14 +1405,17 @@ void fill_unix_cache(struct unixsocket_l
free(path);
continue;
}
++++++ psmisc-22.6-nfs4fuser.patch -> psmisc-22.7-nfs4fuser.patch ++++++
--- psmisc/psmisc-22.6-nfs4fuser.patch 2009-03-27 16:56:15.000000000 +0100
+++ psmisc/psmisc-22.7-nfs4fuser.patch 2009-05-11 14:05:37.000000000 +0200
@@ -33,7 +33,7 @@
cannot report on any processes that it doesn't have permission to look at
the file descriptor table for. The most common time this problem occurs
--- src/fuser.c
-+++ src/fuser.c 2009-03-27 14:06:48.860001275 +0100
++++ src/fuser.c 2009-05-11 13:45:16.565902120 +0200
@@ -32,9 +32,11 @@
#include <stdlib.h>
#include <string.h>
@@ -54,21 +54,21 @@
#include "fuser.h"
#include "signals.h"
-@@ -62,7 +65,7 @@
- static void add_matched_proc(struct names *name_list, const pid_t pid, const uid_t uid, const char access);
- static void check_dir(const pid_t pid, const char *dirname, struct device_list *dev_head, struct inode_list *ino_head, const uid_t uid, const char access);
+@@ -63,7 +66,7 @@ static void add_matched_proc(struct name
+ static void check_dir(const pid_t pid, const char *dirname, struct device_list *dev_head, struct inode_list *ino_head, const uid_t uid, const char access,
+ struct unixsocket_list *sockets, dev_t netdev);
static void check_map(const pid_t pid, const char *filename, struct device_list *dev_head, struct inode_list *ino_head, const uid_t uid, const char access);
-static struct stat *get_pidstat(const pid_t pid, const char *filename);
+static struct stat *get_pidstat(const opt_type opts, const pid_t pid, const char *filename, char *real);
static uid_t getpiduid(const pid_t pid);
static int print_matches(struct names *names_head, const opt_type opts, const int sig_number);
static void kill_matched_proc(struct procs *pptr, const opt_type opts, const int sig_number);
-@@ -72,13 +75,19 @@ static void add_device(struct device_lis
+@@ -73,13 +76,20 @@ static void add_device(struct device_lis
void scan_mount_devices(const opt_type opts, struct mountdev_list **mount_devices);
void fill_unix_cache(struct unixsocket_list **unixsocket_head);
static dev_t find_net_dev(void);
--static void scan_procs(struct names *names_head, struct inode_list *ino_head, struct device_list *dev_head);
-+static void scan_procs(const opt_type opts, struct names *names_head, struct inode_list *ino_head, struct device_list *dev_head);
+-static void scan_procs(struct names *names_head, struct inode_list *ino_head, struct device_list *dev_head, struct unixsocket_list *sockets, dev_t netdev);
++static void scan_procs(const opt_type opts, struct names *names_head, struct inode_list *ino_head, struct device_list *dev_head, struct unixsocket_list *sockets, dev_t netdev);
#ifdef NFS_CHECKS
static void scan_knfsd(struct names *names_head, struct device_list *dev_head);
#endif /* NFS_CHECKS */
@@ -81,14 +81,15 @@
+
+typedef int (*stat_t)(const char*, struct stat*);
+static int nfssafe(stat_t func, const char *path, struct stat *buf);
++
static void usage (const char *errormsg)
{
-@@ -127,7 +136,14 @@ void print_version()
+@@ -127,7 +137,14 @@ void print_version()
"For more information about these matters, see the files named COPYING.\n"));
}
--static void scan_procs(struct names *names_head, struct inode_list *ino_head, struct device_list *dev_head)
+-static void scan_procs(struct names *names_head, struct inode_list *ino_head, struct device_list *dev_head, struct unixsocket_list *sockets, dev_t netdev)
+static int islocatedon(const char * path, const char * loc)
+{
+ if (!path || *path == '\0')
@@ -96,11 +97,11 @@
+ return (strstr(path, loc) == path);
+}
+
-+static void scan_procs(const opt_type opts, struct names *names_head, struct inode_list *ino_head, struct device_list *dev_head)
++static void scan_procs(const opt_type opts, struct names *names_head, struct inode_list *ino_head, struct device_list *dev_head, struct unixsocket_list *sockets, dev_t netdev)
{
DIR *topproc_dir;
struct dirent *topproc_dent;
-@@ -137,6 +153,9 @@ static void scan_procs(struct names *nam
+@@ -137,6 +154,9 @@ static void scan_procs(struct names *nam
pid_t pid, my_pid;
uid_t uid;
struct stat *cwd_stat, *exe_stat, *root_stat;
@@ -110,7 +111,7 @@
if ( (fd_dirpath = malloc(MAX_PATHNAME)) == NULL)
return;
-@@ -157,9 +176,10 @@ static void scan_procs(struct names *nam
+@@ -157,9 +177,10 @@ static void scan_procs(struct names *nam
continue;
uid = getpiduid(pid);
@@ -124,7 +125,7 @@
/* Scan the devices */
for (dev_tmp = dev_head ; dev_tmp != NULL ; dev_tmp = dev_tmp->next) {
if (exe_stat != NULL && exe_stat->st_dev == dev_tmp->device)
-@@ -168,6 +188,14 @@ static void scan_procs(struct names *nam
+@@ -168,6 +189,14 @@ static void scan_procs(struct names *nam
add_matched_proc(dev_tmp->name, pid, uid, ACCESS_ROOT);
if (cwd_stat != NULL && cwd_stat->st_dev == dev_tmp->device)
add_matched_proc(dev_tmp->name, pid, uid, ACCESS_CWD);
@@ -139,7 +140,7 @@
}
for (ino_tmp = ino_head ; ino_tmp != NULL ; ino_tmp = ino_tmp->next) {
if (exe_stat != NULL) {
-@@ -186,9 +214,19 @@ static void scan_procs(struct names *nam
+@@ -186,9 +215,19 @@ static void scan_procs(struct names *nam
add_matched_proc(ino_tmp->name, pid, uid, ACCESS_CWD);
}
}
@@ -153,13 +154,13 @@
+ add_matched_proc(ino_tmp->name, pid, uid, ACCESS_CWD);
}
+#ifndef __linux__
- check_dir(pid, "lib", dev_head, ino_head, uid, ACCESS_MMAP);
- check_dir(pid, "mmap", dev_head, ino_head, uid, ACCESS_MMAP);
+ check_dir(pid, "lib", dev_head, ino_head, uid, ACCESS_MMAP, sockets, netdev);
+ check_dir(pid, "mmap", dev_head, ino_head, uid, ACCESS_MMAP, sockets, netdev);
+#endif
- check_dir(pid, "fd", dev_head, ino_head, uid, ACCESS_FILE);
+ check_dir(pid, "fd", dev_head, ino_head, uid, ACCESS_FILE, sockets, netdev);
check_map(pid, "maps", dev_head, ino_head, uid, ACCESS_MMAP);
-@@ -325,10 +363,26 @@ int parse_mount(struct names *this_name,
+@@ -325,10 +364,26 @@ int parse_mount(struct names *this_name,
return 0;
}
@@ -187,7 +188,7 @@
if (stat(this_name->filename, &st) != 0) {
fprintf(stderr,_("Cannot stat %s: %s\n"), this_name->filename,
strerror(errno));
-@@ -342,34 +396,44 @@ int parse_file(struct names *this_name,
+@@ -342,34 +397,44 @@ int parse_file(struct names *this_name,
return 0;
}
@@ -239,7 +240,7 @@
if (stat(this_name->filename, &st) != 0) {
fprintf(stderr,_("Cannot stat %s: %s\n"), this_name->filename,
-@@ -388,6 +452,16 @@ int parse_mounts(struct names *this_name
+@@ -388,6 +453,16 @@ int parse_mounts(struct names *this_name
}
}
return 0;
@@ -256,7 +257,7 @@
}
#ifdef WITH_IPV6
-@@ -652,6 +726,150 @@ void find_net6_sockets(struct inode_list
+@@ -652,6 +727,150 @@ void find_net6_sockets(struct inode_list
}
#endif
@@ -407,7 +408,7 @@
int main(int argc, char *argv[])
{
opt_type opts;
-@@ -676,6 +894,7 @@ int main(int argc, char *argv[])
+@@ -676,6 +895,7 @@ int main(int argc, char *argv[])
int optc;
char *option;
char *nsptr;
@@ -415,7 +416,7 @@
#ifdef WITH_IPV6
ipv4_only = ipv6_only = 0;
-@@ -692,7 +911,6 @@ int main(int argc, char *argv[])
+@@ -692,7 +912,6 @@ int main(int argc, char *argv[])
#endif
netdev = find_net_dev();
@@ -423,7 +424,7 @@
fill_unix_cache(&unixsockets);
/* getopt doesnt like things like -SIGBLAH */
-@@ -782,6 +1000,10 @@ int main(int argc, char *argv[])
+@@ -782,6 +1001,10 @@ int main(int argc, char *argv[])
}
continue;
}
@@ -434,7 +435,7 @@
/* File specifications */
if ( (this_name = malloc(sizeof(struct names))) == NULL)
continue;
-@@ -828,10 +1050,14 @@ int main(int argc, char *argv[])
+@@ -828,10 +1051,14 @@ int main(int argc, char *argv[])
break;
default: /* FILE */
this_name->filename = strdup(argv[optc]);
@@ -452,31 +453,12 @@
break;
}
-@@ -857,25 +1083,26 @@ int main(int argc, char *argv[])
- if (!ipv4_only) {
- #endif
- if (tcp_connection_list != NULL)
-- find_net_sockets(&match_inodes, tcp_connection_list, "tcp",netdev);
-+ find_net_sockets(&match_inodes, tcp_connection_list, "tcp", netdev);
- if (udp_connection_list != NULL)
-- find_net_sockets(&match_inodes, udp_connection_list, "udp",netdev);
-+ find_net_sockets(&match_inodes, udp_connection_list, "udp", netdev);
- #ifdef WITH_IPV6
- }
- if (!ipv6_only) {
- if (tcp6_connection_list != NULL)
-- find_net6_sockets(&match_inodes, tcp6_connection_list, "tcp",netdev);
-+ find_net6_sockets(&match_inodes, tcp6_connection_list, "tcp", netdev);
- if (udp6_connection_list != NULL)
-- find_net6_sockets(&match_inodes, udp6_connection_list, "udp",netdev);
-+ find_net6_sockets(&match_inodes, udp6_connection_list, "udp", netdev);
- }
- #endif
+@@ -872,10 +1099,11 @@ int main(int argc, char *argv[])
#ifdef DEBUG
debug_match_lists(names_head, match_inodes, match_devices);
#endif
-- scan_procs(names_head, match_inodes, match_devices);
-+ scan_procs(opts, names_head, match_inodes, match_devices);
+- scan_procs(names_head, match_inodes, match_devices, unixsockets, netdev);
++ scan_procs(opts, names_head, match_inodes, match_devices, unixsockets, netdev);
#ifdef NFS_CHECKS
scan_knfsd(names_head, match_devices);
#endif /* NFS_CHECKS */
@@ -484,7 +466,7 @@
return print_matches(names_head,opts, sig_number);
}
-@@ -978,7 +1205,7 @@ static int print_matches(struct names *n
+@@ -978,7 +1206,7 @@ static int print_matches(struct names *n
}
@@ -493,7 +475,7 @@
{
char pathname[256];
struct stat *st;
-@@ -986,6 +1213,10 @@ static struct stat *get_pidstat(const pi
+@@ -986,6 +1214,10 @@ static struct stat *get_pidstat(const pi
if ( (st = malloc(sizeof(struct stat))) == NULL)
return NULL;
snprintf(pathname, 256, "/proc/%d/%s", pid, filename);
@@ -504,23 +486,16 @@
if (stat(pathname, st) != 0)
return NULL;
else
-@@ -1012,13 +1243,14 @@ static void check_dir(const pid_t pid, c
- while ( (direntry = readdir(dirp)) != NULL) {
- if (direntry->d_name[0] < '0' || direntry->d_name[0] > '9')
- continue;
--
- snprintf(filepath, MAX_PATHNAME, "/proc/%d/%s/%s",
- pid, dirname, direntry->d_name);
- if (stat(filepath, &st) != 0) {
- fprintf(stderr, _("Cannot stat file %s: %s\n"),filepath, strerror(errno));
- } else {
+@@ -1030,6 +1262,8 @@ static void check_dir(const pid_t pid, c
+ }
+ }
for (dev_tmp = dev_head ; dev_tmp != NULL ; dev_tmp = dev_tmp->next) {
+ if (dev_tmp->name->name_space & NAMESPACE_NFS)
+ continue;
if (st.st_dev == dev_tmp->device) {
if (access == ACCESS_FILE && (lstat(filepath, &lst)==0) && (lst.st_mode & S_IWUSR)) {
add_matched_proc(dev_tmp->name, pid,uid, ACCESS_FILEWR|access);
-@@ -1028,6 +1260,8 @@ static void check_dir(const pid_t pid, c
+@@ -1039,6 +1273,8 @@ static void check_dir(const pid_t pid, c
}
}
for (ino_tmp = ino_head ; ino_tmp != NULL ; ino_tmp = ino_tmp->next) {
@@ -529,7 +504,7 @@
if (st.st_dev == ino_tmp->device && st.st_ino == ino_tmp->inode) {
if (access == ACCESS_FILE && (lstat(filepath, &lst)==0) && (lst.st_mode & S_IWUSR)) {
add_matched_proc(ino_tmp->name, pid,uid, ACCESS_FILEWR|access);
-@@ -1039,6 +1273,8 @@ static void check_dir(const pid_t pid, c
+@@ -1050,6 +1286,8 @@ static void check_dir(const pid_t pid, c
}
} /* while fd_dent */
closedir(dirp);
@@ -538,7 +513,7 @@
}
static void check_map(const pid_t pid, const char *filename, struct device_list *dev_head, struct inode_list *ino_head, const uid_t uid, const char access)
-@@ -1059,12 +1295,18 @@ static void check_map(const pid_t pid, c
+@@ -1070,12 +1308,18 @@ static void check_map(const pid_t pid, c
if (sscanf(line, "%*s %*s %*s %x:%x %lld",
&tmp_maj, &tmp_min, &tmp_inode) == 3) {
tmp_device = tmp_maj * 256 + tmp_min;
@@ -559,7 +534,7 @@
}
}
fclose(fp);
-@@ -1135,6 +1377,16 @@ void fill_unix_cache(struct unixsocket_l
+@@ -1146,6 +1390,16 @@ void fill_unix_cache(struct unixsocket_l
}
@@ -576,7 +551,7 @@
/*
* scan_mount_devices : Create a list of mount points and devices
* This list is used later for matching purposes
-@@ -1144,17 +1396,94 @@ void scan_mount_devices(const opt_type o
+@@ -1155,17 +1409,94 @@ void scan_mount_devices(const opt_type o
FILE *mntfp;
struct mntent *mnt_ptr;
struct stat st;
@@ -673,7 +648,7 @@
}
#ifdef DEBUG
-@@ -1280,3 +1609,56 @@ static void scan_knfsd(struct names *nam
+@@ -1291,3 +1622,56 @@ static void scan_knfsd(struct names *nam
}
}
#endif /* NFSCHECKS */
@@ -731,7 +706,7 @@
+ return -1;
+}
--- src/fuser.h
-+++ src/fuser.h 2009-03-27 13:23:36.136000974 +0100
++++ src/fuser.h 2009-03-27 13:23:36.000000000 +0100
@@ -80,9 +80,33 @@ struct unixsocket_list {
struct unixsocket_list *next;
};
++++++ psmisc-22.5-pstree.patch -> psmisc-22.7-pstree.patch ++++++
--- psmisc/psmisc-22.5-pstree.patch 2007-04-26 15:43:50.000000000 +0200
+++ psmisc/psmisc-22.7-pstree.patch 2009-05-11 14:05:39.000000000 +0200
@@ -1,57 +1,14 @@
--- src/pstree.c
-+++ src/pstree.c 2007-04-25 00:00:00.000000000 +0200
-@@ -63,6 +63,7 @@ extern const char *__progname;
++++ src/pstree.c 2009-05-11 13:32:34.749902293 +0200
+@@ -60,6 +60,7 @@ extern const char *__progname;
#define UTF_HD "\342\224\254" /* U+252C, Horizontal and down */
#define VT_BEG "\033(0\017" /* use graphic chars */
-+#define VT_BEG_LEN 4
++#define VT_LEN 4
#define VT_END "\033(B" /* back to normal char set */
#define VT_V "x" /* see UTF definitions above */
#define VT_VR "t"
-@@ -113,13 +114,21 @@ sym_ascii =
- UTF_VR UTF_H,
-
- UTF_V " ",
-- UTF_UR UTF_H, UTF_H UTF_H UTF_H, UTF_H UTF_HD UTF_H}, sym_vt100 =
-+ UTF_UR UTF_H, UTF_H UTF_H UTF_H, UTF_H UTF_HD UTF_H}
-+
-+, sym_vt100 =
-+/*
-+ * For the vt100 line drawing fix: Do not append VT_END here
-+ * because we may need to end the line drawing prematurely and
-+ * we have to turn off line drawing mode by sending VT_END
-+ * then anyway. That's why VT_END is sent by out_sym().
-+ */
- {
- " ",
-- VT_BEG VT_VR VT_H VT_END,
-- VT_BEG VT_V VT_END " ",
-- VT_BEG VT_UR VT_H VT_END,
-- VT_BEG VT_H VT_H VT_H VT_END, VT_BEG VT_H VT_HD VT_H VT_END}
-+ VT_BEG VT_VR VT_H,
-+ VT_BEG VT_V " ",
-+ VT_BEG VT_UR VT_H,
-+ VT_BEG VT_H VT_H VT_H, VT_BEG VT_H VT_HD VT_H}
-
- , *sym = &sym_ascii;
-
-@@ -144,9 +153,13 @@ out_char (char c)
- putchar (c);
- if (cur_x == output_width + 1 && trunc && ((c & 0xc0) != 0x80))
- {
-- if (last_char || (c & 0x80))
-+ if (last_char || (c & 0x80)) {
-+/*
-+ * pstree: UTF-8: never draw >1 '+' at end of line(no change for ASCII):
-+ */
-+ cur_x++;
- putchar ('+');
-- else
-+ } else
- {
- last_char = c;
- cur_x--;
-@@ -163,6 +176,26 @@ out_string (const char *str)
+@@ -220,6 +221,27 @@ out_string (const char *str)
out_char (*str++);
}
@@ -66,7 +23,7 @@
+ if (sym == &sym_vt100 && *str == '\033') {
+ seq = 1;
+ if (cur_x <= output_width || !trunc)
-+ cur_x -= VT_BEG_LEN;
++ cur_x -= VT_LEN;
+ }
+ out_string(str);
+ if (seq) {
@@ -75,23 +32,24 @@
+ putchar (*str++);
+ }
+}
++
static int
out_int (int x) /* non-negative integers only */
-@@ -379,7 +412,11 @@ dump_tree (PROC * current, int level, in
+@@ -431,7 +453,11 @@ dump_tree (PROC * current, int level, in
{
for (i = width[lvl] + 1; i; i--)
out_char (' ');
- out_string (lvl == level - 1 ? last ? sym->last_2 : sym->branch_2 :
-+ /*
-+ * Replace all three symbol-drawing calls with calls to out_sym()
-+ * to handle VT100 line drawing sequences if VT100 mode is active:
-+ */
++ /*
++ * Replace all three symbol-drawing calls with calls to out_sym()
++ * to handle VT100 line drawing sequences if VT100 mode is active:
++ */
+ out_sym (lvl == level - 1 ? last ? sym->last_2 : sym->branch_2 :
more[lvl + 1] ? sym->vert_2 : sym->empty_2);
}
if (rep < 2)
-@@ -489,7 +526,7 @@ dump_tree (PROC * current, int level, in
+@@ -543,7 +569,7 @@ dump_tree (PROC * current, int level, in
width[level] = comm_len + cur_x - offset + add;
if (cur_x >= output_width && trunc)
{
@@ -100,7 +58,7 @@
out_string ("+");
out_newline ();
}
-@@ -516,7 +553,7 @@ dump_tree (PROC * current, int level, in
+@@ -570,7 +596,7 @@ dump_tree (PROC * current, int level, in
}
if (first)
{
++++++ psmisc-22.6.tar.bz2 -> psmisc-22.7.tar.bz2 ++++++
++++ 20021 lines of diff (skipped)
++++++ psmisc-22.6-writeonly.patch -> psmisc-22.7-writeonly.patch ++++++
--- psmisc/psmisc-22.6-writeonly.patch 2008-08-07 15:52:03.000000000 +0200
+++ psmisc/psmisc-22.7-writeonly.patch 2009-05-11 14:05:41.000000000 +0200
@@ -1,13 +1,13 @@
--- doc/fuser.1
-+++ doc/fuser.1 2008-08-07 14:51:18.000000000 +0200
-@@ -10,6 +10,7 @@ fuser \- identify processes using files
++++ doc/fuser.1 2009-05-11 13:49:21.894401999 +0200
+@@ -11,6 +11,7 @@ fuser \- identify processes using files
.IR space\ ]
.RB [ \-k
.RB [ \-i ]
+.RB [ \-w ]
- .RB [ \- \fIsignal
+ .RB [ \- \fISIGNAL
] ]
- .RB [ \-muvf ]
+ .IR name " ..."
@@ -74,6 +75,9 @@ other \fBfuser\fP processes. The effecti
.IP \fB\-i\fP
Ask the user for confirmation before killing a process. This option is
@@ -19,8 +19,8 @@
List all known signal names.
.IP \fB\-m\fP
--- src/fuser.c
-+++ src/fuser.c 2008-08-07 15:49:28.714368021 +0200
-@@ -66,7 +66,7 @@ static void check_map(const pid_t pid, c
++++ src/fuser.c 2009-05-11 13:50:26.796428307 +0200
+@@ -69,7 +69,7 @@ static void check_map(const pid_t pid, c
static struct stat *get_pidstat(const opt_type opts, const pid_t pid, const char *filename, char *real);
static uid_t getpiduid(const pid_t pid);
static int print_matches(struct names *names_head, const opt_type opts, const int sig_number);
@@ -29,16 +29,16 @@
int parse_mount(struct names *this_name, struct device_list **dev_list);
static void add_device(struct device_list **dev_list, struct names *this_name, dev_t device);
-@@ -89,7 +89,7 @@ static void usage (const char *errormsg)
+@@ -97,7 +97,7 @@ static void usage (const char *errormsg)
fprintf(stderr, "%s\n", errormsg);
fprintf (stderr, _(
-- "Usage: fuser [ -a | -s | -c ] [ -n SPACE ] [ -SIGNAL ] [ -kimuv ] NAME...\n"
-+ "Usage: fuser [ -a | -s | -c ] [ -n SPACE ] [ -SIGNAL ] [ -kimuvw ] NAME...\n"
- " [ - ] [ -n SPACE ] [ -SIGNAL ] [ -kimuv ] NAME...\n"
+- "Usage: fuser [ -fuv ] [ -a | -s ] [ -4 | -6 ] [ -c | -m | -n SPACE ] [ -k [ -i ] [ -SIGNAL ]] NAME...\n"
++ "Usage: fuser [ -fuv ] [ -a | -s ] [ -4 | -6 ] [ -c | -m | -n SPACE ] [ -k [ -i ] [ -w ] [ -SIGNAL ]] NAME...\n"
" fuser -l\n"
" fuser -V\n"
-@@ -106,6 +106,7 @@ static void usage (const char *errormsg)
+ "Show which processes use the named files, sockets, or filesystems.\n\n"
+@@ -113,6 +113,7 @@ static void usage (const char *errormsg)
" -SIGNAL send this signal instead of SIGKILL\n"
" -u display user IDs\n"
" -v verbose output\n"
@@ -46,7 +46,7 @@
" -V display version information\n"));
#ifdef WITH_IPV6
fprintf (stderr, _(
-@@ -901,6 +902,9 @@ int main(int argc, char *argv[])
+@@ -982,6 +983,9 @@ int main(int argc, char *argv[])
case 'v':
opts |= OPT_VERBOSE;
break;
@@ -56,7 +56,7 @@
case 'V':
print_version();
return 0;
-@@ -1033,6 +1037,7 @@ static int print_matches(struct names *n
+@@ -1119,6 +1123,7 @@ static int print_matches(struct names *n
int len = 0;
struct passwd *pwent = NULL;
int have_match = 0;
@@ -64,7 +64,7 @@
for (nptr = names_head; nptr != NULL ; nptr = nptr->next) {
if (opts & OPT_SILENT) {
-@@ -1103,21 +1108,23 @@ static int print_matches(struct names *n
+@@ -1189,21 +1194,23 @@ static int print_matches(struct names *n
len = 0;
first = 0;
}
@@ -99,7 +99,7 @@
}
static struct stat *get_pidstat(const opt_type opts, const pid_t pid, const char *filename, char *real)
-@@ -1403,21 +1410,26 @@ static int ask(const pid_t pid)
+@@ -1562,21 +1569,26 @@ static int ask(const pid_t pid)
} /* while */
}
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package procps for openSUSE:Factory
checked in at Fri May 15 21:45:48 CEST 2009.
--------
--- procps/procps.changes 2009-03-11 15:54:17.000000000 +0100
+++ procps/procps.changes 2009-05-11 12:44:10.000000000 +0200
@@ -1,0 +2,24 @@
+Mon May 11 12:42:59 CEST 2009 - werner(a)suse.de
+
+- Update to procps-3.2.8
+ * ps: allow "+" in sort specifications, as in man page
+ * ps: recognize SCHED_ISO and SCHED_IDLE
+ * ps: document SCHED_BATCH and add a "see also" for stime
+ * ps: man page less ambiguous
+ * top: normal exit code should be 0
+ * top: misc fixes
+ * pgrep: usage error should exit with 2
+ * vmstat: use EXIT_FAILURE -- thanks Yoshio Nakamura
+ * sysctl: fix crash -- thanks Steinar Gunderson
+ * watch: tolerate umlauts
+ * pmap: range limits with -A low,high
+ * update /dev/tty* info to May 2009 devices.txt
+ * don't read off end of string const
+- Adapt our patches
+
+-------------------------------------------------------------------
+Fri May 8 15:51:36 CEST 2009 - werner(a)suse.de
+
+- top: shows correct values on 32bit arch (bnc#497544)
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
Old:
----
procps-3.2.3-buffersize.diff
procps-3.2.5-pmap-smaps-rml-2.patch
procps-3.2.7-glibc-2.6.1.dif
procps-3.2.7-manycpus.diff
procps-3.2.7-pgrep_coption.dif
procps-3.2.7-pmap.patch
procps-3.2.7-slab.patch
procps-3.2.7.tar.bz2
procps-3.2.7-toosmall.dif
New:
----
procps-3.2.8-buffersize.diff
procps-3.2.8-glibc-2.6.1.dif
procps-3.2.8-manycpus.diff
procps-3.2.8-pgrep_coption.dif
procps-3.2.8-pmap-smaps-rml-2.patch
procps-3.2.8-slab.patch
procps-3.2.8.tar.bz2
procps-3.2.8-toosmall.dif
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ procps.spec ++++++
--- /var/tmp/diff_new_pack.pX7566/_old 2009-05-15 21:39:23.000000000 +0200
+++ /var/tmp/diff_new_pack.pX7566/_new 2009-05-15 21:39:23.000000000 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package procps (Version 3.2.7)
+# spec file for package procps (Version 3.2.8)
#
# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
@@ -26,8 +26,8 @@
Group: System/Monitoring
PreReq: %fillup_prereq %insserv_prereq
AutoReqProv: on
-Version: 3.2.7
-Release: 152
+Version: 3.2.8
+Release: 1
Summary: ps utilities for /proc
Provides: ps
Obsoletes: ps
@@ -40,27 +40,26 @@
Patch2: procps-3.2.5-eof.diff
Patch3: procps-3.2.2-ia64.diff
Patch4: procps-3.2.7-stealtime.patch
-Patch6: procps-3.2.7-manycpus.diff
+Patch6: procps-3.2.8-manycpus.diff
Patch7: procps-3.2.2-w-notruncate.diff
Patch8: procps-3.2.2-w-simply-work.diff
Patch9: procps-3.2.7-top.1.diff
Patch10: procps-3.2.2-top-termsize.patch
-Patch11: procps-3.2.3-buffersize.diff
+Patch11: procps-3.2.8-buffersize.diff
Patch12: pwdx-bufferoverflow.diff
-Patch13: procps-3.2.5-pmap-smaps-rml-2.patch
-Patch14: procps-3.2.7-pmap.patch
+Patch13: procps-3.2.8-pmap-smaps-rml-2.patch
Patch15: procps-3.2.5-top-rc.patch
Patch16: procps-3.2.7-cpu_hotplug.patch
Patch17: procps-3.2.5-CPU-states.patch
Patch18: procps-3.2.7-readeof.patch
Patch19: procps-3.2.7-btime-from-proc-stat.patch
-Patch20: procps-3.2.7-glibc-2.6.1.dif
-Patch21: procps-3.2.7-slab.patch
+Patch20: procps-3.2.8-glibc-2.6.1.dif
+Patch21: procps-3.2.8-slab.patch
Patch22: procps-3.2.7-selinux.patch
Patch23: procps-3.2.7-accuracy.dif
-Patch24: procps-3.2.7-toosmall.dif
+Patch24: procps-3.2.8-toosmall.dif
Patch25: procps-3.2.7-cgroups_flag.diff
-Patch26: procps-3.2.7-pgrep_coption.dif
+Patch26: procps-3.2.8-pgrep_coption.dif
Patch27: procps-3.2.7-terabyte.dif
BuildRoot: %{_tmppath}/%{name}-%{version}-build
@@ -96,22 +95,21 @@
%patch2 -p1
%patch3 -p1
%patch4 -p0
-%patch6 -p1
+%patch6 -p0
%patch7 -p1
%patch8 -p1
%patch9 -p1
%patch10 -p1
-%patch11 -p1
+%patch11 -p0
%patch12 -p1
-%patch13 -p1
-%patch14 -p0
+%patch13 -p0
%patch15 -p1
%patch16 -p1
%patch17
%patch18
%patch19 -p1
%patch20
-%patch21 -p1
+%patch21 -p0
%patch22
%patch23
%patch24
@@ -183,6 +181,24 @@
%_mandir/man8/sysctl.8.gz
%changelog
+* Mon May 11 2009 werner(a)suse.de
+- Update to procps-3.2.8
+ * ps: allow "+" in sort specifications, as in man page
+ * ps: recognize SCHED_ISO and SCHED_IDLE
+ * ps: document SCHED_BATCH and add a "see also" for stime
+ * ps: man page less ambiguous
+ * top: normal exit code should be 0
+ * top: misc fixes
+ * pgrep: usage error should exit with 2
+ * vmstat: use EXIT_FAILURE -- thanks Yoshio Nakamura
+ * sysctl: fix crash -- thanks Steinar Gunderson
+ * watch: tolerate umlauts
+ * pmap: range limits with -A low,high
+ * update /dev/tty* info to May 2009 devices.txt
+ * don't read off end of string const
+- Adapt our patches
+* Fri May 08 2009 werner(a)suse.de
+- top: shows correct values on 32bit arch (bnc#497544)
* Wed Mar 11 2009 werner(a)suse.de
- top: show MB in case of TB of physical memory (bnc#484271)
* Mon Feb 09 2009 werner(a)suse.de
@@ -598,7 +614,7 @@
- ran old prepare_spec on spec file to switch to new prepare_spec.
* Tue Sep 07 1999 werner(a)suse.de
- Avoid SEGV if /proc isn't mounted (e.g. in single user mode)
-* Mon Sep 06 1999 werner(a)suse.de
+* Tue Sep 07 1999 werner(a)suse.de
- Fix some maunal page (missed tbl mark, some nasty .TH's)
* Wed Aug 18 1999 werner(a)suse.de
- Update procinfo (ver 17), procps (ver 2.0.2) but hold
++++++ procps-3.2.7-terabyte.dif ++++++
--- /var/tmp/diff_new_pack.pX7566/_old 2009-05-15 21:39:23.000000000 +0200
+++ /var/tmp/diff_new_pack.pX7566/_new 2009-05-15 21:39:23.000000000 +0200
@@ -6,7 +6,7 @@
+ /* Show memory by default as kB */
+static int shift = 10;
-+#define S(X) (((unsigned long long)(X)<<10)>>shift)
++#define S(X) (unsigned long)(((unsigned long long)(X)<<10)>>shift)
+
// This is the select() timeout. Clear it in sig handlers to avoid a race.
// (signal happens just as we are about to select() and thus does not
++++++ procps-3.2.3-buffersize.diff -> procps-3.2.8-buffersize.diff ++++++
--- procps/procps-3.2.3-buffersize.diff 2006-02-20 11:59:48.000000000 +0100
+++ procps/procps-3.2.8-buffersize.diff 2009-05-11 12:43:56.000000000 +0200
@@ -1,10 +1,10 @@
---- procps-3.2.5/proc/sysinfo.c
-+++ procps-3.2.5/proc/sysinfo.c
-@@ -43,7 +43,7 @@
- #define VMINFO_FILE "/proc/vmstat"
- static int vminfo_fd = -1;
+--- proc/sysinfo.c
++++ proc/sysinfo.c 2009-05-11 11:18:28.142402352 +0200
+@@ -45,7 +45,7 @@ static int vminfo_fd = -1;
--static char buf[1024];
+ // As of 2.6.24 /proc/meminfo seems to need 888 on 64-bit,
+ // and would need 1258 if the obsolete fields were there.
+-static char buf[2048];
+static char buf[4096];
/* This macro opens filename only if necessary and seeks to 0 so
++++++ procps-3.2.7-glibc-2.6.1.dif -> procps-3.2.8-glibc-2.6.1.dif ++++++
--- procps/procps-3.2.7-glibc-2.6.1.dif 2008-02-14 12:04:47.000000000 +0100
+++ procps/procps-3.2.8-glibc-2.6.1.dif 2009-05-11 12:43:57.000000000 +0200
@@ -1,5 +1,5 @@
--- sysctl.c
-+++ sysctl.c 2008-02-14 12:04:35.540780685 +0100
++++ sysctl.c 2008-02-14 12:04:36.000000000 +0100
@@ -128,6 +128,7 @@ static int ReadSetting(const char *restr
char *restrict outname;
char inbuf[1025];
@@ -8,15 +8,6 @@
if (!name || !*name) {
fprintf(stderr, ERR_INVALID_KEY, name);
-@@ -135,7 +136,7 @@ static int ReadSetting(const char *restr
- }
-
- /* used to open the file */
-- tmpname = malloc(strlen(name)+strlen(PROC_PATH)+1);
-+ tmpname = malloc(strlen(name)+strlen(PROC_PATH)+2);
- strcpy(tmpname, PROC_PATH);
- strcat(tmpname, name);
- slashdot(tmpname+strlen(PROC_PATH),'.','/'); /* change . to / */
@@ -144,6 +145,23 @@ static int ReadSetting(const char *restr
outname = strdup(name);
slashdot(outname,'/','.'); /* change / to . */
++++++ procps-3.2.7-manycpus.diff -> procps-3.2.8-manycpus.diff ++++++
--- procps/procps-3.2.7-manycpus.diff 2006-06-26 17:02:25.000000000 +0200
+++ procps/procps-3.2.8-manycpus.diff 2009-05-11 12:43:59.000000000 +0200
@@ -1,6 +1,6 @@
---- procps-3.2.7/top.c
-+++ procps-3.2.7/top.c 2006-06-26 16:26:56.000000000 +0200
-@@ -2480,21 +2480,21 @@
+--- top.c
++++ top.c 2009-05-11 11:14:53.402401350 +0200
+@@ -2489,21 +2489,21 @@ static void do_key (unsigned c)
static const char err_num_cpus[] = "\aSorry, terminal is not big enough";
#ifdef WARN_NOT_SMP
// standardized 'smp' errors
@@ -10,7 +10,7 @@
switch (c) {
case '1':
- if (Cpu_tot+7 > Screen_rows && !CHKw(Curwin, View_CPUSUM)) {
+ if (Cpu_tot+7 > Screen_rows && CHKw(Curwin, View_CPUSUM)) {
show_msg(err_num_cpus);
- break;
- }
@@ -21,7 +21,7 @@
#else
TOGw(Curwin, View_CPUSUM);
#endif
-+ }
++ }
break;
case 'a':
++++++ procps-3.2.7-pgrep_coption.dif -> procps-3.2.8-pgrep_coption.dif ++++++
--- procps/procps-3.2.7-pgrep_coption.dif 2008-12-15 17:53:07.000000000 +0100
+++ procps/procps-3.2.8-pgrep_coption.dif 2009-05-11 12:44:01.000000000 +0200
@@ -1,5 +1,5 @@
--- pgrep.1
-+++ pgrep.1 2007-10-05 22:36:42.000000000 +1000
++++ pgrep.1 2007-10-05 14:36:42.000000000 +0200
@@ -7,7 +7,7 @@
pgrep, pkill \- look up or signal processes based on name and other attributes
@@ -9,7 +9,7 @@
.br
[\-s \fIsid\fP,...] [\-u \fIeuid\fP,...] [\-U \fIuid\fP,...] [\-G \fIgid\fP,...]
.br
-@@ -38,6 +38,9 @@
+@@ -38,6 +38,9 @@ to each process instead of listing them
.SH OPTIONS
.TP
@@ -20,8 +20,8 @@
Sets the string used to delimit each process ID in the output (by
default a newline). (\fBpgrep\fP only.)
--- pgrep.c
-+++ pgrep.c 2007-10-05 22:35:52.000000000 +1000
-@@ -54,6 +54,7 @@
++++ pgrep.c 2009-05-11 12:38:44.945901308 +0200
+@@ -54,6 +54,7 @@ static int opt_oldest = 0;
static int opt_newest = 0;
static int opt_negate = 0;
static int opt_exact = 0;
@@ -29,16 +29,7 @@
static int opt_signal = SIGTERM;
static int opt_lock = 0;
static int opt_case = 0;
-@@ -77,7 +78,7 @@
- if (i_am_pkill)
- fprintf (stderr, "Usage: pkill [-SIGNAL] [-fvx] ");
- else
-- fprintf (stderr, "Usage: pgrep [-flvx] [-d DELIM] ");
-+ fprintf (stderr, "Usage: pgrep [-cflvx] [-d DELIM] ");
- fprintf (stderr, "[-n|-o] [-P PPIDLIST] [-g PGRPLIST] [-s SIDLIST]\n"
- "\t[-u EUIDLIST] [-U UIDLIST] [-G GIDLIST] [-t TERMLIST] "
- "[PATTERN]\n");
-@@ -562,7 +563,7 @@
+@@ -564,7 +565,7 @@ static void parse_opts (int argc, char *
strcat (opts, "ld:");
}
@@ -47,17 +38,17 @@
while ((opt = getopt (argc, argv, opts)) != -1) {
switch (opt) {
-@@ -610,6 +611,9 @@
+@@ -612,6 +613,9 @@ static void parse_opts (int argc, char *
exit(EXIT_SUCCESS);
// case 'c': // Solaris: match by contract ID
// break;
-+ case 'c':
-+ opt_count = 1;
-+ break;
++ case 'c':
++ opt_count = 1;
++ break;
case 'd': // Solaris: change the delimiter
opt_delim = strdup (optarg);
break;
-@@ -721,10 +725,14 @@
+@@ -723,10 +727,14 @@ int main (int argc, char *argv[])
procs[i].num, strerror (errno));
}
} else {
++++++ procps-3.2.5-pmap-smaps-rml-2.patch -> procps-3.2.8-pmap-smaps-rml-2.patch ++++++
--- procps/procps-3.2.5-pmap-smaps-rml-2.patch 2006-02-20 11:59:48.000000000 +0100
+++ procps/procps-3.2.8-pmap-smaps-rml-2.patch 2009-05-11 12:44:03.000000000 +0200
@@ -1,11 +1,6 @@
- pmap.1 | 76 +++++---
- pmap.c | 559 +++++++++++++++++++++++++++++------------------------------------
- 2 files changed, 297 insertions(+), 338 deletions(-)
-
-diff -urN procps-3.2.5/pmap.1 procps/pmap.1
---- procps-3.2.5/pmap.1 2005-10-11 14:49:20.000000000 -0400
-+++ procps/pmap.1 2005-10-12 10:39:28.000000000 -0400
-@@ -1,39 +1,57 @@
+--- pmap.1
++++ pmap.1 2009-05-11 12:14:59.377902682 +0200
+@@ -1,39 +1,60 @@
-'\" t
-.\" (The preceding line is a note to broken versions of man to tell
-.\" them to pre-process this man page with tbl)
@@ -27,7 +22,7 @@
-pmap [ -x | -d ] [ -q ] pids...
-pmap -V
-.fi
-+.BI "pmap [ \-d | \-q | \-h | \-V ] " pid
++.BI "pmap [ \-d | \-q | \-h | \-V | \-A\ low,high ] " pid
.SH DESCRIPTION
-The pmap command reports the memory map of a process or processes.
@@ -61,6 +56,9 @@
+.B\-d, \-\^\-device
+Display major and minor device numbers.
+.TP
++.B\-A, \-\-limit=low,high
++Limit results to the given range.
++.TP
+.B\-q, \-\^\-quiet
+Hide header and memory statistics.
+.TP
@@ -92,10 +90,9 @@
-to <procps-feedback(a)lists.sf.net>.
+The procps package is maintained by Albert Calahan. Please send
+bug reports to <albert(a)users.sf.net>.
-diff -urN procps-3.2.5/pmap.c procps/pmap.c
---- procps-3.2.5/pmap.c 2005-10-11 14:49:21.000000000 -0400
-+++ procps/pmap.c 2005-10-12 10:52:09.000000000 -0400
-@@ -1,331 +1,272 @@
+--- pmap.c
++++ pmap.c 2009-05-11 12:12:27.653901642 +0200
+@@ -1,372 +1,395 @@
/*
- * Copyright 2002 by Albert Cahalan; all rights reserved.
- * This file may be used subject to the terms and conditions of the
@@ -109,28 +106,32 @@
+ *
+ * Chris Rivera <chrismrivera(a)gmail.com>
+ * Robert Love <rml(a)novell.com>
++ * Werner Fink <werner(a)suse.de>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, v2, as
+ * published by the Free Software Foundation
+ *
+ * Copyright (C) 2003, 2005 Chris Rivera
++ * Copyright (C) 2009 Werner Fink
*/
#include <stdio.h>
++#include <stdint.h>
#include <stdlib.h>
-#include <ctype.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
#include <string.h>
--#include <unistd.h>
--
--#include <sys/ipc.h>
--#include <sys/shm.h>
+#include <errno.h>
+#include <getopt.h>
++#include <sys/utsname.h>
+ #include <unistd.h>
+-#include <sys/ipc.h>
+-#include <sys/shm.h>
+-
#include "proc/readproc.h"
#include "proc/version.h"
-#include "proc/escape.h"
@@ -138,15 +139,19 @@
-static void usage(void) NORETURN;
-static void usage(void){
- fprintf(stderr,
-- "Usage: pmap [-x | -d] [-q] pid...\n"
+- "Usage: pmap [-x | -d] [-q] [-A low,high] pid...\n"
- "-x show details\n"
- "-d show offset and device number\n"
- "-q quiet; less header/footer info\n"
- "-V show the version number\n"
+- "-A limit results to the given range\n"
- );
- exit(1);
-}
-
+-
+-static unsigned KLONG range_low;
+-static unsigned KLONG range_high = ~0ull;
-static int V_option;
-static int r_option; // ignored -- for SunOS compatibility
@@ -154,7 +159,6 @@
-static int d_option;
-static int q_option;
-
--
-static unsigned shm_minor = ~0u;
-
-static void discover_shm_minor(void){
@@ -194,24 +198,39 @@
- }
- }
+#define BUFFERSIZE 4096
-+#define OBJECTSIZE 128
++#define OBJECTSIZE 1024
- if(shmdt(addr)) perror("shmdt");
+-
+-out_destroy:
+- if(shmctl(shmid, IPC_RMID, NULL)) perror("IPC_RMID");
+struct smap {
+ unsigned long size;
+ unsigned long rss;
++ unsigned long pss;
+ unsigned long shared_clean;
+ unsigned long shared_dirty;
+ unsigned long private_clean;
+ unsigned long private_dirty;
++ unsigned long referenced;
++ unsigned long swap;
+};
+
++static unsigned long long range_low;
++static unsigned long long range_high = ~0ULL;
+static unsigned long mapped;
+static unsigned long shared;
+static unsigned long private;
+static unsigned long rss;
++static unsigned long pss;
+static unsigned long dirty;
++static unsigned long referenced;
++static unsigned long swap;
+static FILE *smaps_fp;
++static int maj, min, patch, dopss, noref, doswap;
++static long lbits;
++#define BLK ((lbits==64)?" ":"")
++#define WDT ((lbits==64)?16:8)
+
+static void usage(const char *cmd)
+{
@@ -220,14 +239,15 @@
+ "display offset and device numbers\n");
+ fprintf(stderr, " -q, --quiet "
+ "hide header and memory statistics\n");
++ fprintf(stderr, " -A, --limit=low,high "
++ "limit results to the given range\n");
+ fprintf(stderr, " -V, --version "
+ "display version information\n");
+ fprintf(stderr, " -h, --help "
+ "display this help\n");
+}
--out_destroy:
-- if(shmctl(shmid, IPC_RMID, NULL)) perror("IPC_RMID");
+- return;
+static int get_smap_data(struct smap *smap)
+{
+ unsigned long long data;
@@ -261,6 +281,18 @@
+ smap->rss = data;
+ rss += data;
+
++ if (dopss) {
++ /* get pss */
++ if (!fgets(buff, BUFFERSIZE, smaps_fp))
++ return 1;
++
++ assigned = sscanf(buff, "Pss: %lld", &data);
++ if (assigned != 1)
++ return 1;
++ smap->pss = data;
++ pss += data;
++ }
++
+ /* get shared clean */
+ if (!fgets(buff, BUFFERSIZE, smaps_fp))
+ return 1;
@@ -298,8 +330,33 @@
+ return 1;
+ smap->private_dirty = data;
+ dirty += data;
-
-- return;
++
++ if (noref)
++ goto out;
++
++ /* get referenced */
++ if (!fgets(buff, BUFFERSIZE, smaps_fp))
++ return 1;
++
++ assigned = sscanf(buff, "Referenced: %lld", &data);
++ if (assigned != 1)
++ return 1;
++ smap->referenced = data;
++ referenced += data;
++
++ if (!doswap)
++ goto out;
++
++ /* get swap */
++ if (!fgets(buff, BUFFERSIZE, smaps_fp))
++ return 1;
++
++ assigned = sscanf(buff, "Swap: %lld", &data);
++ if (assigned != 1)
++ return 1;
++ smap->swap = data;
++ swap += data;
++out:
+ return 0;
}
@@ -307,7 +364,7 @@
+{
+ unsigned long long low, high, size, offset;
+ unsigned long major, minor;
-+ struct smap smap = { .rss = 0 };
++ struct smap smap = { .rss = 0, .pss = 0 };
+ int assigned;
+ char read_perm, write_perm, exec_perm, access_type;
+ char obj_buff[OBJECTSIZE] = "[anon]";
@@ -336,16 +393,26 @@
+ else if (access_type == 'p' && write_perm == 'w')
+ private += size;
+
-+ printf("%08llx %6lluK ", low, size);
++ if(low > range_high)
++ return;
++ if(high < range_low)
++ return;
++
++ printf("%0*llx %6lluK ", WDT, low, size);
+
+ if (smaps_fp) {
+ printf("%6luK ", smap.rss);
++ if (dopss)
++ printf("%6luK ", smap.pss);
+ printf("%6luK ", smap.private_dirty + smap.shared_dirty);
++ if (doswap)
++ printf("%6luK ", smap.swap);
+ }
-static const char *mapping_name(proc_t *p, unsigned KLONG addr, unsigned KLONG len, const char *mapbuf, unsigned showpath, unsigned dev_major, unsigned dev_minor, unsigned long long inode){
- const char *cp;
--
++ printf("%c%c%c%c ", read_perm, write_perm, exec_perm, access_type);
+
- if(!dev_major && dev_minor==shm_minor && strstr(mapbuf,"/SYSV")){
- static char shmbuf[64];
- snprintf(shmbuf, sizeof shmbuf, " [ shmid=0x%Lx ]", inode);
@@ -368,7 +435,8 @@
- if( (p->start_stack >= addr) && (p->start_stack <= addr+len) ) cp = " [ stack ]";
- return cp;
-}
-+ printf("%c%c%c%c ", read_perm, write_perm, exec_perm, access_type);
++ if (show_devices)
++ printf("%0*llx %02lx:%02lx ", WDT, offset, major, minor);
-static int one_proc(proc_t *p){
- char buf[32];
@@ -406,6 +474,12 @@
- unsigned long long file_offset, inode;
- unsigned dev_major, dev_minor;
- sscanf(mapbuf,"%"KLF"x-%"KLF"x %31s %Lx %x:%x %Lu", &start, &end, flags, &file_offset, &dev_major, &dev_minor, &inode);
+-
+- if(start > range_high)
+- break;
+- if(end < range_low)
+- continue;
+-
- tmp = strchr(mapbuf,'\n');
- if(tmp) *tmp='\0';
- tmp = mapbuf;
@@ -468,6 +542,9 @@
-
- }
-
+-
+-
+-
- if(!q_option){
- if(x_option){
- if(sizeof(KLONG)==8){
@@ -497,9 +574,7 @@
- else printf(" total %8ldK\n", (total_shared + total_private_writeable + total_private_readonly) >> 10);
- }
- }
-+ if (show_devices)
-+ printf("%08llx %02lx:%02lx ", offset, major, minor);
-
+-
- return 0;
+ printf("%s\n", obj_buff);
}
@@ -511,17 +586,37 @@
+ char path[PATH_MAX];
+ char buff[BUFFERSIZE];
+ int o, show_devices = 0, quiet = 0;
++ struct utsname uts;
+ pid_t pid;
+
++ if (uname(&uts) < 0) {
++ fprintf(stderr, "error getting information about current kernel: %m\n");
++ exit(EXIT_FAILURE);
++ }
++ sscanf(uts.release, "%d.%d.%d", &maj, &min, &patch);
++
++ if ((maj > 2) || ((maj == 2) && ((min > 6) || ((min == 6) && (patch >= 27)))))
++ doswap++;
++ if ((maj > 2) || ((maj == 2) && ((min > 6) || ((min == 6) && (patch >= 25)))))
++ dopss++;
++ if ((maj < 2) || ((maj == 2) && ((min < 6) || ((min == 6) && (patch < 22)))))
++ noref++;
++
++ if ((lbits = sysconf(_SC_LONG_BIT)) < 0) {
++ fprintf(stderr, "error getting information about current kernel: %m\n");
++ exit(EXIT_FAILURE);
++ }
++
+ struct option longopts[] = {
+ { "help", 0, NULL, 'h' },
+ { "version", 0, NULL, 'V' },
+ { "quiet", 0, NULL, 'q' },
+ { "device", 0, NULL, 'd' },
++ { "limit", 0, NULL, 'A' },
+ { NULL, 0, NULL, 0 }
+ };
+
-+ while ((o = getopt_long(argc, argv, "hqdV", longopts, NULL)) != -1) {
++ while ((o = getopt_long(argc, argv, "hqdA:V", longopts, NULL)) != -1) {
+ switch (o) {
+ case 'V':
+ display_version();
@@ -532,6 +627,27 @@
+ case 'd':
+ show_devices = 1;
+ break;
++ case 'A':
++ if (!optarg || *optarg == 0) {
++ usage(argv[0]);
++ return 1;
++ } else {
++ char *low = optarg;
++ char *high = strchr(low, ',');
++ if (high) {
++ *high = '\0';
++ high++;
++ }
++ if (low)
++ range_low = strtoull(low, &low, 16);
++ if (high)
++ range_high = strtoull(high, &high, 16);
++ if (*low || *high) {
++ usage(argv[0]);
++ return 1;
++ }
++ }
++ break;
+ case 'h':
+ usage(argv[0]);
+ return 0;
@@ -572,11 +688,15 @@
+ smaps_fp = fopen(path, "r");
+
+ if (!quiet) {
-+ printf("START SIZE ");
++ printf("START%s SIZE ", BLK);
+
+ if (smaps_fp) {
+ printf(" RSS ");
++ if (dopss)
++ printf(" PSS ");
+ printf(" DIRTY ");
++ if (doswap)
++ printf(" SWAP ");
+ }
+
+ if (show_devices)
@@ -589,13 +709,25 @@
+ parse_line(pid, buff, show_devices);
+
+ if (!quiet) {
-+ if (smaps_fp)
-+ printf("Total: %6luK %6luK %6luK\n\n", mapped, rss, dirty);
-+ else
++ if (smaps_fp) {
++ printf("Total:%s ", BLK);
++ printf(" %6luK", mapped);
++ printf(" %6luK", rss);
++ if (dopss)
++ printf(" %6luK", pss);
++ printf(" %6luK", dirty);
++ if (doswap)
++ printf(" %6luK", swap);
++ printf("\n\n");
++ } else
+ printf("mapped: %luK ", mapped);
+
-+ printf("%luK writable-private, %luK readonly-private, and %luK shared\n",
-+ private, mapped - private - shared, shared);
++ if (noref)
++ printf("%luK writable-private, %luK readonly-private, and %luK shared\n",
++ private, mapped - private - shared, shared);
++ else
++ printf("%luK writable-private, %luK readonly-private, %luK shared, and %luK referenced\n",
++ private, mapped - private - shared, shared, referenced);
+ }
-int main(int argc, char *argv[]){
@@ -633,6 +765,35 @@
- case 'q':
- q_option++;
- break;
+- case 'A':{
+- char *arg1;
+- if(walk[1]){
+- arg1 = walk+1;
+- walk += strlen(walk)-1;
+- }else{
+- arg1 = *++argv;
+- if(!arg1)
+- usage();
+- }
+- char *arg2 = strchr(arg1,',');
+- if(arg2)
+- *arg2 = '\0';
+- arg2 = arg2 ? arg2++ : arg1;
+-
+- if(*arg1)
+- range_low = STRTOUKL(arg1,&arg1,16);
+- if(*arg2)
+- range_high = STRTOUKL(arg2,&arg2,16);
+- if(*arg1 || *arg2)
+- usage();
+- }
+- break;
+- case 'a': // Sun prints anon/swap reservations
+- case 'F': // Sun forces hostile ptrace-like grab
+- case 'l': // Sun shows unresolved dynamic names
+- case 'L': // Sun shows lgroup info
+- case 's': // Sun shows page sizes
+- case 'S': // Sun shows swap reservations
- default:
- usage();
- }
++++++ procps-3.2.7-slab.patch -> procps-3.2.8-slab.patch ++++++
--- procps/procps-3.2.7-slab.patch 2008-07-10 18:23:35.000000000 +0200
+++ procps/procps-3.2.8-slab.patch 2009-05-11 12:44:05.000000000 +0200
@@ -13,74 +13,58 @@
| Bart.
|
|
---- procps-3.2.7/proc/library.map
-+++ procps-3.2.7/proc/library.map 2008-03-08 10:17:01.000000000 +0100
-@@ -18,6 +18,8 @@
+--- proc/library.map
++++ proc/library.map 2009-05-11 12:30:56.561900807 +0200
+@@ -18,6 +18,8 @@ global:
kb_main_free; kb_main_total; kb_main_used; kb_swap_free;
kb_swap_total; kb_swap_used; kb_main_shared;
kb_low_total; kb_low_free; kb_high_total; kb_high_free;
-+ kb_swap_cached; kb_anon_pages; kb_bounce; kb_nfs_unstable;
-+ kb_slab_reclaimable; kb_slab_unreclaimable;
++ kb_swap_cached; kb_anon_pages; kb_bounce; kb_commit_limit;
++ kb_nfs_unstable; kb_swap_reclaimable; kb_swap_unreclaimable;
vm_pgpgin; vm_pgpgout; vm_pswpin; vm_pswpout;
free_slabinfo; put_slabinfo; get_slabinfo; get_proc_stats;
local: *;
---- procps-3.2.7/proc/sysinfo.c
-+++ procps-3.2.7/proc/sysinfo.c 2008-03-08 10:30:14.000000000 +0100
+--- proc/sysinfo.c
++++ proc/sysinfo.c 2009-05-11 12:32:54.873901042 +0200
@@ -8,6 +8,8 @@
// File for parsing top-level /proc entities. */
//
// June 2003, Fabian Frederick, disk and slab info
+// Copyright (c) 2003 Fabian Frederick.
+// Copyright (c) 2008 Bart Van Assche.
-
+
#include <stdio.h>
#include <stdlib.h>
-@@ -503,6 +505,11 @@
- unsigned long kb_swap_free;
- unsigned long kb_swap_total;
- /* recently introduced */
+@@ -560,12 +562,12 @@ static unsigned long kb_vmalloc_chunk;
+ static unsigned long kb_vmalloc_total;
+ static unsigned long kb_vmalloc_used;
+ // seen on 2.6.24-rc6-git12
+-static unsigned long kb_anon_pages;
+-static unsigned long kb_bounce;
+-static unsigned long kb_commit_limit;
+-static unsigned long kb_nfs_unstable;
+-static unsigned long kb_swap_reclaimable;
+-static unsigned long kb_swap_unreclaimable;
+unsigned long kb_anon_pages;
+unsigned long kb_bounce;
++unsigned long kb_commit_limit;
+unsigned long kb_nfs_unstable;
-+unsigned long kb_slab_reclaimable;
-+unsigned long kb_slab_unreclaimable;
- unsigned long kb_high_free;
- unsigned long kb_high_total;
- unsigned long kb_low_free;
-@@ -539,6 +546,8 @@
- char *tail;
- static const mem_table_struct mem_table[] = {
- {"Active", &kb_active}, // important
-+ {"AnonPages", &kb_anon_pages},
-+ {"Bounce", &kb_bounce},
- {"Buffers", &kb_main_buffers}, // important
- {"Cached", &kb_main_cached}, // important
- {"Committed_AS", &kb_committed_as},
-@@ -556,10 +565,13 @@
- {"MemFree", &kb_main_free}, // important
- {"MemShared", &kb_main_shared}, // important, but now gone!
- {"MemTotal", &kb_main_total}, // important
-+ {"NFS_Unstable", &kb_nfs_unstable},
- {"PageTables", &kb_pagetables}, // kB version of vmstat nr_page_table_pages
- {"ReverseMaps", &nr_reversemaps}, // same as vmstat nr_page_table_pages
- {"Slab", &kb_slab}, // kB version of vmstat nr_slab
- {"SwapCached", &kb_swap_cached},
-+ {"SReclaimable", &kb_slab_reclaimable},
-+ {"SUnreclaim", &kb_slab_unreclaimable},
- {"SwapFree", &kb_swap_free}, // important
- {"SwapTotal", &kb_swap_total}, // important
- {"VmallocChunk", &kb_vmalloc_chunk},
-@@ -603,6 +615,7 @@
++unsigned long kb_swap_reclaimable;
++unsigned long kb_swap_unreclaimable;
+
+ void meminfo(void){
+ char namebuf[16]; /* big enough to hold any row name */
+@@ -645,6 +647,7 @@ nextline:
}
kb_swap_used = kb_swap_total - kb_swap_free;
kb_main_used = kb_main_total - kb_main_free;
-+ kb_main_cached += kb_slab_reclaimable + kb_swap_cached + kb_nfs_unstable;
++ kb_main_cached += kb_swap_reclaimable + kb_swap_cached + kb_nfs_unstable;
}
-
+
/*****************************************************************/
---- procps-3.2.7/proc/sysinfo.h
-+++ procps-3.2.7/proc/sysinfo.h 2008-03-08 10:15:41.000000000 +0100
-@@ -30,6 +30,11 @@
+--- proc/sysinfo.h
++++ proc/sysinfo.h 2008-03-08 10:15:41.000000000 +0100
+@@ -31,6 +31,11 @@ extern unsigned long kb_main_total;
extern unsigned long kb_swap_free;
extern unsigned long kb_swap_total;
/* recently introduced */
++++++ procps-3.2.7.tar.bz2 -> procps-3.2.8.tar.bz2 ++++++
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/procps-3.2.7/Makefile new/procps-3.2.8/Makefile
--- old/procps-3.2.7/Makefile 2006-06-24 11:02:25.000000000 +0200
+++ new/procps-3.2.8/Makefile 2009-05-10 20:50:48.000000000 +0200
@@ -18,7 +18,7 @@
VERSION := 3
SUBVERSION := 2
-MINORVERSION := 7
+MINORVERSION := 8
TARVERSION := $(VERSION).$(SUBVERSION).$(MINORVERSION)
############ vars
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/procps-3.2.7/NEWS new/procps-3.2.8/NEWS
--- old/procps-3.2.7/NEWS 2006-06-25 08:43:15.000000000 +0200
+++ new/procps-3.2.8/NEWS 2009-05-10 21:45:02.000000000 +0200
@@ -1,3 +1,19 @@
+procps-3.2.7 --> procps-3.2.8
+
+ps: allow "+" in sort specifications, as in man page rh208217
+ps: recognize SCHED_ISO and SCHED_IDLE
+ps: document SCHED_BATCH and add a "see also" for stime
+ps: man page less ambiguous
+top: normal exit code should be 0 #341272 #354255 rh199174
+top: misc fixes
+pgrep: usage error should exit with 2 #413383
+vmstat: use EXIT_FAILURE -- thanks Yoshio Nakamura #425492
+sysctl: fix crash -- thanks Steinar Gunderson #423704
+watch: tolerate umlauts #207103
+pmap: range limits with -A low,high
+update /dev/tty* info to May 2009 devices.txt
+don't read off end of string const rh469495 rh498182
+
procps-3.2.6 --> procps-3.2.7
top: document H option -- thanks Tony Ernst
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/procps-3.2.7/pgrep.c new/procps-3.2.8/pgrep.c
--- old/procps-3.2.7/pgrep.c 2006-06-25 02:39:25.000000000 +0200
+++ new/procps-3.2.8/pgrep.c 2007-05-28 02:11:07.000000000 +0200
@@ -70,18 +70,21 @@
static char *opt_pattern = NULL;
static char *opt_pidfile = NULL;
-
static int usage (int opt) NORETURN;
static int usage (int opt)
{
+ int err = (opt=='?'); /* getopt() uses '?' to mark an error */
+ FILE *fp = err ? stderr : stdout;
+
if (i_am_pkill)
- fprintf (stderr, "Usage: pkill [-SIGNAL] [-fvx] ");
+ fprintf (fp, "Usage: pkill [-SIGNAL] [-fvx] ");
else
- fprintf (stderr, "Usage: pgrep [-flvx] [-d DELIM] ");
- fprintf (stderr, "[-n|-o] [-P PPIDLIST] [-g PGRPLIST] [-s SIDLIST]\n"
+ fprintf (fp, "Usage: pgrep [-flvx] [-d DELIM] ");
+ fprintf (fp, "[-n|-o] [-P PPIDLIST] [-g PGRPLIST] [-s SIDLIST]\n"
"\t[-u EUIDLIST] [-U UIDLIST] [-G GIDLIST] [-t TERMLIST] "
"[PATTERN]\n");
- exit (opt == '?' ? EXIT_SUCCESS : EXIT_USAGE);
+
+ exit(err ? EXIT_USAGE : EXIT_SUCCESS);
}
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/procps-3.2.7/pmap.c new/procps-3.2.8/pmap.c
--- old/procps-3.2.7/pmap.c 2005-01-11 02:41:30.000000000 +0100
+++ new/procps-3.2.8/pmap.c 2008-10-19 21:34:34.000000000 +0200
@@ -28,23 +28,26 @@
static void usage(void) NORETURN;
static void usage(void){
fprintf(stderr,
- "Usage: pmap [-x | -d] [-q] pid...\n"
+ "Usage: pmap [-x | -d] [-q] [-A low,high] pid...\n"
"-x show details\n"
"-d show offset and device number\n"
"-q quiet; less header/footer info\n"
"-V show the version number\n"
+ "-A limit results to the given range\n"
);
exit(1);
}
+static unsigned KLONG range_low;
+static unsigned KLONG range_high = ~0ull;
+
static int V_option;
static int r_option; // ignored -- for SunOS compatibility
static int x_option;
static int d_option;
static int q_option;
-
static unsigned shm_minor = ~0u;
static void discover_shm_minor(void){
@@ -155,6 +158,12 @@
unsigned long long file_offset, inode;
unsigned dev_major, dev_minor;
sscanf(mapbuf,"%"KLF"x-%"KLF"x %31s %Lx %x:%x %Lu", &start, &end, flags, &file_offset, &dev_major, &dev_minor, &inode);
+
+ if(start > range_high)
+ break;
+ if(end < range_low)
+ continue;
+
tmp = strchr(mapbuf,'\n');
if(tmp) *tmp='\0';
tmp = mapbuf;
@@ -217,6 +226,9 @@
}
+
+
+
if(!q_option){
if(x_option){
if(sizeof(KLONG)==8){
@@ -286,6 +298,35 @@
case 'q':
q_option++;
break;
+ case 'A':{
+ char *arg1;
+ if(walk[1]){
+ arg1 = walk+1;
+ walk += strlen(walk)-1;
+ }else{
+ arg1 = *++argv;
+ if(!arg1)
+ usage();
+ }
+ char *arg2 = strchr(arg1,',');
+ if(arg2)
+ *arg2 = '\0';
+ arg2 = arg2 ? arg2++ : arg1;
+
+ if(*arg1)
+ range_low = STRTOUKL(arg1,&arg1,16);
+ if(*arg2)
+ range_high = STRTOUKL(arg2,&arg2,16);
+ if(*arg1 || *arg2)
+ usage();
+ }
+ break;
+ case 'a': // Sun prints anon/swap reservations
+ case 'F': // Sun forces hostile ptrace-like grab
+ case 'l': // Sun shows unresolved dynamic names
+ case 'L': // Sun shows lgroup info
+ case 's': // Sun shows page sizes
+ case 'S': // Sun shows swap reservations
default:
usage();
}
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/procps-3.2.7/proc/devname.c new/procps-3.2.8/proc/devname.c
--- old/procps-3.2.7/proc/devname.c 2005-01-27 04:44:53.000000000 +0100
+++ new/procps-3.2.8/proc/devname.c 2009-05-03 08:39:54.000000000 +0200
@@ -22,6 +22,7 @@
// This is the buffer size for a tty name. Any path is legal,
// which makes PAGE_SIZE appropriate (see kernel source), but
// that is only 99% portable and utmp only holds 32 anyway.
+// We need at least 20 for guess_name().
#define TTY_NAME_SIZE 128
/* Who uses what:
@@ -45,10 +46,11 @@
typedef struct tty_map_node {
struct tty_map_node *next;
- unsigned major_number;
- unsigned minor_first, minor_last;
+ unsigned short devfs_type; // bool
+ unsigned short major_number;
+ unsigned minor_first;
+ unsigned minor_last;
char name[16];
- char devfs_type;
} tty_map_node;
static tty_map_node *tty_map = NULL;
@@ -65,7 +67,7 @@
if(bytes == -1) goto fail;
buf[bytes] = '\0';
p = buf;
- while(( p = strstr(p, " /dev/") )){
+ while(( p = strstr(p, " /dev/") )){ // " /dev/" is the second column
tty_map_node *tmn;
int len;
char *end;
@@ -82,7 +84,9 @@
len -= 2;
tmn->devfs_type = 1;
}
- strncpy(tmn->name, p, len);
+ if(len >= sizeof tmn->name)
+ len = sizeof tmn->name - 1; // mangle it to avoid overflow
+ memcpy(tmn->name, p, len);
p = end; /* set p to point past the %d as well if there is one */
while(*p == ' ') p++;
tmn->major_number = atoi(p);
@@ -130,7 +134,7 @@
}
// major 204 is a mess -- "Low-density serial ports"
-static const char low_density_names[][4] = {
+static const char low_density_names[][6] = {
"LU0", "LU1", "LU2", "LU3",
"FB0",
"SA0", "SA1", "SA2",
@@ -142,8 +146,48 @@
"SG0",
"SMX0", "SMX1", "SMX2",
"MM0", "MM1",
+"CPM0", "CPM1", "CPM2", "CPM3", /* "CPM4", "CPM5", */ // bad allocation?
+"IOC0", "IOC1", "IOC2", "IOC3", "IOC4", "IOC5", "IOC6", "IOC7",
+"IOC8", "IOC9", "IOC10", "IOC11", "IOC12", "IOC13", "IOC14", "IOC15",
+"IOC16", "IOC17", "IOC18", "IOC19", "IOC20", "IOC21", "IOC22", "IOC23",
+"IOC24", "IOC25", "IOC26", "IOC27", "IOC28", "IOC29", "IOC30", "IOC31",
+"VR0", "VR1",
+"IOC84", "IOC85", "IOC86", "IOC87", "IOC88", "IOC89", "IOC90", "IOC91",
+"IOC92", "IOC93", "IOC94", "IOC95", "IOC96", "IOC97", "IOC98", "IOC99",
+"IOC100", "IOC101", "IOC102", "IOC103", "IOC104", "IOC105", "IOC106", "IOC107",
+"IOC108", "IOC109", "IOC110", "IOC111", "IOC112", "IOC113", "IOC114", "IOC115",
+"SIOC0", "SIOC1", "SIOC2", "SIOC3", "SIOC4", "SIOC5", "SIOC6", "SIOC7",
+"SIOC8", "SIOC9", "SIOC10", "SIOC11", "SIOC12", "SIOC13", "SIOC14", "SIOC15",
+"SIOC16", "SIOC17", "SIOC18", "SIOC19", "SIOC20", "SIOC21", "SIOC22", "SIOC23",
+"SIOC24", "SIOC25", "SIOC26", "SIOC27", "SIOC28", "SIOC29", "SIOC30", "SIOC31",
+"PSC0", "PSC1", "PSC2", "PSC3", "PSC4", "PSC5",
+"AT0", "AT1", "AT2", "AT3", "AT4", "AT5", "AT6", "AT7",
+"AT8", "AT9", "AT10", "AT11", "AT12", "AT13", "AT14", "AT15",
+"NX0", "NX1", "NX2", "NX3", "NX4", "NX5", "NX6", "NX7",
+"NX8", "NX9", "NX10", "NX11", "NX12", "NX13", "NX14", "NX15",
+"J0", // minor is 186
+"UL0","UL1","UL2","UL3",
+"xvc0", // FAIL -- "/dev/xvc0" lacks "tty" prefix
+"PZ0","PZ1","PZ2","PZ3",
+"TX0","TX1","TX2","TX3","TX4","TX5","TX6","TX7",
+"SC0","SC1","SC2","SC3",
+"MAX0","MAX1","MAX2","MAX3",
};
+#if 0
+// test code
+#include <stdio.h>
+#define AS(x) (sizeof(x)/sizeof((x)[0]))
+int main(int argc, char *argv[]){
+ int i = 0;
+ while(i<AS(low_density_names)){
+ printf("%3d = /dev/tty%.*s\n",i,sizeof low_density_names[i],low_density_names[i]);
+ i++;
+ }
+ return 0;
+}
+#endif
+
/* Try to guess the device name (useful until /proc/PID/tty is added) */
static int guess_name(char *restrict const buf, unsigned maj, unsigned min){
struct stat sbuf;
@@ -151,22 +195,19 @@
unsigned tmpmin = min;
switch(maj){
- case 4:
- if(min<64){
- sprintf(buf, "/dev/tty%d", min);
- break;
- }
- if(min<128){ /* to 255 on newer systems */
- sprintf(buf, "/dev/ttyS%d", min-64);
- break;
- }
- tmpmin = min & 0x3f; /* FALL THROUGH */
case 3: /* /dev/[pt]ty[p-za-o][0-9a-z] is 936 */
if(tmpmin > 255) return 0; // should never happen; array index protection
t0 = "pqrstuvwxyzabcde"[tmpmin>>4];
t1 = "0123456789abcdef"[tmpmin&0x0f];
sprintf(buf, "/dev/tty%c%c", t0, t1);
break;
+ case 4:
+ if(min<64){
+ sprintf(buf, "/dev/tty%d", min);
+ break;
+ }
+ sprintf(buf, "/dev/ttyS%d", min-64);
+ break;
case 11: sprintf(buf, "/dev/ttyB%d", min); break;
case 17: sprintf(buf, "/dev/ttyH%d", min); break;
case 19: sprintf(buf, "/dev/ttyC%d", min); break;
@@ -195,13 +236,17 @@
case 188: sprintf(buf, "/dev/ttyUSB%d", min); break; /* bummer, 9-char */
case 204:
if(min >= sizeof low_density_names / sizeof low_density_names[0]) return 0;
- sprintf(buf, "/dev/tty%s", low_density_names[min]);
+ memcpy(buf,"/dev/tty",8);
+ memcpy(buf+8, low_density_names[min], sizeof low_density_names[0]);
+ buf[8 + sizeof low_density_names[0]] = '\0';
+// snprintf(buf, 9 + sizeof low_density_names[0], "/dev/tty%.*s", sizeof low_density_names[0], low_density_names[min]);
break;
case 208: sprintf(buf, "/dev/ttyU%d", min); break;
- case 216: sprintf(buf, "/dev/ttyUB%d", min); break;
+ case 216: sprintf(buf, "/dev/ttyUB%d", min); break; // "/dev/rfcomm%d" now?
case 224: sprintf(buf, "/dev/ttyY%d", min); break;
case 227: sprintf(buf, "/dev/3270/tty%d", min); break; /* bummer, HUGE */
case 229: sprintf(buf, "/dev/iseries/vtty%d", min); break; /* bummer, HUGE */
+ case 256: sprintf(buf, "/dev/ttyEQ%d", min); break;
default: return 0;
}
if(stat(buf, &sbuf) < 0) return 0;
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/procps-3.2.7/proc/smaps.c new/procps-3.2.8/proc/smaps.c
--- old/procps-3.2.7/proc/smaps.c 1970-01-01 01:00:00.000000000 +0100
+++ new/procps-3.2.8/proc/smaps.c 2008-10-20 10:53:06.000000000 +0200
@@ -0,0 +1,171 @@
+#if 0
+#include "procps.h"
+#include <fcntl.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <unistd.h>
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include "procps.h"
+
+struct smap_entry {
+ unsigned KLONG start;
+ unsigned KLONG beyond;
+ long long offset;
+ char flags[8];
+ unsigned dev_major;
+ unsigned dev_minor;
+ unsigned long long inode;
+
+ unsigned long rss;
+ unsigned long pss;
+ unsigned long sclean;
+ unsigned long sdirty;
+ unsigned long pclean;
+ unsigned long pdirty;
+ unsigned long ref;
+ unsigned long swap;
+};
+
+
+////////////////////////////////////////////////////////////////////////////////
+// This code will surely make normal programmers cry. I need speed though,
+// and /proc/*/smaps should make anybody cry. (WTF kind of brain damage...?)
+
+struct smap_summary {
+ unsigned long size;
+ unsigned long rss;
+ unsigned long pss;
+ unsigned long sclean;
+ unsigned long sdirty;
+ unsigned long pclean;
+ unsigned long pdirty;
+ unsigned long ref;
+ unsigned long swap;
+};
+
+struct ssjt {
+ char str[16];
+ int len;
+ int offset;
+};
+
+#define JTE(o,x) {#x,sizeof(#x)-1,o}
+
+void get_smap_sums(struct smap_summary *restrict ss, const char *restrict const filename){
+ static struct ssjt table[] = {
+ JTE(-1,default),
+ JTE( 1,Rss),
+ JTE(-1,default),
+ JTE( 2,Pss),
+ JTE( 8,Swap),
+ JTE( 5,Private_Clean),
+ JTE( 6,Private_Dirty),
+ JTE(-1,default),
+ JTE( 7,Referenced),
+ JTE(-1,default),
+ JTE( 0,Size),
+ JTE(-1,default),
+ JTE(-1,default),
+ JTE(-1,default),
+ JTE(-1,default),
+ JTE(-1,default), // KernelPageSize would go here
+ JTE(-1,default),
+ JTE(-1,default),
+ JTE( 4,Shared_Dirty),
+ JTE(-1,default),
+ JTE(-1,default),
+ JTE(-1,default),
+ JTE(-1,default),
+ JTE( 3,Shared_Clean),
+ JTE(-1,default),
+ JTE(-1,default),
+ JTE(-1,default),
+ JTE(-1,default),
+ JTE(-1,default),
+ JTE(-1,default),
+ JTE(-1,default),
+ JTE(-1,default),
+ };
+ char buf[20480];
+ int p1 = 0;
+ int p2 = 0;
+ memset(ss,0,sizeof *ss);
+ int fd = open(filename,O_RDONLY);
+ if(fd==-1)
+ return;
+ for(;;){
+ char *nlp = memchr(buf+p1,'\n',p2-p1);
+ if(!nlp){
+ if(p1){
+ // the memmove should never do anything, because the
+ // kernel seems to give us the greatest number of
+ // complete lines of text that fit in a single page
+ // (and thus p2-p1 is zero)
+ memmove(buf,buf+p1,p2-p1);
+ p2 -= p1;
+ p1 = 0;
+ }
+ ssize_t rb = read(fd,buf+p1,sizeof buf - p1);
+ if(rb < 1)
+ break;
+ p2 += rb;
+ nlp = memchr(buf+p1,'\n',p2-p1);
+ if(!nlp)
+ break;
+ }
+ char *s = buf+p1;
+ int len = nlp-s;
+ p1 += len+1;
+ if(len<27)
+ continue;
+//printf("j <%13.13s>\n",s);
+ if(s[0]<'A' || s[0]>'Z')
+ continue;
+ unsigned hash = ( (s[8]&15) + (s[1]&15) ) ^ (s[0]&3);
+ hash &= 31;
+//printf("x %2d <%13.13s>\n",hash,s);
+ if(s[table[hash].len] != ':')
+ continue;
+//printf("y %2d <%13.13s>\n",hash,s);
+ if(memcmp(table[hash].str,s,table[hash].len))
+ continue;
+//printf("z %2d <%13.13s>\n",hash,s);
+ s += table[hash].len;
+ while(*++s==' ')
+ ;
+ unsigned long ul = 0;
+ for(;;){
+ char c = *s++;
+ if(c != ' '){
+ ul *= 10;
+ ul += c-'0';
+ continue;
+ }
+ break;
+ }
+// if(table[hash].offset == 2)
+// printf("Pss:%20lu kB\n",ul);
+ unsigned long *ulp = &ss->size + table[hash].offset;
+ *ulp += ul;
+// memcpy(ss+table[hash].offset*sizeof(unsigned long), &ul, sizeof(unsigned long));
+ }
+ close(fd);
+}
+
+int main(int argc, char *argv[]){
+ struct smap_summary ss;
+ get_smap_sums(&ss, argv[1]);
+ printf("%9lu\n",ss.size);
+ printf("%9lu\n",ss.rss);
+ printf("%9lu\n",ss.pss);
+ printf("%9lu\n",ss.sclean);
+ printf("%9lu\n",ss.sdirty);
+ printf("%9lu\n",ss.pclean);
+ printf("%9lu\n",ss.pdirty);
+ printf("%9lu\n",ss.ref);
+ printf("%9lu\n",ss.swap);
+ return 0;
+}
+#endif
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/procps-3.2.7/proc/sysinfo.c new/procps-3.2.8/proc/sysinfo.c
--- old/procps-3.2.7/proc/sysinfo.c 2006-06-25 08:41:48.000000000 +0200
+++ new/procps-3.2.8/proc/sysinfo.c 2008-03-24 05:33:43.000000000 +0100
@@ -43,7 +43,9 @@
#define VMINFO_FILE "/proc/vmstat"
static int vminfo_fd = -1;
-static char buf[1024];
+// As of 2.6.24 /proc/meminfo seems to need 888 on 64-bit,
+// and would need 1258 if the obsolete fields were there.
+static char buf[2048];
/* This macro opens filename only if necessary and seeks to 0 so
* that successive calls to the functions are more efficient.
@@ -153,6 +155,7 @@
case 95 ... 105 : Hertz = 100; break; /* normal Linux */
case 124 ... 132 : Hertz = 128; break; /* MIPS, ARM */
case 195 ... 204 : Hertz = 200; break; /* normal << 1 */
+ case 247 ... 252 : Hertz = 250; break;
case 253 ... 260 : Hertz = 256; break;
case 393 ... 408 : Hertz = 400; break; /* normal << 2 */
case 790 ... 808 : Hertz = 800; break; /* normal << 3 */
@@ -530,6 +533,13 @@
static unsigned long kb_vmalloc_chunk;
static unsigned long kb_vmalloc_total;
static unsigned long kb_vmalloc_used;
+// seen on 2.6.24-rc6-git12
+static unsigned long kb_anon_pages;
+static unsigned long kb_bounce;
+static unsigned long kb_commit_limit;
+static unsigned long kb_nfs_unstable;
+static unsigned long kb_swap_reclaimable;
+static unsigned long kb_swap_unreclaimable;
void meminfo(void){
char namebuf[16]; /* big enough to hold any row name */
@@ -539,8 +549,11 @@
char *tail;
static const mem_table_struct mem_table[] = {
{"Active", &kb_active}, // important
+ {"AnonPages", &kb_anon_pages},
+ {"Bounce", &kb_bounce},
{"Buffers", &kb_main_buffers}, // important
{"Cached", &kb_main_cached}, // important
+ {"CommitLimit", &kb_commit_limit},
{"Committed_AS", &kb_committed_as},
{"Dirty", &kb_dirty}, // kB version of vmstat nr_dirty
{"HighFree", &kb_high_free},
@@ -556,8 +569,11 @@
{"MemFree", &kb_main_free}, // important
{"MemShared", &kb_main_shared}, // important, but now gone!
{"MemTotal", &kb_main_total}, // important
+ {"NFS_Unstable", &kb_nfs_unstable},
{"PageTables", &kb_pagetables}, // kB version of vmstat nr_page_table_pages
{"ReverseMaps", &nr_reversemaps}, // same as vmstat nr_page_table_pages
+ {"SReclaimable", &kb_swap_reclaimable}, // "swap reclaimable" (dentry and inode structures)
+ {"SUnreclaim", &kb_swap_unreclaimable},
{"Slab", &kb_slab}, // kB version of vmstat nr_slab
{"SwapCached", &kb_swap_cached},
{"SwapFree", &kb_swap_free}, // important
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/procps-3.2.7/procps.spec new/procps-3.2.8/procps.spec
--- old/procps-3.2.7/procps.spec 2006-06-25 12:40:59.000000000 +0200
+++ new/procps-3.2.8/procps.spec 2009-05-10 20:25:17.000000000 +0200
@@ -3,7 +3,7 @@
Name: procps
%define major_version 3
%define minor_version 2
-%define revision 7
+%define revision 8
%define version %{major_version}.%{minor_version}.%{revision}
Version: %{version}
Release: 1
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/procps-3.2.7/ps/output.c new/procps-3.2.8/ps/output.c
--- old/procps-3.2.7/ps/output.c 2006-06-19 01:27:02.000000000 +0200
+++ new/procps-3.2.8/ps/output.c 2009-05-10 21:24:50.000000000 +0200
@@ -606,13 +606,16 @@
static int pr_class(char *restrict const outbuf, const proc_t *restrict const pp){
switch(pp->sched){
case -1: return snprintf(outbuf, COLWID, "-"); // not reported
- case 0: return snprintf(outbuf, COLWID, "TS"); // SCHED_OTHER
+ case 0: return snprintf(outbuf, COLWID, "TS"); // SCHED_OTHER SCHED_NORMAL
case 1: return snprintf(outbuf, COLWID, "FF"); // SCHED_FIFO
case 2: return snprintf(outbuf, COLWID, "RR"); // SCHED_RR
- case 3: return snprintf(outbuf, COLWID, "B"); // SCHED_BATCH? (will be "B")
- case 4: return snprintf(outbuf, COLWID, "#4"); // SCHED_ISO? (Con Kolivas)
- case 5: return snprintf(outbuf, COLWID, "#5"); //
+ case 3: return snprintf(outbuf, COLWID, "B"); // SCHED_BATCH
+ case 4: return snprintf(outbuf, COLWID, "ISO"); // reserved for SCHED_ISO (Con Kolivas)
+ case 5: return snprintf(outbuf, COLWID, "IDL"); // SCHED_IDLE
+ case 6: return snprintf(outbuf, COLWID, "#6"); //
+ case 7: return snprintf(outbuf, COLWID, "#7"); //
case 8: return snprintf(outbuf, COLWID, "#8"); //
+ case 9: return snprintf(outbuf, COLWID, "#9"); //
default: return snprintf(outbuf, COLWID, "?"); // unknown value
}
}
@@ -968,6 +971,12 @@
}
#endif
+// This one is always thread-specific pending. (from Dragonfly BSD)
+static int pr_tsig(char *restrict const outbuf, const proc_t *restrict const pp){
+ return help_pr_sig(outbuf, pp->_sigpnd);
+}
+// This one is (wrongly?) thread-specific when printing thread lines,
+// but process-pending otherwise.
static int pr_sig(char *restrict const outbuf, const proc_t *restrict const pp){
return help_pr_sig(outbuf, pp->signal);
}
@@ -1328,7 +1337,6 @@
{"fuser", "FUSER", pr_fuser, sr_fuser, 8, USR, LNX, ET|USER},
{"gid", "GID", pr_egid, sr_egid, 5, 0, SUN, ET|RIGHT},
{"group", "GROUP", pr_egroup, sr_egroup, 8, GRP, U98, ET|USER},
-{"iac", "IAC", pr_nop, sr_nop, 4, 0, BSD, AN|RIGHT}, // DragonFly
{"ignored", "IGNORED", pr_sigignore,sr_nop, 9, 0, BSD, TO|SIGNAL}, /*sigignore*/
{"inblk", "INBLK", pr_nop, sr_nop, 5, 0, BSD, AN|RIGHT}, /*inblock*/
{"inblock", "INBLK", pr_nop, sr_nop, 5, 0, DEC, AN|RIGHT}, /*inblk*/
@@ -1423,7 +1431,7 @@
{"sgroup", "SGROUP", pr_sgroup, sr_sgroup, 8, GRP, LNX, ET|USER},
{"share", "-", pr_nop, sr_share, 1, MEM, LNX, PO|RIGHT},
{"sid", "SID", pr_sess, sr_session, 5, 0, XXX, PO|PIDMAX|RIGHT}, /* Sun & HP */
-{"sig", "PENDING", pr_sig, sr_nop, 9, 0, XXX, ET|SIGNAL}, /*pending*/
+{"sig", "PENDING", pr_sig, sr_nop, 9, 0, XXX, ET|SIGNAL}, /*pending -- Dragonfly uses this for whole-proc and "tsig" for thread */
{"sig_block", "BLOCKED", pr_sigmask, sr_nop, 9, 0, LNX, TO|SIGNAL},
{"sig_catch", "CATCHED", pr_sigcatch, sr_nop, 9, 0, LNX, TO|SIGNAL},
{"sig_ignore", "IGNORED",pr_sigignore, sr_nop, 9, 0, LNX, TO|SIGNAL},
@@ -1465,6 +1473,7 @@
{"tsess", "TSESS", pr_nop, sr_nop, 5, 0, BSD, PO|PIDMAX|RIGHT},
{"tsession", "TSESS", pr_nop, sr_nop, 5, 0, DEC, PO|PIDMAX|RIGHT},
{"tsid", "TSID", pr_nop, sr_nop, 5, 0, BSD, PO|PIDMAX|RIGHT},
+{"tsig", "PENDING", pr_tsig, sr_nop, 9, 0, BSD, ET|SIGNAL}, /* Dragonfly used this for thread-specific, and "sig" for whole-proc */
{"tsiz", "TSIZ", pr_tsiz, sr_nop, 4, 0, BSD, PO|RIGHT},
{"tt", "TT", pr_tty8, sr_tty, 8, 0, BSD, PO|LEFT},
{"tty", "TT", pr_tty8, sr_tty, 8, 0, U98, PO|LEFT}, /* Unix98 requires "TT" but has "TTY" too. :-( */ /* was 3 wide */
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/procps-3.2.7/ps/parser.c new/procps-3.2.8/ps/parser.c
--- old/procps-3.2.7/ps/parser.c 2006-06-25 09:14:58.000000000 +0200
+++ new/procps-3.2.8/ps/parser.c 2007-05-28 21:28:06.000000000 +0200
@@ -729,17 +729,6 @@
trace("x Select processes without controlling ttys\n");
simple_select |= SS_B_x;
break;
-#if 0
- case 'y':
- // DragonFlyBSD iac (interactivity measure) format
- // uid,pid,ppid,cpu,pri,iac,nice,wchan,state,tt,time,command
- // (they use 'Y' to sort by this "iac" thing; 'y' implies 'Y')
- // Range is -127 .. 127, with lower numbers being more
- // interactive and higher numbers more batch-like.
- trace("y Display interactivity measure\n");
- format_flags |= FF_Bv;
- break;
-#endif
case '-':
return "Embedded '-' among BSD options makes no sense.";
break;
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/procps-3.2.7/ps/ps.1 new/procps-3.2.8/ps/ps.1
--- old/procps-3.2.7/ps/ps.1 2005-10-30 03:44:03.000000000 +0100
+++ new/procps-3.2.8/ps/ps.1 2009-05-10 21:38:17.000000000 +0200
@@ -176,7 +176,7 @@
\fBt\fR option without any argument.
.opt \-a
-Select all processes except session leaders (see \fIgetsid\fR(2)) and
+Select all processes except both session leaders (see \fIgetsid\fR(2)) and
processes not associated with a terminal.
.opt a
@@ -884,6 +884,7 @@
than 24 hours ago, the output format is "\ HH:MM",
else it is "mmm\ dd"
(where mmm is the three letters of the month).
+See also \fBlstart\fR, \fBstart\fR, \fBstart_time\fR, and \fBstime\fR.
T}
bsdtime TIME T{
@@ -915,6 +916,12 @@
.br
RR SCHED_RR
.br
+B SCHED_BATCH
+.br
+ISO SCHED_ISO
+.br
+IDL SCHED_IDLE
+.br
? unknown value
T}
@@ -930,6 +937,12 @@
.br
RR SCHED_RR
.br
+B SCHED_BATCH
+.br
+ISO SCHED_ISO
+.br
+IDL SCHED_IDLE
+.br
? unknown value
T}
@@ -1065,6 +1078,7 @@
lstart STARTED T{
time the command started.
+See also \fBbsdstart\fR, \fBstart\fR, \fBstart_time\fR, and \fBstime\fR.
T}
lwp LWP T{
@@ -1132,6 +1146,12 @@
.br
RR SCHED_RR
.br
+B SCHED_BATCH
+.br
+ISO SCHED_ISO
+.br
+IDL SCHED_IDLE
+.br
? unknown value
T}
@@ -1189,8 +1209,9 @@
T}
sched SCH T{
-scheduling policy of the process. The policies sched_other, sched_fifo,
-and sched_rr are respectively displayed as 0,\ 1,\ and\ 2.
+scheduling policy of the process. The policies SCHED_OTHER (SCHED_NORMAL),
+SCHED_FIFO, SCHED_RR, SCHED_BATCH, SCHED_ISO, and SCHED_IDLE are respectively
+displayed as 0,\ 1,\ 2,\ 3,\ 4,\ and\ 5.
T}
sess SESS T{
@@ -1255,6 +1276,7 @@
the output format is "HH:MM:SS",
else it is "\ \ mmm\ dd"
(where mmm is a three\-letter month\ name).
+See also \fBlstart\fR, \fBbsdstart\fR, \fBstart_time\fR, and \fBstime\fR.
T}
start_time START T{
@@ -1263,6 +1285,7 @@
started the same year \fBps\fR was invoked,
or\ "mmmdd" if\ it was not started the same day,
or\ "HH:MM" otherwise.
+See also \fBbsdstart\fR, \fBstart\fR, \fBlstart\fR, and \fBstime\fR.
T}
stat STAT T{
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/procps-3.2.7/ps/sortformat.c new/procps-3.2.8/ps/sortformat.c
--- old/procps-3.2.7/ps/sortformat.c 2005-10-30 02:09:19.000000000 +0200
+++ new/procps-3.2.8/ps/sortformat.c 2007-05-28 05:40:30.000000000 +0200
@@ -325,6 +325,8 @@
if(*spec == '-'){
reverse = 1;
spec++;
+ } else if(*spec == '+'){
+ spec++;
}
fs = search_format_array(spec);
if(fs){
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/procps-3.2.7/skill.c new/procps-3.2.8/skill.c
--- old/procps-3.2.7/skill.c 2004-09-09 15:49:38.000000000 +0200
+++ new/procps-3.2.8/skill.c 2008-03-24 06:48:39.000000000 +0100
@@ -309,6 +309,14 @@
pid = strtol(argv[argc],&endp,10);
if(!*endp){
if(!kill((pid_t)pid,signo)) continue;
+ // The UNIX standard contradicts itself. If at least one process
+ // is matched for each PID (as if processes could share PID!) and
+ // "the specified signal was successfully processed" (the systcall
+ // returned zero?) for at least one of those processes, then we must
+ // exit with zero. Note that an error might have also occured.
+ // The standard says we return non-zero if an error occurs. Thus if
+ // killing two processes gives 0 for one and EPERM for the other,
+ // we are required to return both zero and non-zero. Quantum kill???
exitvalue = 1;
continue;
}
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/procps-3.2.7/sysctl.c new/procps-3.2.8/sysctl.c
--- old/procps-3.2.7/sysctl.c 2006-06-25 02:51:51.000000000 +0200
+++ new/procps-3.2.8/sysctl.c 2007-05-28 03:54:22.000000000 +0200
@@ -135,7 +135,7 @@
}
/* used to open the file */
- tmpname = malloc(strlen(name)+strlen(PROC_PATH)+1);
+ tmpname = malloc(strlen(name)+strlen(PROC_PATH)+2);
strcpy(tmpname, PROC_PATH);
strcat(tmpname, name);
slashdot(tmpname+strlen(PROC_PATH),'.','/'); /* change . to / */
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/procps-3.2.7/TODO new/procps-3.2.8/TODO
--- old/procps-3.2.7/TODO 2005-06-21 23:59:48.000000000 +0200
+++ new/procps-3.2.8/TODO 2008-10-13 01:08:43.000000000 +0200
@@ -37,13 +37,22 @@
Add all the stuff Solaris has. This would also replace ptrace.
+---------------------- watch --------------------------
+
+Tolerate UTF-8.
+
+Tolerate color, bold, underline, etc. #129334
+
+Tolerate stderr. #420377 #155227 #225549
+
+Tolerate VT100 line-drawing characters. Maybe translate them.
+
---------------------- w --------------------------
The LOGIN@ column sometimes has a space in it. This makes correct
scripting difficult.
-Verify that DNS control does not give a user the power to specify
-arbitrary data for the FROM column. (could set root's VGA color map!)
+Time formats are demented.
---------------------- vmstat --------------------------
@@ -54,6 +63,8 @@
Stop storing fields with duplicate info (often different
units: kB and pages, seconds and jiffies) in the proc_t struct.
+Use own readdir code (assembly language) because glibc sucks ass.
+
---------------------- top -------------------------
Share more stuff with ps.
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/procps-3.2.7/top.c new/procps-3.2.8/top.c
--- old/procps-3.2.7/top.c 2006-06-25 08:41:48.000000000 +0200
+++ new/procps-3.2.8/top.c 2007-05-28 18:04:00.000000000 +0200
@@ -405,11 +405,13 @@
* Normal end of execution.
* catches:
* SIGALRM, SIGHUP, SIGINT, SIGPIPE, SIGQUIT and SIGTERM */
-static void end_pgm (int dont_care_sig) NORETURN;
-static void end_pgm (int dont_care_sig)
-{
- (void)dont_care_sig;
- bye_bye(stdout, 1, NULL);
+// FIXME: can't do this shit in a signal handler
+static void end_pgm (int sig) NORETURN;
+static void end_pgm (int sig)
+{
+ if(sig)
+ sig |= 0x80; // for a proper process exit code
+ bye_bye(stdout, sig, NULL);
}
@@ -458,6 +460,7 @@
* Suspend ourself.
* catches:
* SIGTSTP, SIGTTIN and SIGTTOU */
+// FIXME: can't do this shit in a signal handler!
static void suspend (int dont_care_sig)
{
(void)dont_care_sig;
@@ -477,7 +480,7 @@
putp(Cap_rmam);
}
-
+
/*###### Misc Color/Display support ####################################*/
/* macro to test if a basic (non-color) capability is valid
@@ -653,9 +656,12 @@
while ((lin_end = strchr(glob, '\n'))) {
/* create a local copy we can extend and otherwise abuse */
- memcpy(lin, glob, (unsigned)(lin_end - glob));
+ size_t amt = lin_end - glob;
+ if(amt > sizeof lin - 1)
+ amt = sizeof lin - 1; // shit happens
+ memcpy(lin, glob, amt);
/* zero terminate this part and prepare to parse substrings */
- lin[lin_end - glob] = '\0';
+ lin[amt] = '\0';
room = Screen_cols;
sub_beg = sub_end = lin;
*(rp = row) = '\0';
@@ -668,6 +674,9 @@
cap = Curwin->captab[(int)*sub_end];
*sub_end = '\0';
snprintf(tmp, sizeof(tmp), "%s%.*s%s", cap, room, sub_beg, Caps_off);
+ amt = strlen(tmp);
+ if(rp - row + amt + 1 > sizeof row)
+ goto overflow; // shit happens
rp = scat(rp, tmp);
room -= (sub_end - sub_beg);
sub_beg = ++sub_end;
@@ -677,7 +686,7 @@
}
if (unlikely(0 >= room)) break; /* skip substrings that won't fit */
}
-
+overflow:
if (interact) PUTT("%s%s\n", row, Cap_clr_eol);
else PUFF("%s%s\n", row, Cap_clr_eol);
glob = ++lin_end; /* point to next line (maybe) */
@@ -2485,7 +2494,7 @@
switch (c) {
case '1':
- if (Cpu_tot+7 > Screen_rows && !CHKw(Curwin, View_CPUSUM)) {
+ if (Cpu_tot+7 > Screen_rows && CHKw(Curwin, View_CPUSUM)) {
show_msg(err_num_cpus);
break;
}
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/procps-3.2.7/vmstat.c new/procps-3.2.8/vmstat.c
--- old/procps-3.2.7/vmstat.c 2006-06-25 08:41:48.000000000 +0200
+++ new/procps-3.2.8/vmstat.c 2007-05-28 02:14:57.000000000 +0200
@@ -290,7 +290,7 @@
fDiskstat=fopen("/proc/diskstats","rb");
if(!fDiskstat){
fprintf(stderr, "Your kernel doesn't support diskstat. (2.5.70 or above required)\n");
- exit(0);
+ exit(EXIT_FAILURE);
}
fclose(fDiskstat);
@@ -400,7 +400,7 @@
}
}else{
fprintf(stderr, "Your kernel doesn't support diskstat (2.5.70 or above required)\n");
- exit(0);
+ exit(EXIT_FAILURE);
}
}
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/procps-3.2.7/watch.c new/procps-3.2.8/watch.c
--- old/procps-3.2.7/watch.c 2006-06-17 11:18:38.000000000 +0200
+++ new/procps-3.2.8/watch.c 2007-05-28 05:13:23.000000000 +0200
@@ -296,10 +296,10 @@
}
move(y, x);
if (option_differences) {
- int oldch = inch();
+ chtype oldch = inch();
char oldc = oldch & A_CHARTEXT;
attr = !first_screen
- && (c != oldc
+ && ((char)c != oldc
||
(option_differences_cumulative
&& (oldch & A_ATTRIBUTES)));
++++++ procps-3.2.7-toosmall.dif -> procps-3.2.8-toosmall.dif ++++++
--- procps/procps-3.2.7-toosmall.dif 2008-12-10 16:30:05.000000000 +0100
+++ procps/procps-3.2.8-toosmall.dif 2009-05-11 12:44:06.000000000 +0200
@@ -1,15 +1,6 @@
--- top.c
+++ top.c 2008-12-10 16:28:41.000000000 +0100
-@@ -2514,7 +2514,7 @@ static void do_key (unsigned c)
-
- switch (c) {
- case '1':
-- if (Cpu_tot+7 > Screen_rows && !CHKw(Curwin, View_CPUSUM)) {
-+ if (Cpu_tot+7 > Screen_rows && CHKw(Curwin, View_CPUSUM)) {
- show_msg(err_num_cpus);
- } else {
- #ifdef WARN_NOT_SMP
-@@ -2984,7 +2984,7 @@ static proc_t **summary_show (void)
+@@ -2993,7 +2993,7 @@ static proc_t **summary_show (void)
p_table = procs_refresh(p_table, Frames_libflags);
// Display Uptime and Loadavg
@@ -18,7 +9,7 @@
if (!Rc.mode_altscr) {
show_special(0, fmtmk(LOADAV_line, Myname, sprint_uptime()));
} else {
-@@ -3001,7 +3001,7 @@ static proc_t **summary_show (void)
+@@ -3010,7 +3010,7 @@ static proc_t **summary_show (void)
}
// Display Task and Cpu(s) States
@@ -27,7 +18,7 @@
show_special(
0,
fmtmk(
-@@ -3015,21 +3015,29 @@ static proc_t **summary_show (void)
+@@ -3024,21 +3024,29 @@ static proc_t **summary_show (void)
if (CHKw(Curwin, View_CPUSUM)) {
// display just the 1st /proc/stat line
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package libnscd for openSUSE:Factory
checked in at Fri May 15 21:34:25 CEST 2009.
--------
--- libnscd/libnscd.changes 2009-01-07 10:32:43.000000000 +0100
+++ libnscd/libnscd.changes 2009-05-07 23:00:03.000000000 +0200
@@ -1,0 +2,5 @@
+Thu May 7 22:57:41 CEST 2009 - crrodriguez(a)suse.de
+
+- disable static libraries
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libnscd.spec ++++++
--- /var/tmp/diff_new_pack.N32160/_old 2009-05-15 21:33:40.000000000 +0200
+++ /var/tmp/diff_new_pack.N32160/_new 2009-05-15 21:33:40.000000000 +0200
@@ -28,7 +28,7 @@
%endif
#
Version: 2.0.2
-Release: 106
+Release: 108
Summary: Library to Allow Applications to Communicate with nscd
Source: libnscd-%{version}.tar.bz2
BuildRoot: %{_tmppath}/%{name}-%{version}-build
@@ -59,19 +59,20 @@
%prep
-%setup
+%setup -q
%build
-%configure
-make
+%configure --libdir=/%{_lib} --disable-static --with-pic
+%{__make} %{?jobs:-j%jobs}
+
+%check
make check
%install
make install DESTDIR=$RPM_BUILD_ROOT
-rm $RPM_BUILD_ROOT%{_libdir}/libnscd.la
-mkdir -p $RPM_BUILD_ROOT/%{_lib}
-mv -v $RPM_BUILD_ROOT%{_libdir}/libnscd.so.* $RPM_BUILD_ROOT/%{_lib}
-ln -sf ../../%{_lib}/libnscd.so.1 $RPM_BUILD_ROOT%{_libdir}/libnscd.so
+%{__mkdir_p} %{buildroot}%{_libdir}
+%{__ln_s} -v /%{_lib}/$(readlink %{buildroot}/%{_lib}/%{name}.so) %{buildroot}%{_libdir}/%{name}.so
+%{__rm} -v %{buildroot}/%{_lib}/%{name}.{so,la}
%clean
rm -rf $RPM_BUILD_ROOT
@@ -87,12 +88,13 @@
%files devel
%defattr(-,root,root)
-%{_prefix}/include/*.h
-%{_libdir}/libnscd.a
+%{_includedir}/*.h
%{_libdir}/libnscd.so
%{_mandir}/man3/nscd_flush_cache.3*
%changelog
+* Thu May 07 2009 crrodriguez(a)suse.de
+- disable static libraries
* Wed Jan 07 2009 olh(a)suse.de
- obsolete old -XXbit packages (bnc#437293)
* Thu Apr 10 2008 ro(a)suse.de
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package libpng12-0 for openSUSE:Factory
checked in at Fri May 15 21:32:20 CEST 2009.
--------
--- libpng12-0/libpng12-0.changes 2009-02-23 11:23:52.000000000 +0100
+++ libpng12-0/libpng12-0.changes 2009-05-12 18:00:12.000000000 +0200
@@ -1,0 +2,5 @@
+Tue May 12 17:38:21 CEST 2009 - pgajdos(a)suse.cz
+
+- updated to 1.2.36 (see CHANGES)
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
Old:
----
libpng-1.2.35-setjmp.diff
libpng-1.2.35.tar.bz2
New:
----
libpng-1.2.36-setjmp.diff
libpng-1.2.36.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libpng12-0.spec ++++++
--- /var/tmp/diff_new_pack.A28790/_old 2009-05-15 21:31:37.000000000 +0200
+++ /var/tmp/diff_new_pack.A28790/_new 2009-05-15 21:31:37.000000000 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package libpng12-0 (Version 1.2.35)
+# spec file for package libpng12-0 (Version 1.2.36)
#
# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
@@ -24,7 +24,7 @@
Group: System/Libraries
Url: http://www.libpng.org/pub/png/libpng.html
AutoReqProv: on
-Version: 1.2.35
+Version: 1.2.36
Release: 1
Summary: Library for the Portable Network Graphics Format (PNG)
Source: libpng-%{version}.tar.bz2
@@ -142,6 +142,8 @@
%doc CHANGES README TODO ANNOUNCE KNOWNBUG Y2KINFO LICENSE libpng-*.txt
%changelog
+* Tue May 12 2009 pgajdos(a)suse.cz
+- updated to 1.2.36 (see CHANGES)
* Mon Feb 23 2009 pgajdos(a)suse.cz
- fixes possible double free [bnc#472745]
(CVE-2009-0040)
++++++ libpng-1.2.35-setjmp.diff -> libpng-1.2.36-setjmp.diff ++++++
--- libpng12-0/libpng-1.2.35-setjmp.diff 2009-02-23 11:07:53.000000000 +0100
+++ libpng12-0/libpng-1.2.36-setjmp.diff 2009-05-12 17:59:17.000000000 +0200
@@ -12,39 +12,45 @@
/* Any machine specific code is near the front of this file, so if you
* are configuring libpng for a machine, you may want to read the section
* starting here down to where it starts to typedef png_color, png_text,
-@@ -249,22 +254,20 @@
- #ifdef PNG_SETJMP_SUPPORTED
- /* This is an attempt to force a single setjmp behaviour on Linux. If
- * the X config stuff didn't define _BSD_SOURCE we wouldn't need this.
-+ * # ifdef __linux__
-+ * # ifdef _BSD_SOURCE
-+ * # define PNG_SAVE_BSD_SOURCE
-+ * # undef _BSD_SOURCE
-+ * # endif
-+ * # ifdef _SETJMP_H
-+ * If you encounter a compiler error here, see the explanation
-+ * * near the end of INSTALL.
-+ * __pngconf.h__ already includes setjmp.h;
-+ * __dont__ include it again.;
-+ * # endif
-+ * # endif __linux__
+@@ -320,24 +325,25 @@
+ * PNG_SKIP_SETJMP_CHECK while building your application, prior to the
+ * application's '#include "png.h"'. Don't define PNG_SKIP_SETJMP_CHECK
+ * while building a separate libpng library for general use.
++ *
++ *
++ * # ifndef PNG_SKIP_SETJMP_CHECK
++ * # ifdef __linux__
++ * # ifdef _BSD_SOURCE
++ * # define PNG_SAVE_BSD_SOURCE
++ * # undef _BSD_SOURCE
++ * # endif
++ * # ifdef _SETJMP_H
++ * * If you encounter a compiler error here, see the explanation
++ * * near the end of INSTALL.
++ * *
++ * __pngconf.h__ in libpng already includes setjmp.h;
++ * __dont__ include it again.;
++ * # endif
++ * # endif * __linux__ *
++ * # endif * PNG_SKIP_SETJMP_CHECK *
*/
+
+-# ifndef PNG_SKIP_SETJMP_CHECK
+-# ifdef __linux__
+-# ifdef _BSD_SOURCE
+-# define PNG_SAVE_BSD_SOURCE
+-# undef _BSD_SOURCE
+-# endif
+-# ifdef _SETJMP_H
+- /* If you encounter a compiler error here, see the explanation
+- * near the end of INSTALL.
+- */
+- __pngconf.h__ in libpng already includes setjmp.h;
+- __dont__ include it again.;
+-# endif
+-# endif /* __linux__ */
+-# endif /* PNG_SKIP_SETJMP_CHECK */
-
--# ifdef __linux__
--# ifdef _BSD_SOURCE
--# define PNG_SAVE_BSD_SOURCE
--# undef _BSD_SOURCE
--# endif
--# ifdef _SETJMP_H
-- /* If you encounter a compiler error here, see the explanation
-- * near the end of INSTALL.
-- */
-- __pngconf.h__ already includes setjmp.h;
-- __dont__ include it again.;
--# endif
--# endif /* __linux__ */
--
-+
/* include setjmp.h for error handling */
# include <setjmp.h>
++++++ libpng-1.2.35.tar.bz2 -> libpng-1.2.36.tar.bz2 ++++++
++++ 9868 lines of diff (skipped)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0