[DRBD-cvs] r1607 - in trunk: . debian drbd drbd/linux testing

svn at svn.drbd.org svn at svn.drbd.org
Wed Oct 20 15:21:26 CEST 2004


Author: phil
Date: 2004-10-20 15:21:23 +0200 (Wed, 20 Oct 2004)
New Revision: 1607

Added:
   trunk/debian/drbd0.7-module-_KVERS_.postinst.modules.in
   trunk/debian/drbd0.7-module-source.dirs
   trunk/debian/drbd0.7-utils.dirs
   trunk/debian/drbd0.7-utils.docs
   trunk/debian/drbd0.7-utils.postinst
   trunk/debian/drbd0.7-utils.postrm
   trunk/debian/drbd0.7-utils.prerm
   trunk/debian/modass.drbd0.7-module-source
   trunk/drbd/drbd_strings.c
   trunk/testing/ioctl_structs_sizes.c
Removed:
   trunk/debian/drbd0.7-source.dirs
   trunk/debian/drbd0.7.conffiles
   trunk/debian/drbd0.7.dirs
   trunk/debian/drbd0.7.docs
   trunk/debian/drbd0.7.install
   trunk/debian/drbd0.7.manpages
   trunk/debian/drbd0.7.postinst
   trunk/debian/drbd0.7.postrm
   trunk/debian/drbd0.7.prerm
   trunk/debian/kernel-export-wup.patch
   trunk/debian/kernel-patch-wup.README.Debian
   trunk/debian/kernel-patch-wup.kpatches
Modified:
   trunk/
   trunk/ChangeLog
   trunk/debian/changelog
   trunk/debian/control
   trunk/debian/control.modules.in
   trunk/debian/rules
   trunk/drbd/drbd_int.h
   trunk/drbd/drbd_main.c
   trunk/drbd/drbd_receiver.c
   trunk/drbd/drbd_req.c
   trunk/drbd/drbd_worker.c
   trunk/drbd/linux/drbd.h
   trunk/testing/Makefile
Log:
svnp run. Investigated 1594 to 1607

r1600 by lars on 2004-10-19 11:11:49 +0200 (Tue, 19 Oct 2004) 
     M /branches/drbd-0.7/drbd/drbd_int.h
     M /branches/drbd-0.7/drbd/drbd_main.c

r1604 by philhug on 2004-10-19 22:26:01 +0200 (Tue, 19 Oct 2004) 
     M /branches/drbd-0.7/debian/changelog
     M /branches/drbd-0.7/debian/control
     M /branches/drbd-0.7/debian/control.modules.in

r1605 by phil on 2004-10-20 12:38:29 +0200 (Wed, 20 Oct 2004) 
     M /branches/drbd-0.7/drbd/linux/drbd.h
     M /branches/drbd-0.7/testing/Makefile
     A /branches/drbd-0.7/testing/ioctl_structs_sizes.c
  
  This fix makes it work on machines with 64bit kernel space and

r1606 by phil on 2004-10-20 12:50:10 +0200 (Wed, 20 Oct 2004) 
     M /branches/drbd-0.7/ChangeLog
  
  Changelog updates...



Property changes on: trunk
___________________________________________________________________
Name: propagate:at
   - 1594
   + 1607

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2004-10-20 10:50:10 UTC (rev 1606)
+++ trunk/ChangeLog	2004-10-20 13:21:23 UTC (rev 1607)
@@ -11,6 +11,18 @@
  * drbddisk start retries several times,
    in case drbd ping timeout is longer than heartbeat deadtime.
 
+0.7 branch
+----------
+ * A fix to make ioctl()s work on machines with 64bit kernel space 
+   and 32bit user space. 
+ * Ioctl()s are only alloes if the caller has CAP_SYS_ADMIN set.
+ * Removal of warnings on 64bit architectures.
+ * Backport of find_first_bit() for x86_64 aka AMD64 for use on 
+   that architecture under Linux-2.4.x
+ * Improvements to the drbddisk script, to do the right thing
+   in case Heartbeat is configured with a small timeout than DRBD.
+ * Lots of updates to the way Debian's DRBD packages works.
+
 0.7.5 (api:76/proto:74)
 -----
  * Fix a bug that could case read requests to return wrong data

Modified: trunk/debian/changelog
===================================================================
--- trunk/debian/changelog	2004-10-20 10:50:10 UTC (rev 1606)
+++ trunk/debian/changelog	2004-10-20 13:21:23 UTC (rev 1607)
@@ -1,15 +1,43 @@
+drbd (0.7.5-2) unstable; urgency=low
+
+  * debian/control: Added Conflict with drbd-util and drbd-module-source
+  * debian/control.in.modules: Fixed description for kernel module
+  * debian/control.in.modules: Added Conflict line in kernel module package
+  * debian/control.in.modules: Change depends to drbd0.7-util
+  * debian/rules: don't use top-level makefile
+  * call depmod in postinst of kernel module
+  * remove obsolete upstream ./debian/ in clean
+  * added module-assistant override file
+
+ -- Philipp Hug <debian at hug.cx>  Tue, 19 Oct 2004 20:50:49 +0200
+
 drbd (0.7.5-1) unstable; urgency=low
 
