From mboxrd@z Thu Jan 1 00:00:00 1970 From: bugzilla-daemon@bugzilla.kernel.org Subject: [Bug 15565] SCSI Generic queueing completes commands in reverse order Date: Thu, 18 Mar 2010 10:33:54 GMT Message-ID: <201003181033.o2IAXsfr015339@demeter.kernel.org> References: Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Return-path: Received: from demeter.kernel.org ([140.211.167.39]:58704 "EHLO demeter.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752098Ab0CRKd4 (ORCPT ); Thu, 18 Mar 2010 06:33:56 -0400 Received: from demeter.kernel.org (localhost.localdomain [127.0.0.1]) by demeter.kernel.org (8.14.3/8.14.3) with ESMTP id o2IAXslm015340 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Thu, 18 Mar 2010 10:33:54 GMT In-Reply-To: Sender: linux-scsi-owner@vger.kernel.org List-Id: linux-scsi@vger.kernel.org To: linux-scsi@vger.kernel.org http://bugzilla.kernel.org/show_bug.cgi?id=15565 --- Comment #3 from Anonymous Emailer 2010-03-18 10:32:31 --- Reply-To: bharrosh@panasas.com On 03/18/2010 04:19 AM, Douglas Gilbert wrote: > bugzilla-daemon@bugzilla.kernel.org wrote: >> http://bugzilla.kernel.org/show_bug.cgi?id=15565 >> >> Summary: SCSI Generic queueing completes commands in reverse >> order >> Product: IO/Storage >> Version: 2.5 >> Kernel Version: 2.6.18-2.6.32 >> Platform: All >> OS/Version: Linux >> Tree: Mainline >> Status: NEW >> Severity: normal >> Priority: P1 >> Component: SCSI >> AssignedTo: linux-scsi@vger.kernel.org >> ReportedBy: mh-linux-kernel@loup.net >> Regression: No >> >> >> I've noticed after queueing the first command, subsequent commands >> appear to be executed and complete in reverse order. The SCSI Generic >> HOWTO says "By default, read() will return the oldest completed >> request that is queued up." >> >> This could also be a performance defect if it's what's really >> happening since it isn't desirable behavior if, for example, ios are >> typically ordered by lba and issued one at a time by kernel to a non >> queueing block device. >> >> This reverse order behavior is trivial to reproduce; just queue 16 >> concurrent INQUIRY commands. The following are typical results I get >> from initially queueing 16 READ_10 commands. >> >> Completion Command # hdr.driver_duration (us) >> Order >> 1 22 14979 >> 2 20 14981 >> 3 19 14982 >> 4 17 14984 >> 5 16 14985 >> 6 15 14986 >> 7 14 14988 >> 8 12 14990 >> 9 11 14991 >> 10 10 14992 >> > > I have been told that is a feature :-) > > The SCSI mid level processes commands from > pass-throughs (e.g. sg and bsg) in LIFO order. > For certain types of error processing it makes > sense. For READs and WRITEs it makes no sense. > I have fixed that for bsg long ago. There is a flag that you put: sg.flags = BSG_FLAG_Q_AT_TAIL; Which will do the by order, queue at tail. Zero was kept compatible to sg meaning "queue at head" i.e. jump the line. > Doug Gilbert > It could be added to sg as well if needed Boaz -- Configure bugmail: http://bugzilla.kernel.org/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug.