From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.2 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4C819C10F14 for ; Thu, 18 Apr 2019 18:43:06 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 1C5F52064A for ; Thu, 18 Apr 2019 18:43:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1555612986; bh=4AO3aWtjxzFyjK3CTCqJFiG42lHfSIUkQSMS614FJnM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=iLL9OUeGCExpBmnHQgPE2juX3PBYX6O8RzbjHBkDXDHWYaFRErzSmg4oGnGXZ+Qbw VlHM8MSwj3/Wn2rm64TnuoayLyZkxRtcknb1NOwd+A0WZsHYr9itWFrB4IjRUuoXCF cRZyj+rrZuCk9P/W546CDEitZCqIgwPlnVvwW9wI= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2390051AbfDRSnF (ORCPT ); Thu, 18 Apr 2019 14:43:05 -0400 Received: from mail.kernel.org ([198.145.29.99]:60894 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2390032AbfDRSnD (ORCPT ); Thu, 18 Apr 2019 14:43:03 -0400 Received: from localhost.localdomain (unknown [24.213.116.99]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 99CC92064A; Thu, 18 Apr 2019 18:43:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1555612982; bh=4AO3aWtjxzFyjK3CTCqJFiG42lHfSIUkQSMS614FJnM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=MeQbPtLPonD0KaDs7PL9vx8W8+nc5wvv/k5bes2cO+JWMsykuuoTjdIoRPap8cmfR I5S6apHiY2qXP7wdmh5QgnUKvFVVoreLE3dOAc/rXbisDMUwbNUeL4y5/N1VVHcUqs o8PdnAy6klGKpE6O9y1jUCbSEghZNC10YJLrOogQ= From: hubcap@kernel.org To: linux-fsdevel@vger.kernel.org, christoph@lameter.com Cc: Mike Marshall , Martin Brandenburg Subject: [PATCH 21/22] orangefs: pass slot index back to readpage. Date: Thu, 18 Apr 2019 14:41:13 -0400 Message-Id: <20190418184113.9152-22-hubcap@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190418184113.9152-1-hubcap@kernel.org> References: <20190418184113.9152-1-hubcap@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-fsdevel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-fsdevel@vger.kernel.org From: Mike Marshall When userspace deposits more than a page of data into the shared buffer, we'll need to know which slot it is in when we get back to readpage so that we can try to use the extra data to fill some extra pages. Signed-off-by: Mike Marshall Signed-off-by: Martin Brandenburg --- fs/orangefs/file.c | 2 +- fs/orangefs/inode.c | 8 ++++---- fs/orangefs/orangefs-kernel.h | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/fs/orangefs/file.c b/fs/orangefs/file.c index 74292d31d113..68ba5ae7ef5d 100644 --- a/fs/orangefs/file.c +++ b/fs/orangefs/file.c @@ -47,7 +47,7 @@ static int flush_racache(struct inode *inode) */ ssize_t wait_for_direct_io(enum ORANGEFS_io_type type, struct inode *inode, loff_t *offset, struct iov_iter *iter, size_t total_size, - loff_t readahead_size, struct orangefs_write_range *wr) + loff_t readahead_size, struct orangefs_write_range *wr, int *index_return) { struct orangefs_inode_s *orangefs_inode = ORANGEFS_I(inode); struct orangefs_khandle *handle = &orangefs_inode->refn.khandle; diff --git a/fs/orangefs/inode.c b/fs/orangefs/inode.c index 7ed2ea093c4e..cded74edb47c 100644 --- a/fs/orangefs/inode.c +++ b/fs/orangefs/inode.c @@ -55,7 +55,7 @@ static int orangefs_writepage_locked(struct page *page, iov_iter_bvec(&iter, WRITE, &bv, 1, wlen); ret = wait_for_direct_io(ORANGEFS_IO_WRITE, inode, &off, &iter, wlen, - len, wr); + len, wr, NULL); if (ret < 0) { SetPageError(page); mapping_set_error(page->mapping, ret); @@ -126,7 +126,7 @@ static int orangefs_writepages_work(struct orangefs_writepages *ow, wr.uid = ow->uid; wr.gid = ow->gid; ret = wait_for_direct_io(ORANGEFS_IO_WRITE, inode, &off, &iter, ow->len, - 0, &wr); + 0, &wr, NULL); if (ret < 0) { for (i = 0; i < ow->npages; i++) { SetPageError(ow->pages[i]); @@ -265,7 +265,7 @@ static int orangefs_readpage(struct file *file, struct page *page) orangefs_launder_page(page); ret = wait_for_direct_io(ORANGEFS_IO_READ, inode, &off, &iter, - PAGE_SIZE, inode->i_size, NULL); + PAGE_SIZE, inode->i_size, NULL, NULL); /* this will only zero remaining unread portions of the page data */ iov_iter_zero(~0U, &iter); /* takes care of potential aliasing */ @@ -552,7 +552,7 @@ static ssize_t orangefs_direct_IO(struct kiocb *iocb, (int)*offset); ret = wait_for_direct_io(type, inode, offset, iter, - each_count, 0, NULL); + each_count, 0, NULL, NULL); gossip_debug(GOSSIP_FILE_DEBUG, "%s(%pU): return from wait_for_io:%d\n", __func__, diff --git a/fs/orangefs/orangefs-kernel.h b/fs/orangefs/orangefs-kernel.h index 3ae2f129b9c7..572dd29fbd54 100644 --- a/fs/orangefs/orangefs-kernel.h +++ b/fs/orangefs/orangefs-kernel.h @@ -398,7 +398,7 @@ bool __is_daemon_in_service(void); */ int orangefs_revalidate_mapping(struct inode *); ssize_t wait_for_direct_io(enum ORANGEFS_io_type, struct inode *, loff_t *, - struct iov_iter *, size_t, loff_t, struct orangefs_write_range *); + struct iov_iter *, size_t, loff_t, struct orangefs_write_range *, int *); ssize_t do_readv_writev(enum ORANGEFS_io_type, struct file *, loff_t *, struct iov_iter *); -- 2.20.1