-  * Added bison, flex to Build-Depends
-  * Call 'make clean' in drbd directory
-  * Upgraded to debian-policy 3.6.1
-  * Rewritten debian/rules using module-assistant
-  * Change binary package name to drbd0.7
-  * Added myself as Uploader
-  * Conflict with drbd and drbd-source
+  * (Cyril Bouthors)
+    - New upstream release (closes: #276640).
+    - debian/drbd0.7.dirs: removed usr/bin (closes: #276643).
+    - debian/control: changed Section from misc to admin.
+    - scripts/drbd: prevent the "stop" target from failing if drbd is not running
+    - debian/rules: call upstream Makefile targets instead of doing hardcoded stuff, clean.  
+    - debian/drbd0.7.docs: added upgrade_0.6.x_to_0.7.0.txt and upgrade_0.7.0_to_0.7.1.txt.
+    - The package drbd as been renamed to drbd0.7-utils and drbd-source as
+      been renamed to drbd0.7-module-source.  We'll introduce drbd0.6-*
+      and drbd*-module soon.
+    - Added myself as Uploader.
 
- -- Philipp Hug <debian at hug.cx>  Tue, 14 Sep 2004 23:25:12 +0200
+  * (Philipp Hug)
+    - Conflict with drbd and drbd-source
+    - Fixed description for kernel modules
+    - Added Conflict line in kernel-module package
+    - Added bison, flex to Build-Depends
+    - Call 'make clean' in drbd directory
+    - Upgraded to debian-policy 3.6.1
+    - Rewritten debian/rules using module-assistant
+    - Change binary package name to drbd0.7
+    - Added myself as Uploader
 
+ -- Cyril Bouthors <cyril at bouthors.org>  Sat, 16 Oct 2004 23:43:27 +0200
+
 drbd (0.7.4-1) unstable; urgency=low
 
   * Fixed a critical bug with Linux-2.4.x and HIGHMEM!

Modified: trunk/debian/control
===================================================================
--- trunk/debian/control	2004-10-20 10:50:10 UTC (rev 1606)
+++ trunk/debian/control	2004-10-20 13:21:23 UTC (rev 1607)
@@ -1,17 +1,18 @@
 Source: drbd
-Section: misc
+Section: admin
 Priority: extra
 Maintainer: David Krovich <dkrovich at csee.wvu.edu>
-Uploaders: Philipp Hug <debian at hug.cx>
+Uploaders: Philipp Hug <debian at hug.cx>, Cyril Bouthors <cyril at bouthors.org>
 Build-Depends: debhelper (>= 4), debconf-utils, sp, docbook-utils, bison, flex
 Standards-Version: 3.6.1
 
-Package: drbd0.7
+Package: drbd0.7-utils
 Architecture: any
-Section: misc
-Depends: debconf, ${misc:Depends}
-Conflicts: drbd
-Provides: drbd
+Section: admin
+Depends: debconf
+Conflicts: drbd-utils, drbd
+Provides: drbd-utils
+Replaces: drbd-utils, drbd
 Suggests: heartbeat
 Description: RAID 1 over tcp/ip for Linux utilities
  Drbd is a block device which is designed to build high availability
@@ -26,12 +27,13 @@
  .
  Homepage: http://www.drbd.org
 
-Package: drbd0.7-source
+Package: drbd0.7-module-source
 Architecture: all
-Section: misc
+Section: admin
 Depends: module-assistant
-Conflicts: drbd-source
-Provides: drbd-source
+Conflicts: drbd-module-source, drbd-source
+Provides: drbd-module-source
+Replaces: drbd-module-source, drbd-source
 Recommends:  dpkg-dev, kernel-package, debhelper (>= 4), debconf-utils
 Description: RAID 1 over tcp/ip for Linux module source
  Drbd is a block device which is designed to build high availability

Modified: trunk/debian/control.modules.in
===================================================================
--- trunk/debian/control.modules.in	2004-10-20 10:50:10 UTC (rev 1606)
+++ trunk/debian/control.modules.in	2004-10-20 13:21:23 UTC (rev 1607)
@@ -3,23 +3,28 @@
 Priority: extra
 Maintainer: David Krovich <dkrovich at csee.wvu.edu>
 Uploaders: Philipp Hug <debian at hug.cx>
-Build-Depends: debhelper (>= 4), drbd-source
+Build-Depends: debhelper (>= 4), drbd0.7-source
 Standards-Version: 3.6.1
 
-Package: drbd-modules-_KVERS_
+Package: drbd0.7-module-_KVERS_
 Architecture: any
-Depends: drbd
+Depends: drbd0.7-utils
+Conflicts: drbd-module-_KVERS_
+Provides: drbd-module-_KVERS_
+Replaces: drbd-module-_KVERS_
 Section: misc
 Recommends: kernel-image-_KVERS_
-Description: RAID 1 over tcp/ip for Linux module source
+Description: RAID 1 over tcp/ip for Linux kernel module
  Drbd is a block device which is designed to build high availability
  clusters by providing a virtual shared device which keeps disks in nodes
  synchronised using TCP/IP. This simulates RAID 1 but avoiding the 
  use of uncommon hardware (shared SCSI buses or Fibre Channel). 
  It is currently limited to fail-over HA clusters.
  .
- This package contains the programs that will control the 
- drbd kernel module provided in drbd-source. You will need a clustering
- service (such as heartbeat) to fully implement it.
+ This package contains the drbd kernel module for the following kernel
+ version: _KVERS_
+ If you want to build drbd against your another kernel, install the
+ drbd-source package and use module-assistant to create a new
+ module package.
  .
  Homepage: http://www.drbd.org

Copied: trunk/debian/drbd0.7-module-_KVERS_.postinst.modules.in (from rev 1604, branches/drbd-0.7/debian/drbd0.7-module-_KVERS_.postinst.modules.in)

Copied: trunk/debian/drbd0.7-module-source.dirs (from rev 1604, branches/drbd-0.7/debian/drbd0.7-module-source.dirs)

Deleted: trunk/debian/drbd0.7-source.dirs
===================================================================
--- trunk/debian/drbd0.7-source.dirs	2004-10-20 10:50:10 UTC (rev 1606)
+++ trunk/debian/drbd0.7-source.dirs	2004-10-20 13:21:23 UTC (rev 1607)
@@ -1,5 +0,0 @@
-usr/src/modules/drbd/debian
-usr/src/modules/drbd/drbd
-
-
-

Copied: trunk/debian/drbd0.7-utils.dirs (from rev 1604, branches/drbd-0.7/debian/drbd0.7-utils.dirs)

Copied: trunk/debian/drbd0.7-utils.docs (from rev 1604, branches/drbd-0.7/debian/drbd0.7-utils.docs)

Copied: trunk/debian/drbd0.7-utils.postinst (from rev 1604, branches/drbd-0.7/debian/drbd0.7-utils.postinst)

Copied: trunk/debian/drbd0.7-utils.postrm (from rev 1604, branches/drbd-0.7/debian/drbd0.7-utils.postrm)

Copied: trunk/debian/drbd0.7-utils.prerm (from rev 1604, branches/drbd-0.7/debian/drbd0.7-utils.prerm)

Deleted: trunk/debian/drbd0.7.conffiles
===================================================================
--- trunk/debian/drbd0.7.conffiles	2004-10-20 10:50:10 UTC (rev 1606)
+++ trunk/debian/drbd0.7.conffiles	2004-10-20 13:21:23 UTC (rev 1607)
@@ -1,2 +0,0 @@
-/etc/drbd.conf
-/etc/ha.d/resource.d/drbddisk

Deleted: trunk/debian/drbd0.7.dirs
===================================================================
--- trunk/debian/drbd0.7.dirs	2004-10-20 10:50:10 UTC (rev 1606)
+++ trunk/debian/drbd0.7.dirs	2004-10-20 13:21:23 UTC (rev 1607)
@@ -1,4 +0,0 @@
-usr/bin
-etc
-etc/init.d
-etc/ha.d/resource.d

Deleted: trunk/debian/drbd0.7.docs
===================================================================
--- trunk/debian/drbd0.7.docs	2004-10-20 10:50:10 UTC (rev 1606)
+++ trunk/debian/drbd0.7.docs	2004-10-20 13:21:23 UTC (rev 1607)
@@ -1 +0,0 @@
-documentation/NFS-Server-README.txt

Deleted: trunk/debian/drbd0.7.install
===================================================================
--- trunk/debian/drbd0.7.install	2004-10-20 10:50:10 UTC (rev 1606)
+++ trunk/debian/drbd0.7.install	2004-10-20 13:21:23 UTC (rev 1607)
@@ -1,5 +0,0 @@
-user/drbdsetup sbin
-user/drbdadm sbin
-scripts/drbd etc/init.d
-scripts/drbddisk etc/ha.d/resource.d
-scripts/drbd.conf etc

Deleted: trunk/debian/drbd0.7.manpages
===================================================================
--- trunk/debian/drbd0.7.manpages	2004-10-20 10:50:10 UTC (rev 1606)
+++ trunk/debian/drbd0.7.manpages	2004-10-20 13:21:23 UTC (rev 1607)
@@ -1,5 +0,0 @@
-documentation/drbd.8
-documentation/drbd.conf.5
-documentation/drbdsetup.8
-documentation/drbdadm.8
-

Deleted: trunk/debian/drbd0.7.postinst
===================================================================
--- trunk/debian/drbd0.7.postinst	2004-10-20 10:50:10 UTC (rev 1606)
+++ trunk/debian/drbd0.7.postinst	2004-10-20 13:21:23 UTC (rev 1607)
@@ -1,14 +0,0 @@
-#!/bin/sh
-
-if [ -x "/etc/init.d/drbd" ]; then
-	update-rc.d drbd defaults 70 8 >/dev/null
-fi
-
-# Make sure /dev/nb[0-7] devices exist
-# cd /dev; for a in `seq 0 7`; do MAKEDEV nb$a; done
-
-for i in `seq 0 15` ; do 
-    test -b /dev/drbd$i || mknod -m 0660 /dev/drbd$i b 147 $i; 
-done
-
-#DEBHELPER#

Deleted: trunk/debian/drbd0.7.postrm
===================================================================
--- trunk/debian/drbd0.7.postrm	2004-10-20 10:50:10 UTC (rev 1606)
+++ trunk/debian/drbd0.7.postrm	2004-10-20 13:21:23 UTC (rev 1607)
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-if [ "$1" = "purge" ] ; then
-	update-rc.d drbd remove >/dev/null
-fi
-#DEBHELPER#

Deleted: trunk/debian/drbd0.7.prerm
===================================================================
--- trunk/debian/drbd0.7.prerm	2004-10-20 10:50:10 UTC (rev 1606)
+++ trunk/debian/drbd0.7.prerm	2004-10-20 13:21:23 UTC (rev 1607)
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-if [ -x "/etc/init.d/drbd" ]; then
-	/etc/init.d/drbd stop
-fi
-#DEBHELPER#

Deleted: trunk/debian/kernel-export-wup.patch
===================================================================
--- trunk/debian/kernel-export-wup.patch	2004-10-20 10:50:10 UTC (rev 1606)
+++ trunk/debian/kernel-export-wup.patch	2004-10-20 13:21:23 UTC (rev 1607)
@@ -1,10 +0,0 @@
---- linux-vanilla/kernel/ksyms.c	Fri Mar 23 12:54:54 2001
-+++ linux/kernel/ksyms.c	Fri Mar 23 12:56:33 2001
-@@ -368,6 +368,7 @@
- EXPORT_SYMBOL(loops_per_jiffy);
- EXPORT_SYMBOL(kstat);
- EXPORT_SYMBOL(pidhash); 
-+EXPORT_SYMBOL(wake_up_process);
- 
- /* misc */
- EXPORT_SYMBOL(panic);

Deleted: trunk/debian/kernel-patch-wup.README.Debian
===================================================================
--- trunk/debian/kernel-patch-wup.README.Debian	2004-10-20 10:50:10 UTC (rev 1606)
+++ trunk/debian/kernel-patch-wup.README.Debian	2004-10-20 13:21:23 UTC (rev 1607)
@@ -1,9 +0,0 @@
-wake_up_process export kernel patch
-----------------------
-
-This patch exports the wake_up_process function so external modules can
-use them.
-One of the modules is drbd, which needs to wake-up processes as a form
-of event handling...
-
- -- Ard van Breemen <ard at telegraafnet.nl>,  Wed, 16 May 2001 15:50:32 +0200

Deleted: trunk/debian/kernel-patch-wup.kpatches
===================================================================
--- trunk/debian/kernel-patch-wup.kpatches	2004-10-20 10:50:10 UTC (rev 1606)
+++ trunk/debian/kernel-patch-wup.kpatches	2004-10-20 13:21:23 UTC (rev 1607)
@@ -1,8 +0,0 @@
-Patch-name: Export wake_up_process
-Patch-id: 50-export-wup
-Architecture: all
-Path-strip-level: 1
-
-Patch-file: debian/kernel-export-wup.patch
-Kernel-version: > 2.2.10
-

Copied: trunk/debian/modass.drbd0.7-module-source (from rev 1604, branches/drbd-0.7/debian/modass.drbd0.7-module-source)

Modified: trunk/debian/rules
===================================================================
--- trunk/debian/rules	2004-10-20 10:50:10 UTC (rev 1606)
+++ trunk/debian/rules	2004-10-20 13:21:23 UTC (rev 1607)
@@ -12,7 +12,7 @@
 # This has to be exported to make some magic below work.
 export DH_OPTIONS
 
-PACKAGE=drbd-modules
+PACKAGE=drbd0.7-module
 MA_DIR ?= /usr/share/modass
 -include $(MA_DIR)/include/generic.make
 -include $(MA_DIR)/include/common-rules.make
@@ -36,7 +36,7 @@
 
 kdist_clean:
 	dh_clean
-	-make -C drbd clean
+	-$(MAKE) -C drbd clean
 
 # prep-deb-files rewrites the debian/ files as needed. See RATIONALE for
 # details
@@ -49,7 +49,7 @@
 	dh_testdir
 	dh_testroot
 	dh_clean -k
-	make -C drbd KERNEL_SOURCES=$(KSRC) MODVERSIONS=detect KERNEL=linux-$(KVERS) KDIR=$(KSRC)
+	$(MAKE) -C drbd KERNEL_SOURCES=$(KSRC) MODVERSIONS=detect KERNEL=linux-$(KVERS) KDIR=$(KSRC)
 	install -m644 -b -D drbd/drbd.$(KO)o $(CURDIR)/debian/$(PKGNAME)/lib/modules/$(KVERS)/kernel/drivers/block/drbd.$(KO)o
 	dh_installdocs
 	dh_installchangelogs
@@ -60,18 +60,16 @@
 	dh_md5sums
 	dh_builddeb --destdir=$(DEB_DESTDIR)
 
-
 #Architecture 
 build: build-arch build-indep
 
 build-arch: build-arch-stamp
 build-arch-stamp: 
 	dh_testdir
-
-	cd user && $(MAKE)
-	cd documentation && $(MAKE) doc
-	cd scripts && $(MAKE)
-
+	$(MAKE) -C user
+	$(MAKE) -C scripts
+	$(MAKE) -C benchmark
+	$(MAKE) -C documentation doc
 	touch build-arch-stamp
 
 build-indep: build-indep-stamp
@@ -82,40 +80,36 @@
 	dh_testdir
 	dh_testroot
 	rm -f build-arch-stamp build-indep-stamp #CONFIGURE-STAMP#
-
-	cd user && $(MAKE) clean
-	cd documentation && $(MAKE) clean
-	cd scripts && $(MAKE) clean
-	cd drbd && $(MAKE) clean
+#	remove these files from upstream tgz
+	rm -f debian/drbd0.7.*
+	rm -f debian/drbd0.7-source.dirs
+	rm -f debian/kernel-patch-wup.kpatches debian/kernel-patch-wup.README.Debian debian/kernel-export-wup.patch
+	-$(MAKE) -C user clean
+	-$(MAKE) -C scripts clean
+	-$(MAKE) -C benchmark clean
+	-$(MAKE) -C documentation clean
+	-$(MAKE) -C drbd clean
 	dh_clean 
 
-install: install-indep install-arch
+install: install-arch install-indep
 install-indep:
 	dh_testdir
 	dh_testroot
 	dh_clean -k -i 
 	dh_installdirs -i
+	cp -a drbd/* debian/$(PACKAGE)-source/usr/src/modules/drbd/drbd
+	cp Makefile debian/$(PACKAGE)-source/usr/src/modules/drbd
+	cp drbd/linux/drbd_config.h debian/$(PACKAGE)-source/usr/src/modules/drbd
+	mkdir debian/$(PACKAGE)-source/usr/src/modules/drbd/scripts/
+	cp -a scripts/adjust_drbd_config_h.sh debian/$(PACKAGE)-source/usr/src/modules/drbd/scripts/
 
+#	 install debian/ files
+	cd debian ; cp changelog control compat *.modules.in rules copyright $(PACKAGE)-source/usr/src/modules/drbd/debian
 
-	cp -a drbd/* debian/drbd0.7-source/usr/src/modules/drbd/drbd
-	cp Makefile debian/drbd0.7-source/usr/src/modules/drbd
-	cp drbd/linux/drbd_config.h debian/drbd0.7-source/usr/src/modules/drbd
-	mkdir debian/drbd0.7-source/usr/src/modules/drbd/scripts/
-	cp -a scripts/adjust_drbd_config_h.sh debian/drbd0.7-source/usr/src/modules/drbd/scripts/
+#	 tar the stuff
+	cd debian/$(PACKAGE)-source/usr/src/ ; tar pzfvc drbd0.7.tar.gz modules ; rm -rf modules
 
-	# install driver source
-	#cp -a drbd debian/drbd0.7-source/usr/src/modules/drbd/
-	#mkdir debian/drbd0.7-source/usr/src/modules/drbd/scripts/
-	#cp -a scripts/adjust_drbd_config_h.sh debian/drbd0.7-source/usr/src/modules/drbd/scripts/
-	#ln -s drbd debian/drbd0.7-source/usr/src/modules/drbd/Linux-2.4
-	#ln -s drbd debian/drbd0.7-source/usr/src/modules/drbd/Linux-2.6
-
-	# install debian/ files
-	cd debian ; cp changelog control compat *.modules.in rules copyright drbd0.7-source/usr/src/modules/drbd/debian
-
-	# tar the stuff
-	cd debian/drbd0.7-source/usr/src/ ; tar pzfvc drbd0.7.tar.gz modules ; rm -rf modules
-
+	install -m 755 $(CURDIR)/debian/modass.drbd0.7-module-source $(CURDIR)/debian/$(PACKAGE)-source/usr/share/modass/overrides/drbd0.7-module-source
 	dh_install -i
 
 install-arch:
@@ -123,6 +117,10 @@
 	dh_testroot
 	dh_clean -k -s 
 	dh_installdirs -s
+	$(MAKE) PREFIX=$(CURDIR)/debian/drbd0.7-utils/ -C user install
+	$(MAKE) PREFIX=$(CURDIR)/debian/drbd0.7-utils/ -C scripts install
+	$(MAKE) PREFIX=$(CURDIR)/debian/drbd0.7-utils/ -C benchmark install
+	$(MAKE) PREFIX=$(CURDIR)/debian/drbd0.7-utils/ -C documentation install
 
 	dh_install -s
 # Must not depend on anything. This is to be called by

Modified: trunk/drbd/drbd_int.h
===================================================================
--- trunk/drbd/drbd_int.h	2004-10-20 10:50:10 UTC (rev 1606)
+++ trunk/drbd/drbd_int.h	2004-10-20 13:21:23 UTC (rev 1607)
@@ -32,7 +32,8 @@
 #include <linux/list.h>
 #include <linux/sched.h>
 #include <linux/bitops.h>
-#include <linux/slab.h> 
+#include <linux/slab.h>
+
 #include "lru_cache.h"
 
 // module parameter, defined in drbd_main.c
@@ -175,11 +176,7 @@
 	 _b; \
 	}))
 
-// to debug dec_*(), while we still have the <0!! issue
-// to debug dec_*(), while we still have the <0!! issue
 #include <linux/stringify.h>
-#define HERE __stringify(__FILE__ __LINE__) // __FUNCTION__
-
 // integer division, round _UP_ to the next integer
 #define div_ceil(A,B) ( (A)/(B) + ((A)%(B) ? 1 : 0) )
 // usual integer division
@@ -1169,47 +1166,84 @@
 	atomic_inc(&mdev->ap_pending_cnt);
 }
 
-static inline void dec_ap_pending(drbd_dev* mdev, const char* where)
-{
-	if(atomic_dec_and_test(&mdev->ap_pending_cnt))
-		wake_up(&mdev->cstate_wait);
+#define ERR_IF_CNT_IS_NEGATIVE(which)				\
+	if(atomic_read(&mdev->which)<0)				\
+		ERR("in %s:%d: " #which " = %d < 0 !\n",	\
+		    __func__ , __LINE__ ,			\
+		    atomic_read(&mdev->which))
 
-	if(atomic_read(&mdev->ap_pending_cnt)<0)
-		ERR("in %s: pending_cnt = %d < 0 !\n",
-		    where,
-		    atomic_read(&mdev->ap_pending_cnt));
-}
+#define dec_ap_pending(mdev)					\
+	typecheck(drbd_dev*,mdev);				\
+	if(atomic_dec_and_test(&mdev->ap_pending_cnt))		\
+		wake_up(&mdev->cstate_wait);			\
+	ERR_IF_CNT_IS_NEGATIVE(ap_pending_cnt)
 
 static inline void inc_rs_pending(drbd_dev* mdev)
 {
 	atomic_inc(&mdev->rs_pending_cnt);
 }
 
-static inline void dec_rs_pending(drbd_dev* mdev, const char* where)
-{
-	atomic_dec(&mdev->rs_pending_cnt);
+#define dec_rs_pending(mdev)					\
+	typecheck(drbd_dev*,mdev);				\
+	atomic_dec(&mdev->rs_pending_cnt);			\
+	ERR_IF_CNT_IS_NEGATIVE(rs_pending_cnt)
 
-	if(atomic_read(&mdev->rs_pending_cnt)<0) 
-		ERR("in %s: rs_pending_cnt = %d < 0 !\n",
-		    where,
-		    atomic_read(&mdev->unacked_cnt));
-}
-
 static inline void inc_unacked(drbd_dev* mdev)
 {
 	atomic_inc(&mdev->unacked_cnt);
 }
 
-static inline void dec_unacked(drbd_dev* mdev,const char* where)
+#if 0 && LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
+/*
+ * idea was to forcefully push the tcp stack whenever the
+ * currently last pending packet is in the buffer.
+ * should be benchmarked on some real box to see if it has any
+ * effect on overall latency.
+ */
+
+/* this only works with 2.6 kernels because of some conflicting defines
+ * in header files included from net.tcp.h.
+ */
+
+#include <net/tcp.h>
+static inline void drbd_push_msock(drbd_dev* mdev)
 {
-	atomic_dec(&mdev->unacked_cnt);
-
-	if(atomic_read(&mdev->unacked_cnt)<0)
-		ERR("in %s: unacked_cnt = %d < 0 !\n",
-		    where,
-		    atomic_read(&mdev->unacked_cnt));
+	struct sock    *sk;
+	struct tcp_opt *tp;
+	if (mdev->meta.socket == NULL) return;
+	sk = mdev->meta.socket->sk;
+	tp = tcp_sk(sk);
+	lock_sock(sk);
+	__tcp_push_pending_frames(sk, tp, tcp_current_mss(sk, 1), TCP_NAGLE_PUSH);
+	release_sock(sk);
 }
 
+#define dec_unacked(mdev)					\
+	might_sleep();						\
+	typecheck(drbd_dev*,mdev);				\
+	if (atomic_dec_and_test(&mdev->unacked_cnt))		\
+		drbd_push_msock(mdev);				\
+	ERR_IF_CNT_IS_NEGATIVE(unacked_cnt);
+
+#define sub_unacked(mdev, n)					\
+	might_sleep();						\
+	typecheck(drbd_dev*,mdev);				\
+	if (atomic_sub_and_test(n, &mdev->unacked_cnt))		\
+		drbd_push_msock(mdev);				\
+	ERR_IF_CNT_IS_NEGATIVE(unacked_cnt);
+#else
+#define dec_unacked(mdev)					\
+	typecheck(drbd_dev*,mdev);				\
+	atomic_dec(&mdev->unacked_cnt);				\
+	ERR_IF_CNT_IS_NEGATIVE(unacked_cnt)
+
+#define sub_unacked(mdev, n)					\
+	typecheck(drbd_dev*,mdev);				\
+	atomic_sub(n, &mdev->unacked_cnt);			\
+	ERR_IF_CNT_IS_NEGATIVE(unacked_cnt)
+#endif
+
+
 /**
  * inc_local: Returns TRUE when local IO is possible. If it returns
  * TRUE you should call dec_local() after IO is completed.

Modified: trunk/drbd/drbd_main.c
===================================================================
--- trunk/drbd/drbd_main.c	2004-10-20 10:50:10 UTC (rev 1606)
+++ trunk/drbd/drbd_main.c	2004-10-20 13:21:23 UTC (rev 1607)
@@ -302,7 +302,7 @@
 			size   = drbd_req_get_size(r);
 			if( !(r->rq_status & RQ_DRBD_SENT) ) {
 				if(mdev->conf.wire_protocol != DRBD_PROT_A )
-					dec_ap_pending(mdev,HERE);
+					dec_ap_pending(mdev);
 				drbd_end_req(r,RQ_DRBD_SENT,ERF_NOTLD|1, sector);
 				goto mark;
 			}
@@ -315,7 +315,7 @@
 		b=b->next;
 		list_del(&f->requests);
 		kfree(f);
-		dec_ap_pending(mdev,HERE); // for the barrier
+		dec_ap_pending(mdev); // for the barrier
 	}
 }
 
@@ -726,7 +726,7 @@
 	inc_ap_pending(mdev);
 	ok = _drbd_send_cmd(mdev,mdev->data.socket,Barrier,(Drbd_Header*)&p,sizeof(p),0);
 
-//	if (!ok) dec_ap_pending(mdev,HERE); // is done in tl_clear()
+//	if (!ok) dec_ap_pending(mdev); // is done in tl_clear()
 	return ok;
 }
 

Modified: trunk/drbd/drbd_receiver.c
===================================================================
--- trunk/drbd/drbd_receiver.c	2004-10-20 10:50:10 UTC (rev 1606)
+++ trunk/drbd/drbd_receiver.c	2004-10-20 13:21:23 UTC (rev 1607)
@@ -401,6 +401,7 @@
 {
 	struct list_head *le;
 	struct Tl_epoch_entry *e;
+	int n = 0;
 
 	spin_lock_irq(&mdev->ee_lock);
 
@@ -412,12 +413,14 @@
 		e = list_entry(le, struct Tl_epoch_entry, w.list);
 		if(mdev->conf.wire_protocol == DRBD_PROT_C ||
 		   is_syncer_blk(mdev,e->block_id)) {
-			dec_unacked(mdev,HERE);
+			++n;
 		}
 		drbd_put_ee(mdev,e);
 	}
 
 	spin_unlock_irq(&mdev->ee_lock);
+
+	sub_unacked(mdev, n);
 }
 
 
@@ -760,7 +763,7 @@
 	spin_unlock_irq(&mdev->ee_lock);
 
 	rv &= drbd_send_b_ack(mdev, p->barrier, epoch_size);
-	dec_unacked(mdev,HERE);
+	dec_unacked(mdev);
 
 	return rv;
 }
@@ -827,7 +830,7 @@
 	drbd_bio_endio(bio,ok);
 	dec_ap_bio(mdev);
 
-	dec_ap_pending(mdev,HERE);
+	dec_ap_pending(mdev);
 	return ok;
 }
 
@@ -854,8 +857,8 @@
 		ok = drbd_send_ack(mdev,NegAck,e);
 		ok&= drbd_io_error(mdev);
 	}
+	dec_unacked(mdev);
 
-	dec_unacked(mdev,HERE);
 	return ok;
 }
 
@@ -866,7 +869,7 @@
 	e = read_in_block(mdev,data_size);
 	if(!e) return FALSE;
 
-	dec_rs_pending(mdev,HERE);
+	dec_rs_pending(mdev);
 
 	e->block_id = ID_SYNCER;
 	if(!inc_local(mdev)) {
@@ -979,7 +982,7 @@
 			 * maybe assert this?
 			 */
 		}
-		dec_unacked(mdev,HERE);
+		dec_unacked(mdev);
 
 		return ok;
 	}
