[DRBD-user] drbd 7 + xfs + 2.6.7

Lars Ellenberg Lars.Ellenberg at linbit.com
Thu Jul 22 12:39:56 CEST 2004

Note: "permalinks" may not be as permanent as we would like,
direct links of old sources may well be a few messages off.


/ 2004-07-21 19:12:52 +0200
\ Lars Ellenberg:
> well, I'm busy committing parts and pieces,
> but nothing that important internally since 1438
> (1439 appears to just be the svn cp . tag/drbd-0.7.0, nothing changed.)
> 
> So I guess I need to be able to reproduce this
> myself before I can start to debug it...
> until then just don't use xfs :(

ok, to admit that, of course you can do something else.
we had similar problems, but thought them to be fixed
some weeks ago. we fixed them by disabling "zero copy network io".

so you could do this:

===========
--- drbd_main.c	(revision 1447)
+++ drbd_main.c	(working copy)
@@ -977,7 +977,8 @@
 		set_bit(UNPLUG_REMOTE,&mdev->flags);
 		ok = drbd_send(mdev,mdev->data.socket,&p,sizeof(p),MSG_MORE) == sizeof(p);
 		if(ok) {
-			if(mdev->conf.wire_protocol == DRBD_PROT_A) {
+			if (mdev->conf.wire_protocol == DRBD_PROT_A ||
+			    drbd_req_get_size(req) < PAGE_SIZE ) {
 				ok = _drbd_send_bio(mdev,&req->private_bio);
 			} else {
 				ok = _drbd_send_zc_bio(mdev,&req->private_bio);
===========


or even replace that branch with just
 			ok = _drbd_send_bio(mdev,&req->private_bio);


will have performance impact (all data has to be copied into the send
buffer first, so cpu is busy allocating memory, and moving data around).

but if then you _still_ get errors involing
"Bad page state at free_hot_cold_page"
then I run out of ideas...

so please, try again.
or, best, before you do:
try with some other file system (ext3 ? ) with blocksize != PAGE_SIZE
(e.g. blocksize 1024) ... if that triggers something strange, then we
have to rethink the zero copy page sending stuff again...

btw, may also partially be some Highmem isssue ...

	Lars Ellenberg



More information about the drbd-user mailing list