[DRBD-cvs] drbd by phil; Bug fixes all over the place. * drbd_set...

drbd-user@lists.linbit.com drbd-user@lists.linbit.com
Sun, 7 Mar 2004 09:46:42 +0100 (CET)


DRBD CVS committal

Author  : phil
Module  : drbd

Dir     : drbd/drbd


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


Log Message:
Bug fixes all over the place.

* drbd_set_my_capacity() was only setting the size of our enclosing
  gendisk, but not the size of the block device. FIXED.

* If the asender terminates by itself, it could happen that wake_asender()
  calls force_sig() with task=NULL. FIXED.

* la_size should be set as soon as we have written this to stable storage.    

===================================================================
RCS file: /var/lib/cvs/drbd/drbd/drbd/Attic/drbd_compat_wrappers.h,v
retrieving revision 1.1.2.31
retrieving revision 1.1.2.32
diff -u -3 -r1.1.2.31 -r1.1.2.32
--- drbd_compat_wrappers.h	6 Mar 2004 08:45:28 -0000	1.1.2.31
+++ drbd_compat_wrappers.h	7 Mar 2004 08:46:37 -0000	1.1.2.32
@@ -307,6 +307,7 @@
 static inline void drbd_set_my_capacity(drbd_dev *mdev, sector_t size)
 {
 	set_capacity(mdev->vdisk,size);
+	mdev->this_bdev->bd_inode->i_size = size << 9;
 }
 
 //#warning "FIXME why don't we care for the return value?"
===================================================================
RCS file: /var/lib/cvs/drbd/drbd/drbd/drbd_int.h,v
retrieving revision 1.58.2.132
retrieving revision 1.58.2.133
diff -u -3 -r1.58.2.132 -r1.58.2.133
--- drbd_int.h	6 Mar 2004 13:28:13 -0000	1.58.2.132
+++ drbd_int.h	7 Mar 2004 08:46:37 -0000	1.58.2.133
@@ -1012,7 +1012,9 @@
 }
 
 static inline void wake_asender(drbd_dev *mdev) {
-	force_sig(DRBD_SIG, mdev->asender.task);
+	if(mdev->asender.task) { // could be wrong if asender just terminated.
+		force_sig(DRBD_SIG, mdev->asender.task);
+	}
 }
 
 static inline void request_ping(drbd_dev *mdev) {
===================================================================
RCS file: /var/lib/cvs/drbd/drbd/drbd/drbd_main.c,v
retrieving revision 1.73.2.139
retrieving revision 1.73.2.140
diff -u -3 -r1.73.2.139 -r1.73.2.140
--- drbd_main.c	6 Mar 2004 20:31:59 -0000	1.73.2.139
+++ drbd_main.c	7 Mar 2004 08:46:37 -0000	1.73.2.140
@@ -1955,6 +1955,7 @@
 	sector = drbd_md_ss(mdev) + MD_GC_OFFSET;
 
 	drbd_md_sync_page_io(mdev,sector,WRITE);
+	mdev->la_size = drbd_get_capacity(mdev->this_bdev)>>1;
 
 	up(&mdev->md_io_mutex);
 	dec_local(mdev);