@@ -1560,7 +1563,7 @@
 
 		drbd_bio_IO_error(bio);
 		dec_ap_bio(mdev);
-		dec_ap_pending(mdev,HERE);
+		dec_ap_pending(mdev);
 
 		INVALIDATE_MAGIC(req);
 		mempool_free(req,drbd_request_mempool);
@@ -1996,10 +1999,10 @@
 	}
 
 	if(is_syncer_blk(mdev,p->block_id)) {
-		dec_rs_pending(mdev,HERE);
+		dec_rs_pending(mdev);
 	} else {
 		D_ASSERT(mdev->conf.wire_protocol != DRBD_PROT_A);
-		dec_ap_pending(mdev,HERE);
+		dec_ap_pending(mdev);
 	}
 	return TRUE;
 }
@@ -2013,7 +2016,7 @@
 	 * and will do the cleanup then and there.
 	 */
 	if(is_syncer_blk(mdev,p->block_id)) {
-		dec_rs_pending(mdev,HERE);
+		dec_rs_pending(mdev);
 	}
 	if (DRBD_ratelimit(5*HZ,5))
 		WARN("Got NegAck packet. Peer is in troubles?\n");
@@ -2070,7 +2073,7 @@
 	if(unlikely(test_bit(PARTNER_DISKLESS,&mdev->flags))) return TRUE;
 
 	tl_release(mdev,p->barrier,be32_to_cpu(p->set_size));
