From patchwork Fri Jan 21 03:05:08 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 493881 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter1.kernel.org (8.14.4/8.14.3) with ESMTP id p0L34vwm007223 for ; Fri, 21 Jan 2011 03:05:13 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752314Ab1AUDFM (ORCPT ); Thu, 20 Jan 2011 22:05:12 -0500 Received: from mail-vw0-f46.google.com ([209.85.212.46]:51230 "EHLO mail-vw0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753046Ab1AUDFL (ORCPT ); Thu, 20 Jan 2011 22:05:11 -0500 Received: by mail-vw0-f46.google.com with SMTP id 16so612009vws.19 for ; Thu, 20 Jan 2011 19:05:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:sender:from:subject:to:cc:date:message-id :in-reply-to:references:user-agent:mime-version:content-type :content-transfer-encoding; bh=Wqqj6KGYjHT9AeJcNbkvS8A2loWWrOD5FxIv3kbi8jg=; b=r90w2c4FR05AZljvrk5dGw1Nqa7hyyAeZrYNKgV9U4+rNLBVv7L85Tu7+0XxlcMvSa RYDJ++sxtnsEXbNCKtWhwN+4UQTqmz9yeSGbMwikelQKW3aF0R536TieiHOEJCjXKz+E tKetlVmQ0DsbH2/KIOFThEefRvUajC9FaR+jw= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=sender:from:subject:to:cc:date:message-id:in-reply-to:references :user-agent:mime-version:content-type:content-transfer-encoding; b=QaUWzKGXE7DaGl/fVdZrZ6EmfQ6BarpRT4dG8vaqfSpzg63WrfXepBTsP4ignY3RJI 8zaVuQ1Yxbzdeve1Z3Koq8zlXg1L3LTPzIUloCLs+8OsefrYEc4mmRZBr7Xc/NXnOaAx GyNB/LLtaQovzScx3Z28RSeSVW8X30iGd0c1k= Received: by 10.220.110.38 with SMTP id l38mr21353vcp.238.1295579110943; Thu, 20 Jan 2011 19:05:10 -0800 (PST) Received: from matisse.1015granger.net (adsl-99-26-161-222.dsl.sfldmi.sbcglobal.net [99.26.161.222]) by mx.google.com with ESMTPS id v26sm3064522vcr.13.2011.01.20.19.05.09 (version=TLSv1/SSLv3 cipher=RC4-MD5); Thu, 20 Jan 2011 19:05:10 -0800 (PST) From: Chuck Lever Subject: [PATCH 1/4] NFS: Fix "kernel BUG at fs/aio.c:554!" To: trond.myklebust@netapp.com Cc: linux-nfs@vger.kernel.org Date: Thu, 20 Jan 2011 22:05:08 -0500 Message-ID: <20110121030508.1056.51625.stgit@matisse.1015granger.net> In-Reply-To: <20110121030314.1056.96774.stgit@matisse.1015granger.net> References: <20110121030314.1056.96774.stgit@matisse.1015granger.net> User-Agent: StGIT/0.14.3 MIME-Version: 1.0 Sender: linux-nfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.6 (demeter1.kernel.org [140.211.167.41]); Fri, 21 Jan 2011 03:05:13 +0000 (UTC) diff --git a/fs/nfs/direct.c b/fs/nfs/direct.c index e6ace0d..bde25ca 100644 --- a/fs/nfs/direct.c +++ b/fs/nfs/direct.c @@ -407,15 +407,16 @@ static ssize_t nfs_direct_read_schedule_iovec(struct nfs_direct_req *dreq, pos += vec->iov_len; } + /* + * If no bytes were started, return the error, and let the + * generic layer handle the completion. + */ + if (requested_bytes == 0) + return result < 0 ? result : -EIO; + if (put_dreq(dreq)) nfs_direct_complete(dreq); - - if (requested_bytes != 0) - return 0; - - if (result < 0) - return result; - return -EIO; + return 0; } static ssize_t nfs_direct_read(struct kiocb *iocb, const struct iovec *iov, @@ -841,15 +842,16 @@ static ssize_t nfs_direct_write_schedule_iovec(struct nfs_direct_req *dreq, pos += vec->iov_len; } + /* + * If no bytes were started, return the error, and let the + * generic layer handle the completion. + */ + if (requested_bytes == 0) + return result < 0 ? result : -EIO; + if (put_dreq(dreq)) nfs_direct_write_complete(dreq, dreq->inode); - - if (requested_bytes != 0) - return 0; - - if (result < 0) - return result; - return -EIO; + return 0; } static ssize_t nfs_direct_write(struct kiocb *iocb, const struct iovec *iov,