From owner-aic7xxx Mon Mar 11 8:13:55 2002 Delivered-To: aic7xxx@freebsd.org Received: from aslan.scsiguy.com (aslan.scsiguy.com [63.229.232.106]) by hub.freebsd.org (Postfix) with ESMTP id CF9D437B416 for ; Mon, 11 Mar 2002 08:13:51 -0800 (PST) Received: from scsiguy.com (localhost [127.0.0.1]) by aslan.scsiguy.com (8.11.6/8.11.5) with ESMTP id g2BGFpI11861; Mon, 11 Mar 2002 09:15:51 -0700 (MST) (envelope-from gibbs@scsiguy.com) Message-Id: <200203111615.g2BGFpI11861@aslan.scsiguy.com> To: njh@tadpole.co.uk Cc: aic7xxx@FreeBSD.ORG Subject: Re: ahc_platform_abort_scbs() In-Reply-To: Your message of "Mon, 11 Mar 2002 15:56:56 GMT." <200203111556.g2BFuuw04505@njh-1.tadpole.co.uk> Date: Mon, 11 Mar 2002 09:15:51 -0700 From: "Justin T. Gibbs" Sender: owner-aic7xxx@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.org >As I said, it isn't the TAILQ_REMOVE that concerns me, it's the >while(TAILQ_FIRST) when the thing being checked doesn't change in the loop. I must be reading different code than you. From the 6.2.5 linux driver: while ((acmd = TAILQ_FIRST(busyq)) != NULL) { [ other non-relevent stuff] TAILQ_REMOVE(busyq, acmd, acmd_links.tqe); [ more non-relevent stuff] } We are removing the first element from the TAILQ until all are removed. The head element will eventually go NULL unless you have created some kind of list corruption. >After all how else would you explain the non-terminating loop I see? Since you've ported this code to Solaris, I wouldn't hazard a guess unless I had reviewed the code and was at the machine with a debugger. -- Justin To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe aic7xxx" in the body of the message