-	dec_ap_pending(mdev,HERE);
+	dec_ap_pending(mdev);
 
 	return TRUE;
 }

Modified: trunk/drbd/drbd_req.c
===================================================================
--- trunk/drbd/drbd_req.c	2004-10-20 10:50:10 UTC (rev 1606)
+++ trunk/drbd/drbd_req.c	2004-10-20 13:21:23 UTC (rev 1607)
@@ -310,10 +310,10 @@
 			if (!drbd_send_dblock(mdev,req)) {
 				if (mdev->cstate >= Connected)
 					set_cstate(mdev,NetworkFailure);
-				dec_ap_pending(mdev,HERE);
+				dec_ap_pending(mdev);
 				drbd_thread_restart_nowait(&mdev->receiver);
 			} else if(mdev->conf.wire_protocol == DRBD_PROT_A) {
-				dec_ap_pending(mdev,HERE);
+				dec_ap_pending(mdev);
 				drbd_end_req(req, RQ_DRBD_SENT, 1, sector);
 			}
 		} else if (target_area_out_of_sync) {

Added: trunk/drbd/drbd_strings.c
===================================================================
--- trunk/drbd/drbd_strings.c	2004-10-20 10:50:10 UTC (rev 1606)
+++ trunk/drbd/drbd_strings.c	2004-10-20 13:21:23 UTC (rev 1607)
@@ -0,0 +1,34 @@
+static const char *conn_s_names[] = {
+	[Unconfigured]   = "Unconfigured",
+	[StandAlone]     = "StandAlone",
+	[Unconnected]    = "Unconnected",
+	[Timeout]        = "Timeout",
+	[BrokenPipe]     = "BrokenPipe",
+	[NetworkFailure] = "NetworkFailure",
+	[WFConnection]   = "WFConnection",
+	[WFReportParams] = "WFReportParams",
+	[Connected]      = "Connected",
+	[SkippedSyncS]   = "SkippedSyncS",
+	[SkippedSyncT]   = "SkippedSyncT",
+	[WFBitMapS]      = "WFBitMapS",
+	[WFBitMapT]      = "WFBitMapT",
+	[SyncSource]     = "SyncSource",
+	[SyncTarget]     = "SyncTarget",
+	[PausedSyncS]    = "PausedSyncS",
+	[PausedSyncT]    = "PausedSyncT",
+};
+
+static const char *role_s_names[] = {
+	[Primary]   = "Primary",
+	[Secondary] = "Secondary",
+	[Unknown]   = "Unknown"
+};
+
+static const char *disk_s_names[] = {
+	[Diskless]     = "Diskless",
+	[Failed]       = "Failed",
+	[Inconsistent] = "Inconsistent",
+	[Outdated]     = "Outdated",
+	[Consistent]   = "Consistent",
+	[UpToDate]     = "UpToDate",
+};

Modified: trunk/drbd/drbd_worker.c
===================================================================
--- trunk/drbd/drbd_worker.c	2004-10-20 10:50:10 UTC (rev 1606)
+++ trunk/drbd/drbd_worker.c	2004-10-20 13:21:23 UTC (rev 1607)
@@ -361,7 +361,7 @@
 		if(!drbd_send_drequest(mdev,RSDataRequest,
 				       sector,size,ID_SYNCER)) {
 			ERR("drbd_send_drequest() failed, aborting...");
-			dec_rs_pending(mdev,HERE);
+			dec_rs_pending(mdev);
 			return 0; // FAILED. worker will abort!
 		}
 	}
