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=-3.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=no 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 6E218C48BE0 for ; Fri, 11 Jun 2021 14:21:21 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 570686141C for ; Fri, 11 Jun 2021 14:21:21 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231767AbhFKOXS (ORCPT ); Fri, 11 Jun 2021 10:23:18 -0400 Received: from discipline.rit.edu ([129.21.6.207]:15486 "HELO discipline.rit.edu" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with SMTP id S231180AbhFKOXR (ORCPT ); Fri, 11 Jun 2021 10:23:17 -0400 X-Greylist: delayed 401 seconds by postgrey-1.27 at vger.kernel.org; Fri, 11 Jun 2021 10:23:17 EDT Received: (qmail 9929 invoked by uid 501); 11 Jun 2021 14:14:38 -0000 From: Andrew W Elble To: Jeff Layton Cc: ceph-devel@vger.kernel.org, pfmeec@rit.edu Subject: Re: [PATCH 5/5] ceph: fold ceph_update_writeable_page into ceph_write_begin References: <20200916173854.330265-1-jlayton@kernel.org> <20200916173854.330265-6-jlayton@kernel.org> <7817f98d3b2daafe113bf8290cc8c7adbb86fe99.camel@kernel.org> Date: Fri, 11 Jun 2021 10:14:38 -0400 In-Reply-To: <7817f98d3b2daafe113bf8290cc8c7adbb86fe99.camel@kernel.org> (Jeff Layton's message of "Wed, 16 Sep 2020 15:16:19 -0400") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (berkeley-unix) MIME-Version: 1.0 Content-Type: text/plain Precedence: bulk List-ID: X-Mailing-List: ceph-devel@vger.kernel.org We're seeing file corruption while running 5.10, bisected to 1cc1699070bd: >> +static int ceph_write_begin(struct file *file, struct address_space *mapping, >> + loff_t pos, unsigned len, unsigned flags, >> + struct page **pagep, void **fsdata) >> + /* >> + * In some cases we don't need to read at all: >> + * - full page write >> + * - write that lies completely beyond EOF >> + * - write that covers the the page from start to EOF or beyond it >> + */ >> + if ((pos_in_page == 0 && len == PAGE_SIZE) || >> + (pos >= i_size_read(inode)) || Shouldn't this be '((pos & PAGE_MASK) >= i_size_read(inode)) ||' ? Seems like fs/netfs/read_helper.c currently has the same issue? >> + (pos_in_page == 0 && (pos + len) >= i_size_read(inode))) { >> + zero_user_segments(page, 0, pos_in_page, >> + pos_in_page + len, PAGE_SIZE); >> + break; >> + } -- Andrew W. Elble Infrastructure Engineer Information and Technology Services Rochester Institute of Technology tel: (585)-475-2411 | aweits@rit.edu PGP: BFAD 8461 4CCF DC95 DA2C B0EB 965B 082E 863E C912