Received: by 2002:a6b:500f:0:0:0:0:0 with SMTP id e15csp3318744iob; Mon, 16 May 2022 19:14:26 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw2MCbP1A9NcId5jTTvzz1A2z/Kdkn27cH8UK4rYGzyeAMa1wvguEBdWz5p/LjbmEIkx6Jg X-Received: by 2002:aa7:da08:0:b0:425:af3c:196a with SMTP id r8-20020aa7da08000000b00425af3c196amr16404807eds.69.1652753666656; Mon, 16 May 2022 19:14:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1652753666; cv=none; d=google.com; s=arc-20160816; b=Vo04lXMbmRvl6HS/apLpzA7cH0Xf/eNPWNcN39PFjQKkCRItyuqyojYz2BXBcFEsyb 0q08IF6sQzJgLEUreZsX7LyvcFWRnFS5Ykbcack64jW9OAdb+h8QFvnuetqYjv5/YuZg Em27Wgi+h/1ym0j8fXMSi1WqUxojgLEVnbd5Zs6uCoZKivpNXh8eBOIlsxU0vrGn03Ip Sb7g+GWH0+cNpapPUn3mNdgOIlBG+n/2iQSkxntE7qaKna5msKUMJXefkKa/xk/IW45A C8jW3nybTA5RD2qaFxNDPRZqYM+h0Fl+HqwHeG6hZFJgxjVXVd7NKKdFbcpU8N30mhD7 1FeQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=o8xDKjeA5vjhnmsZaoY94PaYuZJ/k/2yUmf/Dmij7ao=; b=g9zyi39rRH2zQ7lXLP3xja2gDaHdxiMAlPuTcOVUnJiJkSK7atN/psU/TfwwR68cUE 0/lyJluJ5shRs7nXRqknM2Jq3V79WN0XLEOwUfUAx3YaPBwkhmlpl0QaPP21TQLnZ17+ bWRnLpKIJD8D4Dm1nu+40l7nEBuLy4JvF58SkPESaFUl9x+B/sQWa0N6+lKouy0TnK7l +pY3leGAxTC7oriOdvdgB/x2O+O5A9WKgr0jgRJwFOgOWKb40njVuffkJzZEkqYR2esf R4YidiRL1XDv35BLEVrQcVfbOMzYzjpGOBgzx+RUKyf5VpBgd+zMUWd2TIiRaR0u3HQy ByyA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=IIAZ2Vr+; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id q9-20020a056402518900b0041cc318987fsi13000988edd.550.2022.05.16.19.13.59; Mon, 16 May 2022 19:14:26 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=IIAZ2Vr+; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237616AbiEPM6B (ORCPT + 99 others); Mon, 16 May 2022 08:58:01 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53500 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237099AbiEPM5y (ORCPT ); Mon, 16 May 2022 08:57:54 -0400 Received: from mail-vk1-xa32.google.com (mail-vk1-xa32.google.com [IPv6:2607:f8b0:4864:20::a32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4C1A339682 for ; Mon, 16 May 2022 05:57:53 -0700 (PDT) Received: by mail-vk1-xa32.google.com with SMTP id bc42so7429336vkb.12 for ; Mon, 16 May 2022 05:57:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=o8xDKjeA5vjhnmsZaoY94PaYuZJ/k/2yUmf/Dmij7ao=; b=IIAZ2Vr+cKp9N/hE450cPXfGMc4W6fTjUA8NYQM8OGAxXmIn1uHumxtB8a/sB6412j 7sdniG4owzBih4e4mPYRlB3BXJ01DS3cwu+86vHTAJNTxcICEueQB4LSBWAXb4H9CYav /1AyHO5SDWCl65RbUtarwktsst7MJJfImV4wA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=o8xDKjeA5vjhnmsZaoY94PaYuZJ/k/2yUmf/Dmij7ao=; b=WFw0ziTThAcGPkecnDxgqIIa2/FGrtGypg6PvI8zNiD0DINahqecu9JkEOj4zwPt9M MqunRJ5qMeTXEMaCkM6SfWZ1QJ9JKueD8BcmQc94GMfNN6JpMAOb9CpqAe0nqXDIsVZE JWIvVSYt/t8RfJsnYbxfJisJ7zSpZzW2WrjmXz2p0J/mm29kV9VZfjMhoI/iwAJlBmbD SCKUF0mrCv70Aak/U/pTSIKfgmMoB1CQdhlnz/RJWcucbvVuGNNBELVWuWgE9FDF3KY4 Bs5qBeBMrxe0GBt6q9kg4027V7zBbU67itNsugisedAuf/IU7/Q8nsjEbyyjFCqE7Vj5 ZSQw== X-Gm-Message-State: AOAM532x3QRAvj9vG6fTKDMiu58e7YfIFuipQnauSiD0FcQsLb+ddjm/ kXnVQjZdwuuevbh/tLJOUKOIMOHldwxFaGKqsd6apQ== X-Received: by 2002:a05:6122:da8:b0:331:3b30:8b40 with SMTP id bc40-20020a0561220da800b003313b308b40mr5898585vkb.30.1652705872210; Mon, 16 May 2022 05:57:52 -0700 (PDT) MIME-Version: 1.0 References: <20220516105100.1412740-1-hsinyi@chromium.org> <20220516105100.1412740-3-hsinyi@chromium.org> In-Reply-To: From: Hsin-Yi Wang Date: Mon, 16 May 2022 20:57:26 +0800 Message-ID: Subject: Re: [PATCH 2/2] squashfs: implement readahead To: Matthew Wilcox Cc: Phillip Lougher , Xiongwei Song , Zheng Liang , Zhang Yi , Hou Tao , Miao Xie , Andrew Morton , "linux-mm @ kvack . org" , "squashfs-devel @ lists . sourceforge . net" , linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-2.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, May 16, 2022 at 8:55 PM Matthew Wilcox wrote: > > On Mon, May 16, 2022 at 08:47:52PM +0800, Hsin-Yi Wang wrote: > > On Mon, May 16, 2022 at 8:36 PM Matthew Wilcox wrote: > > > > > > On Mon, May 16, 2022 at 07:04:08PM +0800, Hsin-Yi Wang wrote: > > > > > + loff_t req_end = readahead_pos(ractl) + readahead_length(ractl); > > > > > + loff_t start = readahead_pos(ractl) &~ mask; > > > > > + size_t len = readahead_length(ractl) + readahead_pos(ractl) - start; > > > > > + struct squashfs_page_actor *actor; > > > > > + unsigned int nr_pages = 0; > > > > > + struct page **pages; > > > > > + u64 block = 0; > > > > > + int bsize, res, i, index; > > > > > + int file_end = i_size_read(inode) >> msblk->block_log; > > > > > + unsigned int max_pages = 1UL << shift; > > > > > + > > > > > + readahead_expand(ractl, start, (len | mask) + 1); > > > > > + > > > > > + if (readahead_pos(ractl) + readahead_length(ractl) < req_end || > > > > > + file_end == 0) > > > > > + return; > > > > > > What's the first half of this condition supposed to be checking for? > > > It seems to be checking whether readahead_expand() shrunk the range > > > covered by the ractl, but readahead_expand() never does that, so I'm > > > confused why you're checking for it. > > > > hi Matthew, > > > > This is to check if readahead_expand() expands as much as it's requested. > > I didn't encounter the mismatch so far in my testing. If this check is > > not necessary, it can be removed. > > Then I think req_end is miscalculated? It should surely be: > > req_end = start + (len | mask) + 1; > > But I'm not sure that we should be failing under such circumstances. > For example, we may have been asked to read 1.5MB, attempt to round up > to 2MB, and fail. But we can still submit a readahead for the first 1MB, > before leaving the second 512kB for readpage to handle. > > So maybe we should just remove this check entirely. I'll remove this in the next version.