@@ -428,7 +428,7 @@
 		spin_lock_irq(&mdev->ee_lock);
 		drbd_put_ee(mdev,e);
 		spin_unlock_irq(&mdev->ee_lock);
-		dec_unacked(mdev,HERE);
+		dec_unacked(mdev);
 		return 1;
 	}
 
@@ -441,7 +441,7 @@
 		drbd_io_error(mdev);
 	}
 
-	dec_unacked(mdev,HERE);
+	dec_unacked(mdev);
 
 	spin_lock_irq(&mdev->ee_lock);
 	if( page_count(drbd_bio_get_page(&e->private_bio)) > 1 ) {
@@ -465,7 +465,7 @@
 		spin_lock_irq(&mdev->ee_lock);
 		drbd_put_ee(mdev,e);
 		spin_unlock_irq(&mdev->ee_lock);
-		dec_unacked(mdev,HERE);
+		dec_unacked(mdev);
 		return 1;
 	}
 
@@ -487,7 +487,7 @@
 		drbd_io_error(mdev);
 	}
 
-	dec_unacked(mdev,HERE);
+	dec_unacked(mdev);
 
 	spin_lock_irq(&mdev->ee_lock);
 	if( page_count(drbd_bio_get_page(&e->private_bio)) > 1 ) {

Modified: trunk/drbd/linux/drbd.h
===================================================================
--- trunk/drbd/linux/drbd.h	2004-10-20 10:50:10 UTC (rev 1606)
+++ trunk/drbd/linux/drbd.h	2004-10-20 13:21:23 UTC (rev 1607)
@@ -62,7 +62,7 @@
 };
 
 
