[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