From b5e1c165439f932eb93f1df375e8c5ca90e4c05e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Honza=20Hor=C3=A1k?= Date: Mon, 28 Jan 2013 14:06:48 +0100 Subject: [PATCH] Open maps with no blocking for reading --- ypserv-2.29-dbopen.patch | 27 ++++++++++++++++++--------- ypserv.spec | 14 +++++++++++--- 2 files changed, 29 insertions(+), 12 deletions(-) diff --git a/ypserv-2.29-dbopen.patch b/ypserv-2.29-dbopen.patch index 8340d18..b4b933c 100644 --- a/ypserv-2.29-dbopen.patch +++ b/ypserv-2.29-dbopen.patch @@ -1,6 +1,6 @@ diff -up ypserv-2.29/lib/yp_db.c.dbopen ypserv-2.29/lib/yp_db.c --- ypserv-2.29/lib/yp_db.c.dbopen 2012-05-30 13:28:49.000000000 +0200 -+++ ypserv-2.29/lib/yp_db.c 2013-01-23 16:11:32.116224180 +0100 ++++ ypserv-2.29/lib/yp_db.c 2013-01-28 12:07:28.555350199 +0100 @@ -173,11 +173,14 @@ _db_open (const char *domain, const char sprintf (buf, "%s/%s", domain, map); @@ -21,7 +21,7 @@ diff -up ypserv-2.29/lib/yp_db.c.dbopen ypserv-2.29/lib/yp_db.c } diff -up ypserv-2.29/makedbm/makedbm.c.dbopen ypserv-2.29/makedbm/makedbm.c --- ypserv-2.29/makedbm/makedbm.c.dbopen 2012-05-30 13:28:49.000000000 +0200 -+++ ypserv-2.29/makedbm/makedbm.c 2013-01-23 16:13:32.896215921 +0100 ++++ ypserv-2.29/makedbm/makedbm.c 2013-01-28 12:23:50.243283071 +0100 @@ -490,6 +490,9 @@ create_file (char *fileName, char *dbmNa #endif #else @@ -32,6 +32,15 @@ diff -up ypserv-2.29/makedbm/makedbm.c.dbopen ypserv-2.29/makedbm/makedbm.c rename (filename, dbmName); #endif free (filename); +@@ -508,7 +511,7 @@ dump_file (char *dbmName) + dbm = dbm_open (dbmName, O_RDONLY, 0600); + #elif defined(HAVE_LIBTC) + dbm = tcbdbnew(); +- if (!tcbdbopen (dbm, dbmName, BDBOREADER)) ++ if (!tcbdbopen (dbm, dbmName, BDBOREADER | BDBONOLCK)) + { + tcbdbdel(dbm); + dbm = NULL; @@ -517,6 +520,7 @@ dump_file (char *dbmName) if (dbm == NULL) { @@ -42,7 +51,7 @@ diff -up ypserv-2.29/makedbm/makedbm.c.dbopen ypserv-2.29/makedbm/makedbm.c #if defined(HAVE_COMPAT_LIBGDBM) diff -up ypserv-2.29/yphelper/yphelper.c.dbopen ypserv-2.29/yphelper/yphelper.c --- ypserv-2.29/yphelper/yphelper.c.dbopen 2012-05-30 13:28:50.000000000 +0200 -+++ ypserv-2.29/yphelper/yphelper.c 2013-01-23 16:11:32.117224180 +0100 ++++ ypserv-2.29/yphelper/yphelper.c 2013-01-28 12:24:14.378281420 +0100 @@ -507,10 +507,10 @@ get_dbm_entry (char *key, char *map, cha #if defined(HAVE_COMPAT_LIBGDBM) dbm = gdbm_open (mappath, 0, GDBM_READER, 0600, NULL); @@ -52,7 +61,7 @@ diff -up ypserv-2.29/yphelper/yphelper.c.dbopen ypserv-2.29/yphelper/yphelper.c #elif defined(HAVE_LIBTC) dbm = tcbdbnew(); - if (!tcbdbopen(dbm, mappath, BDBOWRITER | BDBOCREAT)) -+ if (!tcbdbopen(dbm, mappath, BDBOREADER)) ++ if (!tcbdbopen(dbm, mappath, BDBOREADER | BDBONOLCK)) { tcbdbdel(dbm); dbm = NULL; @@ -66,7 +75,7 @@ diff -up ypserv-2.29/yphelper/yphelper.c.dbopen ypserv-2.29/yphelper/yphelper.c diff -up ypserv-2.29/yppush/yppush.c.dbopen ypserv-2.29/yppush/yppush.c --- ypserv-2.29/yppush/yppush.c.dbopen 2012-08-30 09:53:16.000000000 +0200 -+++ ypserv-2.29/yppush/yppush.c 2013-01-23 16:11:32.117224180 +0100 ++++ ypserv-2.29/yppush/yppush.c 2013-01-28 12:23:59.161282461 +0100 @@ -290,10 +290,10 @@ get_dbm_entry (char *key) #if defined(HAVE_COMPAT_LIBGDBM) dbm = gdbm_open (mappath, 0, GDBM_READER, 0600, NULL); @@ -76,7 +85,7 @@ diff -up ypserv-2.29/yppush/yppush.c.dbopen ypserv-2.29/yppush/yppush.c #elif defined(HAVE_LIBTC) dbm = tcbdbnew(); - if (!tcbdbopen(dbm, mappath, BDBOWRITER | BDBOCREAT)) -+ if (!tcbdbopen(dbm, mappath, BDBOREADER)) ++ if (!tcbdbopen(dbm, mappath, BDBOREADER | BDBONOLCK)) { tcbdbdel(dbm); dbm = NULL; @@ -89,8 +98,8 @@ diff -up ypserv-2.29/yppush/yppush.c.dbopen ypserv-2.29/yppush/yppush.c } diff -up ypserv-2.29/ypxfr/ypxfr.c.dbopen ypserv-2.29/ypxfr/ypxfr.c ---- ypserv-2.29/ypxfr/ypxfr.c.dbopen 2013-01-23 16:11:32.068224183 +0100 -+++ ypserv-2.29/ypxfr/ypxfr.c 2013-01-23 16:14:05.895213665 +0100 +--- ypserv-2.29/ypxfr/ypxfr.c.dbopen 2013-01-28 12:07:28.475350204 +0100 ++++ ypserv-2.29/ypxfr/ypxfr.c 2013-01-28 12:24:07.195281912 +0100 @@ -557,10 +557,10 @@ ypxfr (char *map, char *source_host, cha #if defined(HAVE_COMPAT_LIBGDBM) dbm = gdbm_open (dbName_orig, 0, GDBM_READER, 0600, NULL); @@ -100,7 +109,7 @@ diff -up ypserv-2.29/ypxfr/ypxfr.c.dbopen ypserv-2.29/ypxfr/ypxfr.c #elif defined(HAVE_LIBTC) dbm = tcbdbnew (); - if (!tcbdbopen (dbm, dbName_orig, BDBOWRITER | BDBOCREAT)) -+ if (!tcbdbopen (dbm, dbName_orig, BDBOREADER)) ++ if (!tcbdbopen (dbm, dbName_orig, BDBOREADER | BDBONOLCK)) { tcbdbdel (dbm); dbm = NULL; diff --git a/ypserv.spec b/ypserv.spec index ee6aa54..57609c3 100644 --- a/ypserv.spec +++ b/ypserv.spec @@ -4,7 +4,7 @@ Summary: The NIS (Network Information Service) server Url: http://www.linux-nis.org/nis/ypserv/index.html Name: ypserv Version: 2.29 -Release: 6%{?dist} +Release: 7%{?dist} License: GPLv2 Group: System Environment/Daemons Source0: http://www.linux-nis.org/download/ypserv/ypserv-%{version}.tar.bz2 @@ -184,6 +184,8 @@ fi fi %endif +%if 0%fedora>=18 + # After switching from gdbm to Tokyo Cabinet we need to rebuild maps # during update, but without pushing to slave servers # In case domainname is not set, but it is defined in @@ -212,11 +214,12 @@ if [ $1 == 2 ] ; then if [ "$newdomain" != "(none)" -a "x$newdomain" != "x" ]; then pushd "/var/yp/$newdomain">/dev/null echo "" > %rebuild_maps_script + chmod 0600 %rebuild_maps_script # loop through maps for map in * ; do # this server is a master for this map - if %{_libdir}/yp/yphelper -i "$map" ; then - echo "mv `pwd`/$map `pwd`/${map}.bak" >> %rebuild_maps_script + if %{_libdir}/yp/yphelper -i "$map" >/dev/null 2>&1 ; then + echo "rm -f `pwd`/$map" >> %rebuild_maps_script # this server is a slave for this map else master=`%{_libdir}/yp/makedbm -u $map 2>/dev/null | grep YP_MASTER_NAME | sed -e 's/YP_MASTER_NAME//'` @@ -236,6 +239,8 @@ if [ -e %rebuild_maps_script ] ; then rm -f %rebuild_maps_script >/dev/null 2>&1 fi +%endif + %files %doc AUTHORS README INSTALL ChangeLog TODO NEWS COPYING %doc etc/ypserv.conf etc/securenets etc/README.etc @@ -251,6 +256,9 @@ fi %{_includedir}/*/* %changelog +* Mon Jan 28 2013 Honza Horak - 2.29-7 +- Open maps with no blocking for reading + * Mon Jan 21 2013 Honza Horak - 2.29-6 - Open database files with correct mode - Make rebuilding maps during upgrade a bit more clever