From adfef6a451378ea9c5422d2081ec38e21980be99 Mon Sep 17 00:00:00 2001 From: Jakub Bogusz Date: Sat, 8 Sep 2001 08:17:23 +0000 Subject: [PATCH] - fixed URL, added Source0 URL - proper summaries/descriptions (this is really not heartbeat package...) - added using standard kernel module build procedure - separated userland tools into drbdsetup subpackage - kernel 2.4 compatibility patch (not tested) Changed files: drbd-kernel24.patch -> 1.1 drbd.spec -> 1.3 --- drbd-kernel24.patch | 80 ++++++++++++++++++++++++ drbd.spec | 149 ++++++++++++++++++++++++++++++-------------- 2 files changed, 182 insertions(+), 47 deletions(-) create mode 100644 drbd-kernel24.patch diff --git a/drbd-kernel24.patch b/drbd-kernel24.patch new file mode 100644 index 0000000..70ce8d1 --- /dev/null +++ b/drbd-kernel24.patch @@ -0,0 +1,80 @@ +--- drbd.orig/drbd/drbd.c Fri May 25 13:13:22 2001 ++++ drbd/drbd/drbd.c Sat Sep 8 10:04:56 2001 +@@ -404,7 +404,7 @@ + + rlen = rlen + sprintf(buf + rlen, "\n"); + +- for (i = 0; i < NR_REQUEST; i++) { ++ for (i = 0; i < QUEUE_NR_REQUESTS; i++) { + if (my_all_requests[i].rq_status == RQ_INACTIVE) { + l = 'E'; + } else { +@@ -1079,8 +1079,8 @@ + unsigned long flags; + del_timer(&mdev->s_timeout); + spin_lock_irqsave(¤t->sigmask_lock,flags); +- if (sigismember(¤t->signal, DRBD_SIG)) { +- sigdelset(¤t->signal, DRBD_SIG); ++ if (sigismember(¤t->pending.signal, DRBD_SIG)) { ++ sigdelset(¤t->pending.signal, DRBD_SIG); + recalc_sigpending(current); + spin_unlock_irqrestore(¤t->sigmask_lock,flags); + +@@ -1237,7 +1237,7 @@ + + void drbd_dio_end(struct buffer_head *bh, int uptodate) + { +- struct request *req = bh->b_dev_id; ++ struct request *req = bh->b_private; + + // READs are sorted out in drbd_end_req(). + drbd_end_req(req, RQ_DRBD_WRITTEN, uptodate); +@@ -1356,7 +1356,7 @@ + #endif + + bh->b_list = BUF_LOCKED; +- bh->b_dev_id = req; ++ bh->b_private = req; + bh->b_end_io = drbd_dio_end; + + if(req->cmd == WRITE) +@@ -2222,8 +2222,8 @@ + unsigned long flags; + del_timer(&accept_timeout); + spin_lock_irqsave(¤t->sigmask_lock,flags); +- if (sigismember(¤t->signal, DRBD_SIG)) { +- sigdelset(¤t->signal, DRBD_SIG); ++ if (sigismember(¤t->pending.signal, DRBD_SIG)) { ++ sigdelset(¤t->pending.signal, DRBD_SIG); + recalc_sigpending(current); + spin_unlock_irqrestore(¤t->sigmask_lock, + flags); +@@ -2453,7 +2453,7 @@ + return FALSE; + + mark_buffer_uptodate(bh, 0); +- mark_buffer_dirty(bh, 1); ++ mark_buffer_dirty(bh); + + if (drbd_conf[minor].conf.wire_protocol == DRBD_PROT_B + && header.block_id != ID_SYNCER) { +@@ -2480,7 +2480,7 @@ + */ + + if (drbd_conf[minor].conf.wire_protocol == DRBD_PROT_C) { +- if (drbd_conf[minor].unacked_cnt >= (NR_REQUEST / 4)) { ++ if (drbd_conf[minor].unacked_cnt >= (QUEUE_NR_REQUESTS / 4)) { + run_task_queue(&tq_disk); + } + } +@@ -2869,8 +2869,8 @@ + thi->t_state = Running; + wake_up(&thi->wait); + spin_lock_irqsave(¤t->sigmask_lock,flags); +- if (sigismember(¤t->signal, SIGTERM)) { +- sigdelset(¤t->signal, SIGTERM); ++ if (sigismember(¤t->pending.signal, SIGTERM)) { ++ sigdelset(¤t->pending.signal, SIGTERM); + recalc_sigpending(current); + } + spin_unlock_irqrestore(¤t->sigmask_lock,flags); diff --git a/drbd.spec b/drbd.spec index 3192274..5c87866 100644 --- a/drbd.spec +++ b/drbd.spec @@ -1,72 +1,127 @@ -Summary: drbd -Summary(pl): drbd +%define _kernel_ver %(grep UTS_RELEASE %{_kernelsrcdir}/include/linux/version.h 2>/dev/null | cut -d'"' -f2) +%define _kernel24 %(echo %{_kernel_ver} | grep -q '2\.[012]\.' ; echo $?) +%define smpstr %{?_with_smp:smp}%{!?_with_smp:up} +%define smp %{?_with_smp:1}%{!?_with_smp:0} + +%define rel 1 + +Summary: drbd is a block device designed to build high availibility clusters +Summary(pl): drbd jest urz±dzeniem blokowym dla klastrów o wysokiej niezawodno¶ci Name: drbd Version: 0.5.8 -Release: 1 +Release: %{rel}@%{_kernel_ver}%{smpstr} License: GPL -Group: Utilities -###### Unknown group! -Group(pl): Narzêdzia -Source0: %{name}-%{version}.tar.gz -URL: http://complang.tuwien.ac.at/reisner/drbd/ +Group: Base/Kernel +Group(de): Grundsätzlich/Kern +Group(pl): Podstawowe/J±dro +Source0: http://www.complang.tuwien.ac.at/reisner/drbd/download/%{name}-%{version}.tar.gz +Patch0: %{name}-kernel24.patch +URL: http://www.complang.tuwien.ac.at/reisner/drbd/ +Prereq: /sbin/depmod +Conflicts: kernel < %{_kernel_ver}, kernel > %{_kernel_ver} +Conflicts: kernel-%{?_with_smp:up}%{!?_with_smp:smp} BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) -%define _kernelversion 2.2.19 - %description -heartbeat is a basic heartbeat subsystem for Linux-HA. It will run -scripts at initialization, and when machines go up or down. This -version will also perform IP address takeover using gratuitous ARPs. -It works correctly for a 2-node configuration, and is extensible to -larger configurations. - -It implements the following kinds of heartbeats: - - Bidirectional Serial Rings ("raw" serial ports) - - UDP/IP broadcast (ethernet, etc) - - Bidirectional Serial PPP/UDP Rings (using PPP) +drbd is a block device which is designed to build high availability +clusters. This is done by mirroring a whole block device via (a +dedicated) network. You could see it as a network RAID1. %description -l pl -heartbeat jest podstawowym podsystemem dla systemów o podwy¿szonej -dostêpno¶ci budowanych w oparciu o Linuxa. Zajmuje siê uruchamianiem -skryptów podczas startu i zamykania systemu. Ta wersja pakietu pozwala -na przejmowanie adresów IP. Oprogramowanie dzia³a poprawnie dla -konfiguracji sk³adaj±cej siê z 2 hostów, mo¿na je równie¿ stosowaæ do -bardziej skomplikowanych konfiguracji. +drbd jest urz±dzeniem blokowym zaprojektowanym dla klastrów o wysokiej +niezawodno¶ci. drbd dzia³a jako mirroring ca³ego urz±dzenia blokowego +przez (dedykowan±) sieæ. Mo¿e byæ widoczny jako sieciowy RAID1. + +%package -n drbdsetup +Summary: Setup tool and scripts for DRBD +Summary(pl): Narzêdzie konfiguracyjne i skrypty dla DRBD +Release: %{rel} +Group: Applications/System +Group(de): Applikationen/System +Group(pl): Aplikacje/System +Prereq: chkconfig +Requires: %{name} = %{version} + +%description -n drbdsetup +Setup tool and init scripts for DRBD. + +%description -n drbdsetup -l pl +Narzêdzie konfiguracyjne i skrypty startowe dla DRBD. %prep %setup -q -n %{name} +%if %{_kernel24} +%patch -p1 +%endif %build -%{__make} +%if %{smp} +SMP="-D__SMP__" +%endif +%{__make} \ +%ifarch %{ix86} + KAF_i386="%{rpmcflags} -malign-loops=2 -malign-jumps=2 -malign-functions=2 -fomit-frame-pointer" \ +%else +%ifarch %{alpha} + KAF_alpha="%{rpmcfalgs} -ffixed8 -mno-fp-regs" \ +%endif +%endif + SMPFLAG="$SMP" \ + KERNVER="%{_kernel_ver}" \ + INCLUDE="-I%{_kernelsrcdir}/include" \ + DEBUGFLAGS="%{rpmcflags} %{?debug:-DDBG}" %install rm -rf $RPM_BUILD_ROOT -install -d $RPM_BUILD_ROOT%{_sbindir} - -#%{__make} install PREFIX=$RPM_BUILD_ROOT/ -#dir drbd -install -d $RPM_BUILD_ROOT/lib/modules/%{_kernelversion}/block/ -install drbd/drbd.o $RPM_BUILD_ROOT/lib/modules/%{_kernelversion}/block/ -#dir user -install user/drbdsetup $RPM_BUILD_ROOT%{_sbindir}/ -#dir documentation -install -d $RPM_BUILD_ROOT/%{_defaultdocdir}/%{name} -cd documentation -install drbd.conf.5 drbd.conf.sgml drbdsetup.8 drbdsetup.sgml manpage.links manpage.refs $RPM_BUILD_ROOT/%{_defaultdocdir}/%{name} +install -d $RPM_BUILD_ROOT{%{_sbindir},%{_mandir}/man{5,8},%{_sysconfdir}} \ + $RPM_BUILD_ROOT{/etc/rc.d/init.d,/etc/ha.d/resource.d} -%post -/sbin/depmod +%if %{_kernel24} +install -d $RPM_BUILD_ROOT/lib/modules/%{_kernel_ver}/misc +install drbd/drbd.o $RPM_BUILD_ROOT/lib/modules/%{_kernel_ver}/misc +%else +install -d $RPM_BUILD_ROOT/lib/modules/%{_kernel_ver}/block +install drbd/drbd.o $RPM_BUILD_ROOT/lib/modules/%{_kernel_ver}/block +%endif + +install user/drbdsetup $RPM_BUILD_ROOT%{_sbindir} +install scripts/drbd.conf $RPM_BUILD_ROOT%{_sysconfdir} +install scripts/drbd $RPM_BUILD_ROOT/etc/rc.d/init.d +ln -sf /etc/rc.d/init.d/drbd $RPM_BUILD_ROOT/etc/ha.d/resource.d/datadisk -%preun -/sbin/depmod +install documentation/drbd.conf.5 $RPM_BUILD_ROOT%{_mandir}/man5 +install documentation/drbdsetup.8 $RPM_BUILD_ROOT%{_mandir}/man8 + +gzip -9nf ChangeLog README TODO %clean rm -rf $RPM_BUILD_ROOT +%post +/sbin/depmod -a + +%postun +/sbin/depmod -a + +%post -n drbdsetup +chkconfig --add drbd + +%preun -n drbdsetup +chkconfig --del drbd + %files %defattr(644,root,root,755) -%doc %{_defaultdocdir}/%{name} +%doc *.gz +%if %{_kernel24} +/lib/modules/%{_kernel_ver}/misc/drbd.o +%else +/lib/modules/%{_kernel_ver}/block/drbd.o +%endif + +%files -n drbdsetup +%defattr(644,root,root,755) %attr(755,root,root) %{_sbindir}/drbdsetup -/lib/modules/%{_kernelversion}/block/drbd.o -%{_mandir}/man8/* -%{_mandir}/man5/* +%attr(755,root,root) /etc/rc.d/init.d/drbd +%attr(755,root,root) /etc/ha.d/resource.d/datadisk +%config(noreplace) %verify(not size mtime md5) %{_sysconfdir}/drbd.conf +%{_mandir}/man[58]/* -- 2.44.0