Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753302AbYLAXpr (ORCPT ); Mon, 1 Dec 2008 18:45:47 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1751253AbYLAXph (ORCPT ); Mon, 1 Dec 2008 18:45:37 -0500 Received: from e6.ny.us.ibm.com ([32.97.182.146]:45682 "EHLO e6.ny.us.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751068AbYLAXpg (ORCPT ); Mon, 1 Dec 2008 18:45:36 -0500 Date: Mon, 1 Dec 2008 15:45:29 -0800 From: Mike Anderson To: Tejun Heo Cc: Jens Axboe , James Bottomley , linux-scsi , Linux Kernel , Hannes Reinecke Subject: Re: [PATCH 2.6.28-rc6] block: internal dequeue shouldn't start timer Message-ID: <20081201234529.GA14025@linux.vnet.ibm.com> References: <492F6DFC.3010103@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <492F6DFC.3010103@kernel.org> User-Agent: Mutt/1.5.18 (2008-05-17) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1644 Lines: 40 Tejun Heo wrote: > blkdev_dequeue_request() and elv_dequeue_request() are equivalent and > both start the timeout timer. Barrier code dequeues the original > barrier request but doesn't passes the request itself to lower level > driver, only broken down proxy requests; however, as the original > barrier code goes through the same dequeue path and timeout timer is > started on it. If barrier sequence takes long enough, this timer > expires but the low level driver has no idea about this request and > oops follows. > > Timeout timer shouldn't have been started on the original barrier > request as it never goes through actual IO. This patch unexports > elv_dequeue_request(), which has no external user anyway, and makes it > operate on elevator proper w/o adding the timer and make > blkdev_dequeue_request() call elv_dequeue_request() and add timer. > Internal users which don't pass the request to driver - barrier code > and end_that_request_last() - are converted to use > elv_dequeue_request(). > > Signed-off-by: Tejun Heo > Cc: Mike Anderson > --- > Mike, this should fix the problem you were seeing (blk_add_timer on > requests w/o REQ_STARTED set). > Yes this fixed the "w/o REQ_STARTED" error I was seeing on a distro kernel and a mainline system. Thanks, -andmike -- Michael Anderson andmike@linux.vnet.ibm.com -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/