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 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 69F0EC433F5 for ; Wed, 13 Oct 2021 16:00:56 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 085F961163 for ; Wed, 13 Oct 2021 16:00:56 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 085F961163 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=kvack.org Received: by kanga.kvack.org (Postfix) id 8E70D940009; Wed, 13 Oct 2021 12:00:55 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 8961D940007; Wed, 13 Oct 2021 12:00:55 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 736E2940009; Wed, 13 Oct 2021 12:00:55 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0053.hostedemail.com [216.40.44.53]) by kanga.kvack.org (Postfix) with ESMTP id 61B1A940007 for ; Wed, 13 Oct 2021 12:00:55 -0400 (EDT) Received: from smtpin35.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay02.hostedemail.com (Postfix) with ESMTP id 2511139B8C for ; Wed, 13 Oct 2021 16:00:55 +0000 (UTC) X-FDA: 78691877670.35.4259793 Received: from mail-qt1-f178.google.com (mail-qt1-f178.google.com [209.85.160.178]) by imf07.hostedemail.com (Postfix) with ESMTP id A5AA710001CF for ; Wed, 13 Oct 2021 16:00:54 +0000 (UTC) Received: by mail-qt1-f178.google.com with SMTP id c20so2999762qtb.2 for ; Wed, 13 Oct 2021 09:00:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=SaQNQGKlwsbhCSQSQvDPP/vFHDfDgc8R8QPJSwyWtiI=; b=c5BXD9X9PnmMXiwzqVFutWdb7jiQuirFJd4C0vWTBWbTVxyc63GnnIzGpKuf/JeFL9 V+fAkXXPlbx+doXp3IvbSIKf325ChrHvJDsyJx/PWVKTix17Xgs0alHOuzwPM/COq99R IjTyba3Rjk5c0F1LgJmNc5R5IrNrbtfhouKhDjhlXj5ot66pYD9zoiUx/z4tUsUc2UCn Ou7fR5ybi/sD7WZQnTfZtDMiwUqqu0lhNHssvEgL9ym36ZsMTrOjdxWUIQj/e9WUEINe 4oqLdxVg5dZ5sgEcPX9NDcO/GIGQkZJ2q8nGllNFzKLpbFTGN0cnIvLiINaF8HeHpDbl ojLw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=SaQNQGKlwsbhCSQSQvDPP/vFHDfDgc8R8QPJSwyWtiI=; b=IVSCatQavEcf16fPc2PmTJmz9WqL0JxKHnOLYCanM4Dc0iPTSrVvhgntngpD1aXfZH 50OUR5GdLBuc0ZHYbycYg5Y15rFaAn/dm8E7ibNiy4bAFnvIPL2nATn4njDokSVws0GJ cZf7j0KHY2hu2DBJ2HEt/ZPJnQbiEMg7DHXyUqGxlYv9JSfifuYVfEQtKYWYTLps79JH Cj453SA9Ekl7sKeWBcFpKRf8qn1rDAZ4V2+aA5CnRAJNSW+J125gRrhTb8MOQmO8Mk1I GZ97rgSzaJFQGHvXBnsOe2fckNUPSFNADYR1JerYVqGoQdf7T8D3Ery49oY5LApHEM5+ ie6Q== X-Gm-Message-State: AOAM530oP8EUVW847bl0RMVz6wPSlIWmeA0Su2uqAlNZKq0lbXb3J9oD fBeUX8oVNUEvM4jWCMCRcw== X-Google-Smtp-Source: ABdhPJwzZujhU4CzidE3yM7yWt8jzop5KisJSJGDD7J5YyQGAYeYXcAkMpvy5WgnIozmV87HMegSKA== X-Received: by 2002:a05:622a:4d2:: with SMTP id q18mr145098qtx.84.1634140853713; Wed, 13 Oct 2021 09:00:53 -0700 (PDT) Received: from moria.home.lan (c-73-219-103-14.hsd1.vt.comcast.net. [73.219.103.14]) by smtp.gmail.com with ESMTPSA id w17sm20161qts.53.2021.10.13.09.00.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 Oct 2021 09:00:52 -0700 (PDT) From: Kent Overstreet To: linux-kernel@vger.kernel.org, linux-mm@kvack.org, akpm@linux-foundation.org, linux-raid@vger.kernel.org, linux-block@vger.kernel.org, axboe@kernel.dk Cc: Kent Overstreet , alexander.h.duyck@linux.intel.com Subject: [PATCH 4/5] md: Kill usage of page->index Date: Wed, 13 Oct 2021 12:00:33 -0400 Message-Id: <20211013160034.3472923-5-kent.overstreet@gmail.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20211013160034.3472923-1-kent.overstreet@gmail.com> References: <20211013160034.3472923-1-kent.overstreet@gmail.com> MIME-Version: 1.0 X-Rspamd-Queue-Id: A5AA710001CF X-Stat-Signature: ucshbfqzoe7tcpfubzcxpyzw855c3tij Authentication-Results: imf07.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=c5BXD9X9; spf=pass (imf07.hostedemail.com: domain of kent.overstreet@gmail.com designates 209.85.160.178 as permitted sender) smtp.mailfrom=kent.overstreet@gmail.com; dmarc=pass (policy=none) header.from=gmail.com X-Rspamd-Server: rspam06 X-HE-Tag: 1634140854-740498 Content-Transfer-Encoding: quoted-printable X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: As part of the struct page cleanups underway, we want to remove as much usage of page->mapping and page->index as possible, as frequently they are known from context - as they are here in the md bitmap code. Signed-off-by: Kent Overstreet --- drivers/md/md-bitmap.c | 44 ++++++++++++++++++++---------------------- 1 file changed, 21 insertions(+), 23 deletions(-) diff --git a/drivers/md/md-bitmap.c b/drivers/md/md-bitmap.c index e29c6298ef..dcdb4597c5 100644 --- a/drivers/md/md-bitmap.c +++ b/drivers/md/md-bitmap.c @@ -165,10 +165,8 @@ static int read_sb_page(struct mddev *mddev, loff_t = offset, =20 if (sync_page_io(rdev, target, roundup(size, bdev_logical_block_size(rdev->bdev)), - page, REQ_OP_READ, 0, true)) { - page->index =3D index; + page, REQ_OP_READ, 0, true)) return 0; - } } return -EIO; } @@ -209,7 +207,8 @@ static struct md_rdev *next_active_rdev(struct md_rde= v *rdev, struct mddev *mdde return NULL; } =20 -static int write_sb_page(struct bitmap *bitmap, struct page *page, int w= ait) +static int write_sb_page(struct bitmap *bitmap, struct page *page, + unsigned long index, int wait) { struct md_rdev *rdev; struct block_device *bdev; @@ -224,7 +223,7 @@ static int write_sb_page(struct bitmap *bitmap, struc= t page *page, int wait) =20 bdev =3D (rdev->meta_bdev) ? rdev->meta_bdev : rdev->bdev; =20 - if (page->index =3D=3D store->file_pages-1) { + if (index =3D=3D store->file_pages-1) { int last_page_size =3D store->bytes & (PAGE_SIZE-1); if (last_page_size =3D=3D 0) last_page_size =3D PAGE_SIZE; @@ -236,8 +235,7 @@ static int write_sb_page(struct bitmap *bitmap, struc= t page *page, int wait) */ if (mddev->external) { /* Bitmap could be anywhere. */ - if (rdev->sb_start + offset + (page->index - * (PAGE_SIZE/512)) + if (rdev->sb_start + offset + index * PAGE_SECTORS > rdev->data_offset && rdev->sb_start + offset @@ -247,7 +245,7 @@ static int write_sb_page(struct bitmap *bitmap, struc= t page *page, int wait) } else if (offset < 0) { /* DATA BITMAP METADATA */ if (offset - + (long)(page->index * (PAGE_SIZE/512)) + + (long)(index * PAGE_SECTORS) + size/512 > 0) /* bitmap runs in to metadata */ goto bad_alignment; @@ -259,7 +257,7 @@ static int write_sb_page(struct bitmap *bitmap, struc= t page *page, int wait) /* METADATA BITMAP DATA */ if (rdev->sb_start + offset - + page->index*(PAGE_SIZE/512) + size/512 + + index * PAGE_SECTORS + size/512 > rdev->data_offset) /* bitmap runs in to data */ goto bad_alignment; @@ -268,7 +266,7 @@ static int write_sb_page(struct bitmap *bitmap, struc= t page *page, int wait) } md_super_write(mddev, rdev, rdev->sb_start + offset - + page->index * (PAGE_SIZE/512), + + index * PAGE_SECTORS, size, page); } @@ -285,12 +283,13 @@ static void md_bitmap_file_kick(struct bitmap *bitm= ap); /* * write out a page to a file */ -static void write_page(struct bitmap *bitmap, struct page *page, int wai= t) +static void write_page(struct bitmap *bitmap, struct page *page, + unsigned long index, int wait) { struct buffer_head *bh; =20 if (bitmap->storage.file =3D=3D NULL) { - switch (write_sb_page(bitmap, page, wait)) { + switch (write_sb_page(bitmap, page, index, wait)) { case -EINVAL: set_bit(BITMAP_WRITE_ERROR, &bitmap->flags); } @@ -399,7 +398,6 @@ static int read_page(struct file *file, unsigned long= index, blk_cur++; bh =3D bh->b_this_page; } - page->index =3D index; =20 wait_event(bitmap->write_wait, atomic_read(&bitmap->pending_writes)=3D=3D0); @@ -472,7 +470,7 @@ void md_bitmap_update_sb(struct bitmap *bitmap) sb->sectors_reserved =3D cpu_to_le32(bitmap->mddev-> bitmap_info.space); kunmap_atomic(sb); - write_page(bitmap, bitmap->storage.sb_page, 1); + write_page(bitmap, bitmap->storage.sb_page, 0, 1); } EXPORT_SYMBOL(md_bitmap_update_sb); =20 @@ -524,7 +522,6 @@ static int md_bitmap_new_disk_sb(struct bitmap *bitma= p) bitmap->storage.sb_page =3D alloc_page(GFP_KERNEL | __GFP_ZERO); if (bitmap->storage.sb_page =3D=3D NULL) return -ENOMEM; - bitmap->storage.sb_page->index =3D 0; =20 sb =3D kmap_atomic(bitmap->storage.sb_page); =20 @@ -802,7 +799,6 @@ static int md_bitmap_storage_alloc(struct bitmap_stor= age *store, if (store->sb_page) { store->filemap[0] =3D store->sb_page; pnum =3D 1; - store->sb_page->index =3D offset; } =20 for ( ; pnum < num_pages; pnum++) { @@ -929,6 +925,7 @@ static void md_bitmap_file_set_bit(struct bitmap *bit= map, sector_t block) unsigned long chunk =3D block >> bitmap->counts.chunkshift; struct bitmap_storage *store =3D &bitmap->storage; unsigned long node_offset =3D 0; + unsigned long index =3D file_page_index(store, chunk); =20 if (mddev_is_clustered(bitmap->mddev)) node_offset =3D bitmap->cluster_slot * store->file_pages; @@ -945,9 +942,9 @@ static void md_bitmap_file_set_bit(struct bitmap *bit= map, sector_t block) else set_bit_le(bit, kaddr); kunmap_atomic(kaddr); - pr_debug("set file bit %lu page %lu\n", bit, page->index); + pr_debug("set file bit %lu page %lu\n", bit, index); /* record page number so it gets flushed to disk when unplug occurs */ - set_page_attr(bitmap, page->index - node_offset, BITMAP_PAGE_DIRTY); + set_page_attr(bitmap, index - node_offset, BITMAP_PAGE_DIRTY); } =20 static void md_bitmap_file_clear_bit(struct bitmap *bitmap, sector_t blo= ck) @@ -958,6 +955,7 @@ static void md_bitmap_file_clear_bit(struct bitmap *b= itmap, sector_t block) unsigned long chunk =3D block >> bitmap->counts.chunkshift; struct bitmap_storage *store =3D &bitmap->storage; unsigned long node_offset =3D 0; + unsigned long index =3D file_page_index(store, chunk); =20 if (mddev_is_clustered(bitmap->mddev)) node_offset =3D bitmap->cluster_slot * store->file_pages; @@ -972,8 +970,8 @@ static void md_bitmap_file_clear_bit(struct bitmap *b= itmap, sector_t block) else clear_bit_le(bit, paddr); kunmap_atomic(paddr); - if (!test_page_attr(bitmap, page->index - node_offset, BITMAP_PAGE_NEED= WRITE)) { - set_page_attr(bitmap, page->index - node_offset, BITMAP_PAGE_PENDING); + if (!test_page_attr(bitmap, index - node_offset, BITMAP_PAGE_NEEDWRITE)= ) { + set_page_attr(bitmap, index - node_offset, BITMAP_PAGE_PENDING); bitmap->allclean =3D 0; } } @@ -1027,7 +1025,7 @@ void md_bitmap_unplug(struct bitmap *bitmap) "md bitmap_unplug"); } clear_page_attr(bitmap, i, BITMAP_PAGE_PENDING); - write_page(bitmap, bitmap->storage.filemap[i], 0); + write_page(bitmap, bitmap->storage.filemap[i], i, 0); writing =3D 1; } } @@ -1137,7 +1135,7 @@ static int md_bitmap_init_from_disk(struct bitmap *= bitmap, sector_t start) memset(paddr + offset, 0xff, PAGE_SIZE - offset); kunmap_atomic(paddr); - write_page(bitmap, page, 1); + write_page(bitmap, page, index, 1); =20 ret =3D -EIO; if (test_bit(BITMAP_WRITE_ERROR, @@ -1336,7 +1334,7 @@ void md_bitmap_daemon_work(struct mddev *mddev) if (bitmap->storage.filemap && test_and_clear_page_attr(bitmap, j, BITMAP_PAGE_NEEDWRITE)) { - write_page(bitmap, bitmap->storage.filemap[j], 0); + write_page(bitmap, bitmap->storage.filemap[j], j, 0); } } =20 --=20 2.33.0