-struct disk_config {
+struct __attribute__((packed)) disk_config {
 	IN int      lower_device;
 	IN __u64    disk_size;
 	IN enum io_error_handler on_io_error;
@@ -76,7 +76,7 @@
 	FreezeIO
 };
 
-struct net_config {
+struct __attribute__((packed)) net_config {
 	IN char     my_addr[MAX_SOCK_ADDR];
 	IN int      my_addr_len;
 	IN char     other_addr[MAX_SOCK_ADDR];
@@ -92,7 +92,7 @@
 	IN enum disconnect_handler on_disconnect;
 };
 
-struct syncer_config {
+struct __attribute__((packed)) syncer_config {
 	int      rate; /* KB/sec */
 	int      use_csums;   /* use checksum based syncing*/
 	int      skip;
@@ -122,22 +122,22 @@
 	LDDeviceTooLarge,
 };
 
-struct ioctl_disk_config {
+struct __attribute__((packed)) ioctl_disk_config {
 	struct disk_config    config;
 	OUT enum ret_codes    ret_code;
 };
 
-struct ioctl_net_config {
+struct __attribute__((packed)) ioctl_net_config {
 	struct net_config     config;
 	OUT enum ret_codes    ret_code;
 };
 
-struct ioctl_syncer_config {
+struct __attribute__((packed)) ioctl_syncer_config {
 	struct syncer_config  config;
 	OUT enum ret_codes    ret_code;
 };
 
-struct ioctl_wait {
+struct __attribute__((packed)) ioctl_wait {
 	IN int wfc_timeout;
 	IN int degr_wfc_timeout;
 	OUT int ret_code;
@@ -189,7 +189,7 @@
 # define BDEVNAME_SIZE 32
 #endif
 
-struct ioctl_get_config {
+struct __attribute__((packed)) ioctl_get_config {
 	struct net_config     nconf;
 	struct syncer_config  sconf;
 	OUT int               lower_device_major;

Modified: trunk/testing/Makefile
===================================================================
--- trunk/testing/Makefile	2004-10-20 10:50:10 UTC (rev 1606)
+++ trunk/testing/Makefile	2004-10-20 13:21:23 UTC (rev 1607)
@@ -1,5 +1,5 @@
-PROGRAMS=show_size  access_and_verify
-CFLAGS=-Wall
+PROGRAMS=show_size  access_and_verify ioctl_structs_sizes
+CFLAGS=-Wall -I../drbd
 
 all: $(PROGRAMS)
 

Copied: trunk/testing/ioctl_structs_sizes.c (from rev 1605, branches/drbd-0.7/testing/ioctl_structs_sizes.c)



More information about the drbd-cvs mailing list