From patchwork Fri Jan 21 15:54:57 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 495761 X-Patchwork-Delegate: Trond.Myklebust@netapp.com 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 p0LFtEgI021043 for ; Fri, 21 Jan 2011 15:55:15 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752677Ab1AUPzD (ORCPT ); Fri, 21 Jan 2011 10:55:03 -0500 Received: from mail-iy0-f174.google.com ([209.85.210.174]:34532 "EHLO mail-iy0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752369Ab1AUPzC (ORCPT ); Fri, 21 Jan 2011 10:55:02 -0500 Received: by iyj18 with SMTP id 18so1804728iyj.19 for ; Fri, 21 Jan 2011 07:55:01 -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 :user-agent:mime-version:content-type:content-transfer-encoding; bh=k/XvsyJsm08id3nln4K8JWkm3GhrTodZ0xrkS1q3mAU=; b=mEexXC17VhoH4Puzwu2NEKEqxTWh/54YPBxldVk1PDYv72uVRt3/PzdW/KJkwM4bfX qIOWrHms6CJSR3LaEg5E5yP0pbnGyehrzMoNp26K7Dy75+X0SHZUFIgN1O9lgzloJfzL ustGlakcCuhM6ITVUXuEUE43kCIo9rdEfcHWU= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=sender:from:subject:to:cc:date:message-id:user-agent:mime-version :content-type:content-transfer-encoding; b=QGnDXgrO7mibTMWKPgwkxqmSc2r5t/1VqTAp/kbfMBL4u23j21M8HX62Id+jGBe2+U Qpqs9o0+l3vDeGC8y6RlzYwKv1fWWRf7MN1FjBaBNFxlTztUScrOn5PBNqZ/07dsfw92 uFPSXY9fErbUOtx4pVaP5iipCKqngrl95GM1E= Received: by 10.42.167.71 with SMTP id r7mr990039icy.151.1295625301109; Fri, 21 Jan 2011 07:55:01 -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 f7sm7143908icq.17.2011.01.21.07.54.58 (version=TLSv1/SSLv3 cipher=RC4-MD5); Fri, 21 Jan 2011 07:54:59 -0800 (PST) From: Chuck Lever Subject: [PATCH] NFS: Fix "kernel BUG at fs/aio.c:554!" To: trond.myklebust@netapp.com Cc: linux-nfs@vger.kernel.org, wen.gang.wang@oracle.com Date: Fri, 21 Jan 2011 10:54:57 -0500 Message-ID: <20110121155233.4079.12615.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 15:55:15 +0000 (UTC) diff --git a/fs/nfs/direct.c b/fs/nfs/direct.c index e6ace0d..9943a75 100644 --- a/fs/nfs/direct.c +++ b/fs/nfs/direct.c @@ -407,15 +407,18 @@ 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) { + nfs_direct_req_release(dreq); + 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 +844,18 @@ 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) { + nfs_direct_req_release(dreq); + 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,