[DRBD-cvs] drbd by phil; Various mirco fixes by LGE

drbd-user@lists.linbit.com drbd-user@lists.linbit.com
Sat, 17 Jan 2004 21:17:38 +0100 (CET)


DRBD CVS committal

Author  : phil
Module  : drbd

Dir     : drbd/drbd


Modified Files:
      Tag: rel-0_7-branch
	drbd_int.h drbd_main.c 


Log Message:
Various mirco fixes by LGE

===================================================================
RCS file: /var/lib/cvs/drbd/drbd/drbd/drbd_int.h,v
retrieving revision 1.58.2.95
retrieving revision 1.58.2.96
diff -u -3 -r1.58.2.95 -r1.58.2.96
--- drbd_int.h	16 Jan 2004 13:26:43 -0000	1.58.2.95
+++ drbd_int.h	17 Jan 2004 20:17:38 -0000	1.58.2.96
@@ -42,19 +42,25 @@
    left on all_requests...
    look out for NBD_MAJOR in ll_rw_blk.c */
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
 /*lge: this hack is to get rid of the compiler warnings about
  * 'do_nbd_request declared static but never defined'
  * whilst forcing blk.h defines on
  * though we probably do not need them, we do not use them...
  * would not work without LOCAL_END_REQUEST
  */
-#define MAJOR_NR DRBD_MAJOR
-#define DEVICE_ON(device)
-#define DEVICE_OFF(device)
-#define DEVICE_NR(device) (MINOR(device))
-#define LOCAL_END_REQUEST
-#include <linux/blk.h>
-#define DRBD_MAJOR NBD_MAJOR
+# define MAJOR_NR DRBD_MAJOR
+# define DEVICE_ON(device)
+# define DEVICE_OFF(device)
+# define DEVICE_NR(device) (MINOR(device))
+# define LOCAL_END_REQUEST
+# include <linux/blk.h>
+# define DRBD_MAJOR NBD_MAJOR
+#else
+# include <linux/blkdev.h>
+# include <linux/bio.h>
+# define MAJOR_NR NBD_MAJOR
+#endif
 
 #undef DEVICE_NAME
 #define DEVICE_NAME "drbd"
@@ -695,7 +701,7 @@
 	spinlock_t tl_lock;
 	struct drbd_barrier* newest_barrier;
 	struct drbd_barrier* oldest_barrier;
-	unsigned int flags;
+	unsigned long flags;
 	struct task_struct *send_task; /* about pid calling drbd_send */
 	spinlock_t send_task_lock;
 	sector_t rs_left;     // blocks not up-to-date [unit sectors]
@@ -869,19 +875,14 @@
 		      unsigned int cmd, unsigned long arg);
 
 // drbd_dsender.c
-//extern int drbd_dsender(struct Drbd_thread *thi);
 extern int drbd_worker(struct Drbd_thread *thi);
 extern void enslaved_read_bh_end_io(struct buffer_head *bh, int uptodate);
 extern void drbd_start_resync(drbd_dev *mdev, Drbd_CState side);
-extern unsigned long drbd_hash(struct buffer_head *bh);
 // worker callbacks
 extern int w_e_end_data_req      (drbd_dev *mdev, struct drbd_work*w);
 extern int w_e_end_rsdata_req    (drbd_dev *mdev, struct drbd_work*w);
-extern int w_make_resync_request (drbd_dev *mdev, struct drbd_work*w);
 extern int w_resync_finished     (drbd_dev *mdev, struct drbd_work*w);
 extern int w_resync_inactive     (drbd_dev *mdev, struct drbd_work*w);
-extern int w_resync_source       (drbd_dev *mdev, struct drbd_work*w);
-extern int w_start_resync        (drbd_dev *mdev, struct drbd_work*w);
 
 // drbd_receiver.c
 extern int drbd_release_ee(drbd_dev* mdev,struct list_head* list);
===================================================================
RCS file: /var/lib/cvs/drbd/drbd/drbd/drbd_main.c,v
retrieving revision 1.73.2.98
retrieving revision 1.73.2.99
diff -u -3 -r1.73.2.98 -r1.73.2.99
--- drbd_main.c	15 Jan 2004 21:38:43 -0000	1.73.2.98
+++ drbd_main.c	17 Jan 2004 20:17:38 -0000	1.73.2.99
@@ -708,7 +708,7 @@
 		offset = (int)bh->b_data - (int)page_address(page);
 	do {
 		sent = mdev->data.socket->ops->sendpage(mdev->data.socket, page, offset, size, MSG_NOSIGNAL);
-		if (sent == -EINTR) {
+		if (sent == -EAGAIN) {
 			// FIXME move "retry--" into drbd_retry_send()
 			if (drbd_retry_send(mdev,mdev->data.socket) && retry--)
 				continue;
@@ -872,10 +872,15 @@
 
 	do {
 		/* STRANGE
-		 * tcp_sendmsg does _not_ use its size parameter at all ???
+		 * tcp_sendmsg does _not_ use its size parameter at all ?
+		 *
+		 * -EAGAIN on timeout, -EINTR on signal.
+		 */
+		/* THINK
+		 * do we need to block DRBD_SIG if sock == &meta.socket ??
 		 */
 		rv = sock_sendmsg(sock, &msg, iov.iov_len );
-		if (rv == -EINTR) {
+		if (rv == -EAGAIN) {
 			// FIXME move "retry--" into drbd_retry_send()
 			if (drbd_retry_send(mdev,sock) && retry--)
 				continue;
@@ -893,7 +898,7 @@
 	// unlock_kernel();
 
 	if (rv <= 0) {
-		if (rv != -EINTR) {
+		if (rv != -EAGAIN) {
 			ERR("%s_sendmsg returned %d\n",
 			    sock == mdev->meta.socket ? "msock" : "sock",
 			    rv);
@@ -1308,6 +1313,9 @@
 	SZO(struct buffer_head);
 	SZO(Drbd_Polymorph_Packet);
 	SZO(struct drbd_socket);
+	SZO(struct semaphore);
+	SZO(wait_queue_head_t);
+	SZO(spinlock_t);
 	return -EBUSY;
 #endif