Date: Tue, 4 Mar 2008 09:46:15 +0100 From: Thomas Steen Rasmussen <thomas.rasmussen@siminn.dk> To: Pierre Beyssac <beyssac@enst.fr> Cc: "freebsd-scsi@freebsd.org" <freebsd-scsi@freebsd.org> Subject: SV: iscsi initiator speed very low in FreeBSD 7 Message-ID: <4A66E92B3FBF8541A78CD11D1C0E3CFC491D952199@wp-ex02.hq.webpartner.dk> In-Reply-To: <20080227125033.GA35933@bofh.enst.fr> References: <4A66E92B3FBF8541A78CD11D1C0E3CFC491D952009@wp-ex02.hq.webpartner.dk> <20080226155813.GD75747@bofh.enst.fr> <20080226160527.GE75747@bofh.enst.fr> <fq3lrg$iun$2@ger.gmane.org> <20080227125033.GA35933@bofh.enst.fr>
next in thread | previous in thread | raw e-mail | index | archive | help
Hello
The patch works! :) I had some problems getting it to apply cleanly,
due to a (junk?) character in the source file (the file being patched) line 456.
Once I got it applied to a fresh 7 install the speed was considerably better.
In my test setup I got to around 20 megabytes / sec to or from my laptop initiator.
I now need to test the production server with the actual appliance SAN,
and see what kind of speeds I get there. I will revert with the results here.
Until then, thank you very much for your assistance.
Med venlig hilsen / Kind regards
Thomas Steen Rasmussen
Sikkerheds- & Unix-administrator
Siminn
-----Oprindelig meddelelse-----
Fra: owner-freebsd-scsi@freebsd.org [mailto:owner-freebsd-scsi@freebsd.org] På vegne af Pierre Beyssac
Sendt: 27. februar 2008 13:51
Til: Ivan Voras
Cc: freebsd-scsi@freebsd.org
Emne: Re: iscsi initiator speed very low in FreeBSD 7
On Wed, Feb 27, 2008 at 01:45:35PM +0100, Ivan Voras wrote:
> > Better with the patch... :-)
> I think you need to send a file with a .txt extension for it to pass the
> spam / list filters.
Here it is inline...
--- isc_sm.c 2007-07-24 17:35:02.000000000 +0200
+++ /tmp/isc_sm.c 2008-02-26 16:53:54.000000000 +0100
@@ -325,7 +325,9 @@
mtx_unlock(&sp->io_mtx); // XXX
}
#else
+ mtx_lock(&sp->io_mtx); // XXX
wakeup(&sp->flags);
+ mtx_unlock(&sp->io_mtx); // XXX
#endif
return error;
}
@@ -454,6 +456,11 @@
}
}
+/*
+ * Should be called with sp->io_mtx held to avoid race condition
+ * on queue empty.
+ * Returns with sp->io_mtx held.
+ */
static int
proc_out(isc_session_t *sp)
{
@@ -481,6 +488,8 @@
if((pq = i_dqueue_snd(sp, which)) == NULL)
break;
+ mtx_unlock(&sp->io_mtx);
+
pp = &pq->pdu;
bhs = &pp->ipdu.bhs;
switch(bhs->opcode) {
@@ -523,6 +532,8 @@
xdebug("error=%d ndone=%d opcode=0x%x ccb=%p itt=%x",
error, ndone, bhs->opcode, pq->ccb, ntohl(bhs->itt));
if(error == EPIPE) {
+ pdu_free(sp->isc, pq);
+ mtx_lock(&sp->io_mtx);
// XXX: better do some error recovery ...
break;
}
@@ -540,6 +551,7 @@
}
if(pq->ccb == NULL || error)
pdu_free(sp->isc, pq);
+ mtx_lock(&sp->io_mtx);
}
return ndone;
}
@@ -558,13 +570,13 @@
sp->flags |= ISC_SM_RUNNING;
do {
+ mtx_lock(&sp->io_mtx);
if(sp->flags & ISC_SM_HOLD)
odone = 0;
else
odone = proc_out(sp);
sdebug(7, "odone=%d", odone);
if(odone == 0) {
- mtx_lock(&sp->io_mtx);
#ifdef ISC_OWAITING
sp->flags |= ISC_OWAITING;
#endif
@@ -574,8 +586,8 @@
#ifdef ISC_OWAITING
sp->flags &= ~ISC_OWAITING;
#endif
- mtx_unlock(&sp->io_mtx);
}
+ mtx_unlock(&sp->io_mtx);
} while(sp->flags & ISC_SM_RUN);
sp->flags &= ~ISC_SM_RUNNING;
--
A: Yes. Pierre Beyssac pb@enst.fr
>Q: Are you sure?
>>A: Because it reverses the logical flow of conversation.
>>>Q: Why is top posting annoying in email?
_______________________________________________
freebsd-scsi@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-scsi
To unsubscribe, send any mail to "freebsd-scsi-unsubscribe@freebsd.org"
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4A66E92B3FBF8541A78CD11D1C0E3CFC491D952199>
