From patchwork Wed Mar 13 21:40:47 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 13591899 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 18D645675F for ; Wed, 13 Mar 2024 21:40:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.137.202.133 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710366059; cv=none; b=Mf1CE0c32bV62XfNVF2HEn0sjeNIc/GdlNwRUdBT0+vhRQgnMwHjTcGkBoNA3CxQvk7xkhWUNYhzo3ERiBzMySoiLV+QOup4CX2EoZqRJsYMIBz1XZT7t1kEhvkqlXATnO7vO3Ppx+/hiiouQ+5ijwnBUUfERocd9sXrmbJuHMA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710366059; c=relaxed/simple; bh=ZxMFeIpIryyBPrRO7vPoVqHrBNsV1JladmFeDVLmzWo=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=TNprHg66522vFG/HI6qwzm2rsu/oVHNFEE3O+TFMijXoeHzr7IucbvCT1VDL71Tlpoav7rfd45h1HUuuHCdwFIOOtggf5df6XMYSWy7KdQwX5tKFiUkjmWpCQhTBuOR3T7fkBtbS+5E36oO0JQmgrp3SwyI5CZrGw1T9LCb4NZA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=lst.de; spf=none smtp.mailfrom=bombadil.srs.infradead.org; dkim=pass (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b=H/qW4Bzq; arc=none smtp.client-ip=198.137.202.133 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=lst.de Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=bombadil.srs.infradead.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b="H/qW4Bzq" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description; bh=0IceC0HV8LnB6h7ZjhokKKeC0C/JKWOGckGMytwZIKE=; b=H/qW4Bzq8bSD0KtHqCqxsLdvxX K/0H/pzS3yZz8G7kBCNz1myyeEAGKmecXKfzAz1TDzQ7i4WxZiTuQdazI8wu59ZP39kXFRrgrWWzo c7gDtmdg+jmL0WRSBDekZ977fX3xsahw4RxibxoVnoILJS6HkMJNa9Sq+RCu0eHx/+hRPc3rmar9F 3/FfP4tfSLiLYuY6t2BK1CZ8Ac8o7tR3e2BjNyoVqiKanTBwvE6E023CrR5IbYqg0BN7XQ7Pq3cSD l1CO0Nyyp29nZYQUTCVT1SW9fFLI/kE7WwCznXPO0hoAghiDnx1aUuS7plNRq/d96ekFhFEpsu4P4 gCiD3mnw==; Received: from [206.0.71.29] (helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux)) id 1rkWLJ-0000000Bxox-0NQk; Wed, 13 Mar 2024 21:40:57 +0000 From: Christoph Hellwig To: Carlos Maiolino Cc: "Darrick J . Wong" , linux-xfs@vger.kernel.org, Dave Chinner Subject: [PATCH 1/5] libxfs: remove the unused fs_topology_t typedef Date: Wed, 13 Mar 2024 14:40:47 -0700 Message-Id: <20240313214051.1718117-2-hch@lst.de> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240313214051.1718117-1-hch@lst.de> References: <20240313214051.1718117-1-hch@lst.de> Precedence: bulk X-Mailing-List: linux-xfs@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Reviewed-by: Darrick J. Wong --- libxfs/topology.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libxfs/topology.h b/libxfs/topology.h index 1af5b0549..3a309a4da 100644 --- a/libxfs/topology.h +++ b/libxfs/topology.h @@ -10,13 +10,13 @@ /* * Device topology information. */ -typedef struct fs_topology { +struct fs_topology { int dsunit; /* stripe unit - data subvolume */ int dswidth; /* stripe width - data subvolume */ int rtswidth; /* stripe width - rt subvolume */ int lsectorsize; /* logical sector size &*/ int psectorsize; /* physical sector size */ -} fs_topology_t; +}; void get_topology( From patchwork Wed Mar 13 21:40:48 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 13591900 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 99CC458104 for ; Wed, 13 Mar 2024 21:41:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.137.202.133 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710366062; cv=none; b=Hh9mFPW26mIxg2yqOudSUfqZusG1nUbhV4mS88fgSwSo0Yi3G2XC1/AshTi2o8SsH+XLbEZNrN8ZeE6UeBSUCQYL6isqirUX2g8wq4HMRDvU1c/ehprpTeiTtMQJVdC7iMyipn1HEJ9QjXITN64ekn58w/kHP4mHJ18z/fX7Pr8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710366062; c=relaxed/simple; bh=Yg+RrJWCi6sbLV5A5+dG9ZvfSbxZtiPeku7TSXlC9ts=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=ZkYNlc48a5O/Z3qLrpP6/zLnDiWQGSeof9NLqNcb2nLCftjBU3S3zqi4cbgrEuoGeXq71f3/6xut2ZgSAMGlloI4Et+/rZK3dVYr8EyoHsD8y18ikBEtHxhe0m4Oe1iZqrgRsOqjAxd9iPCpuFdTowr5gx04L0+Ba3/aDXflUv8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=lst.de; spf=none smtp.mailfrom=bombadil.srs.infradead.org; dkim=pass (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b=Upo+KI2Z; arc=none smtp.client-ip=198.137.202.133 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=lst.de Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=bombadil.srs.infradead.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b="Upo+KI2Z" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description; bh=ueoaPIZIpHJxqEE3ka3yxnF1J0Kq4UXXtIDfmnBz4F4=; b=Upo+KI2Zv/g7qrPRWDP/GjjYqM 4VI3h77ne9fXiHBE1v1Eu/h8+EYoaNK7Az47SgbNvEUPjOVr8ejeTapzsFKZdfFYP5gQZ4jiTcE+o 004uyAcRXTfa8/tM7SoK6oSITRhtvh4lI3P825LGDR8AoH9WY4IYsOdwkkpx2KXxGgUU8JtO6DBMz NYl3QbFFY5CnShEpAGspk9DMcEaIARPJUtrAhUUpBdT7Xecc5t6QruHRpEMf8h3vb+Ep2AfGqOiw8 HCW4JcgO5GBkxROipLlBLFw+U4Ijbmx4hGT1kvqLQ6UNHsJ4SJ5bllDjsNfABbDRCbvJNEP77YnqO hbPTh7mA==; Received: from [206.0.71.29] (helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux)) id 1rkWLL-0000000BxpI-3BAY; Wed, 13 Mar 2024 21:41:00 +0000 From: Christoph Hellwig To: Carlos Maiolino Cc: "Darrick J . Wong" , linux-xfs@vger.kernel.org, Dave Chinner Subject: [PATCH 2/5] libxfs: refactor the fs_topology structure Date: Wed, 13 Mar 2024 14:40:48 -0700 Message-Id: <20240313214051.1718117-3-hch@lst.de> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240313214051.1718117-1-hch@lst.de> References: <20240313214051.1718117-1-hch@lst.de> Precedence: bulk X-Mailing-List: linux-xfs@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html fs_topology is a mess that mixes up data and RT device reporting, and to make things worse reuses lsectorsize for the logical sector size while other parts of xfsprogs use it for the log sector size. Split out a device_topology structure that reports the topology for one device and embedded two of them into the fs_topology struture, and pass them directly to blkid_get_topology. Rename the sector size members to be more explicit, and move some of the sanity checking from mkfs into the topology helpers. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Reviewed-by: Darrick J. Wong --- libxfs/topology.c | 99 +++++++++++++++++++++++++---------------------- libxfs/topology.h | 14 ++++--- mkfs/xfs_mkfs.c | 64 ++++++++++++++---------------- repair/sb.c | 2 +- 4 files changed, 92 insertions(+), 87 deletions(-) diff --git a/libxfs/topology.c b/libxfs/topology.c index 4515d238d..63f0b96a5 100644 --- a/libxfs/topology.c +++ b/libxfs/topology.c @@ -170,18 +170,14 @@ out: return ret; } -static void blkid_get_topology( - const char *device, - int *sunit, - int *swidth, - int *lsectorsize, - int *psectorsize, - int force_overwrite) +static void +blkid_get_topology( + const char *device, + struct device_topology *dt, + int force_overwrite) { - blkid_topology tp; blkid_probe pr; - unsigned long val; struct stat statbuf; /* can't get topology info from a file */ @@ -200,31 +196,28 @@ static void blkid_get_topology( if (!tp) goto out_free_probe; - val = blkid_topology_get_logical_sector_size(tp); - *lsectorsize = val; - val = blkid_topology_get_physical_sector_size(tp); - *psectorsize = val; - val = blkid_topology_get_minimum_io_size(tp); - *sunit = val; - val = blkid_topology_get_optimal_io_size(tp); - *swidth = val; + dt->logical_sector_size = blkid_topology_get_logical_sector_size(tp); + dt->physical_sector_size = blkid_topology_get_physical_sector_size(tp); + dt->sunit = blkid_topology_get_minimum_io_size(tp); + dt->swidth = blkid_topology_get_optimal_io_size(tp); /* * If the reported values are the same as the physical sector size * do not bother to report anything. It will only cause warnings * if people specify larger stripe units or widths manually. */ - if (*sunit == *psectorsize || *swidth == *psectorsize) { - *sunit = 0; - *swidth = 0; + if (dt->sunit == dt->physical_sector_size || + dt->swidth == dt->physical_sector_size) { + dt->sunit = 0; + dt->swidth = 0; } /* * Blkid reports the information in terms of bytes, but we want it in * terms of 512 bytes blocks (only to convert it to bytes later..) */ - *sunit = *sunit >> 9; - *swidth = *swidth >> 9; + dt->sunit >>= 9; + dt->swidth >>= 9; if (blkid_topology_get_alignment_offset(tp) != 0) { fprintf(stderr, @@ -238,7 +231,7 @@ static void blkid_get_topology( exit(EXIT_FAILURE); } /* Do not use physical sector size if the device is misaligned */ - *psectorsize = *lsectorsize; + dt->physical_sector_size = dt->logical_sector_size; } blkid_free_probe(pr); @@ -251,47 +244,61 @@ out_free_probe: device); } -void -get_topology( - struct libxfs_init *xi, - struct fs_topology *ft, +static void +get_device_topology( + struct libxfs_dev *dev, + struct device_topology *dt, int force_overwrite) { - struct stat statbuf; + struct stat st; + + /* + * Nothing to do if this particular subvolume doesn't exist. + */ + if (!dev->name) + return; /* * If our target is a regular file, use platform_findsizes * to try to obtain the underlying filesystem's requirements * for direct IO; we'll set our sector size to that if possible. */ - if (xi->data.isfile || - (!stat(xi->data.name, &statbuf) && S_ISREG(statbuf.st_mode))) { - int fd; + if (dev->isfile || (!stat(dev->name, &st) && S_ISREG(st.st_mode))) { int flags = O_RDONLY; long long dummy; + int fd; /* with xi->disfile we may not have the file yet! */ - if (xi->data.isfile) + if (dev->isfile) flags |= O_CREAT; - fd = open(xi->data.name, flags, 0666); + fd = open(dev->name, flags, 0666); if (fd >= 0) { - platform_findsizes(xi->data.name, fd, &dummy, - &ft->lsectorsize); + platform_findsizes(dev->name, fd, &dummy, + &dt->logical_sector_size); close(fd); - ft->psectorsize = ft->lsectorsize; - } else - ft->psectorsize = ft->lsectorsize = BBSIZE; + } else { + dt->logical_sector_size = BBSIZE; + } } else { - blkid_get_topology(xi->data.name, &ft->dsunit, &ft->dswidth, - &ft->lsectorsize, &ft->psectorsize, - force_overwrite); + blkid_get_topology(dev->name, dt, force_overwrite); } - if (xi->rt.name && !xi->rt.isfile) { - int sunit, lsectorsize, psectorsize; + ASSERT(dt->logical_sector_size); - blkid_get_topology(xi->rt.name, &sunit, &ft->rtswidth, - &lsectorsize, &psectorsize, force_overwrite); - } + /* + * Older kernels may not have physical/logical distinction. + */ + if (!dt->physical_sector_size) + dt->physical_sector_size = dt->logical_sector_size; +} + +void +get_topology( + struct libxfs_init *xi, + struct fs_topology *ft, + int force_overwrite) +{ + get_device_topology(&xi->data, &ft->data, force_overwrite); + get_device_topology(&xi->rt, &ft->rt, force_overwrite); } diff --git a/libxfs/topology.h b/libxfs/topology.h index 3a309a4da..ba0c8f669 100644 --- a/libxfs/topology.h +++ b/libxfs/topology.h @@ -10,12 +10,16 @@ /* * Device topology information. */ +struct device_topology { + int logical_sector_size; /* logical sector size */ + int physical_sector_size; /* physical sector size */ + int sunit; /* stripe unit */ + int swidth; /* stripe width */ +}; + struct fs_topology { - int dsunit; /* stripe unit - data subvolume */ - int dswidth; /* stripe width - data subvolume */ - int rtswidth; /* stripe width - rt subvolume */ - int lsectorsize; /* logical sector size &*/ - int psectorsize; /* physical sector size */ + struct device_topology data; + struct device_topology rt; }; void diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c index fcbf54132..be65ccc1e 100644 --- a/mkfs/xfs_mkfs.c +++ b/mkfs/xfs_mkfs.c @@ -1986,31 +1986,24 @@ validate_sectorsize( * than that, then we can use logical, but warn about the * inefficiency. * - * Set the topology sectors if they were not probed to the - * minimum supported sector size. - */ - if (!ft->lsectorsize) - ft->lsectorsize = dft->sectorsize; - - /* - * Older kernels may not have physical/logical distinction. - * * Some architectures have a page size > XFS_MAX_SECTORSIZE. * In that case, a ramdisk or persistent memory device may * advertise a physical sector size that is too big to use. */ - if (!ft->psectorsize || ft->psectorsize > XFS_MAX_SECTORSIZE) - ft->psectorsize = ft->lsectorsize; + if (ft->data.physical_sector_size > XFS_MAX_SECTORSIZE) { + ft->data.physical_sector_size = + ft->data.logical_sector_size; + } - cfg->sectorsize = ft->psectorsize; + cfg->sectorsize = ft->data.physical_sector_size; if (cfg->blocksize < cfg->sectorsize && - cfg->blocksize >= ft->lsectorsize) { + cfg->blocksize >= ft->data.logical_sector_size) { fprintf(stderr, _("specified blocksize %d is less than device physical sector size %d\n" "switching to logical sector size %d\n"), - cfg->blocksize, ft->psectorsize, - ft->lsectorsize); - cfg->sectorsize = ft->lsectorsize; + cfg->blocksize, ft->data.physical_sector_size, + ft->data.logical_sector_size); + cfg->sectorsize = ft->data.logical_sector_size; } } else cfg->sectorsize = cli->sectorsize; @@ -2031,9 +2024,9 @@ _("block size %d cannot be smaller than sector size %d\n"), usage(); } - if (cfg->sectorsize < ft->lsectorsize) { + if (cfg->sectorsize < ft->data.logical_sector_size) { fprintf(stderr, _("illegal sector size %d; hw sector is %d\n"), - cfg->sectorsize, ft->lsectorsize); + cfg->sectorsize, ft->data.logical_sector_size); usage(); } } @@ -2455,7 +2448,7 @@ validate_rtextsize( if (!cfg->sb_feat.nortalign && !cli->xi->rt.isfile && !(!cli->rtsize && cli->xi->data.isfile)) - rswidth = ft->rtswidth; + rswidth = ft->rt.swidth; else rswidth = 0; @@ -2700,13 +2693,14 @@ _("data stripe width (%lld) is too large of a multiple of the data stripe unit ( /* if no stripe config set, use the device default */ if (!dsunit) { /* Ignore nonsense from device report. */ - if (!libxfs_validate_stripe_geometry(NULL, BBTOB(ft->dsunit), - BBTOB(ft->dswidth), 0, true)) { + if (!libxfs_validate_stripe_geometry(NULL, BBTOB(ft->data.sunit), + BBTOB(ft->data.swidth), 0, true)) { fprintf(stderr, _("%s: Volume reports invalid stripe unit (%d) and stripe width (%d), ignoring.\n"), - progname, BBTOB(ft->dsunit), BBTOB(ft->dswidth)); - ft->dsunit = 0; - ft->dswidth = 0; + progname, + BBTOB(ft->data.sunit), BBTOB(ft->data.swidth)); + ft->data.sunit = 0; + ft->data.swidth = 0; } else if (cfg->dblocks < GIGABYTES(1, cfg->blocklog)) { /* * Don't use automatic stripe detection if the device @@ -2714,29 +2708,29 @@ _("%s: Volume reports invalid stripe unit (%d) and stripe width (%d), ignoring.\ * on such a small system are not worth the risk that * we'll end up with an undersized log. */ - if (ft->dsunit || ft->dswidth) + if (ft->data.sunit || ft->data.swidth) fprintf(stderr, _("%s: small data volume, ignoring data volume stripe unit %d and stripe width %d\n"), - progname, ft->dsunit, - ft->dswidth); - ft->dsunit = 0; - ft->dswidth = 0; + progname, ft->data.sunit, + ft->data.swidth); + ft->data.sunit = 0; + ft->data.swidth = 0; } else { - dsunit = ft->dsunit; - dswidth = ft->dswidth; + dsunit = ft->data.sunit; + dswidth = ft->data.swidth; use_dev = true; } } else { /* check and warn if user-specified alignment is sub-optimal */ - if (ft->dsunit && ft->dsunit != dsunit) { + if (ft->data.sunit && ft->data.sunit != dsunit) { fprintf(stderr, _("%s: Specified data stripe unit %d is not the same as the volume stripe unit %d\n"), - progname, dsunit, ft->dsunit); + progname, dsunit, ft->data.sunit); } - if (ft->dswidth && ft->dswidth != dswidth) { + if (ft->data.swidth && ft->data.swidth != dswidth) { fprintf(stderr, _("%s: Specified data stripe width %d is not the same as the volume stripe width %d\n"), - progname, dswidth, ft->dswidth); + progname, dswidth, ft->data.swidth); } } diff --git a/repair/sb.c b/repair/sb.c index dedac53af..02c10d9a5 100644 --- a/repair/sb.c +++ b/repair/sb.c @@ -189,7 +189,7 @@ guess_default_geometry( * Use default block size (2^12) */ blocklog = 12; - multidisk = ft.dswidth | ft.dsunit; + multidisk = ft.data.swidth | ft.data.sunit; dblocks = x->data.size >> (blocklog - BBSHIFT); calc_default_ag_geometry(blocklog, dblocks, multidisk, agsize, agcount); From patchwork Wed Mar 13 21:40:49 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 13591901 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4087A59165 for ; Wed, 13 Mar 2024 21:41:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.137.202.133 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710366064; cv=none; b=EwLQxxnT/QcihvazMUJh1RM8X5cv5aiOOwdttAkeXO+VboFIToJ5oc2pLwNVGJiun/Ty+21x8pZH2FGW8y70g+BUhyg80drAVYClRrBSECHyVnkC6to3dISEBfICKbR2zcS9lDyIx4snLSAg9exBLKOYxlNFWeH9bVJFzViQO+E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710366064; c=relaxed/simple; bh=6lKCYp2feBw6fXkg3vLXnBSySd/0F6UjYk+9YS0pHig=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=YSggHNd7b95YS78QDJy7OeWZAQSoCnyekHOkJFNYuaxjxIyJzow0S3+sK2l6kPSY84WQAGjEJ2fmANJygzaMCDLxPomVf5R0mAoEIC3z5Em42QU60Lp1KiriP1xQzOrn/XVmYamz53YQvQNKIsGUkDaDvfnZx10VqM8ZXytUWJ8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=lst.de; spf=none smtp.mailfrom=bombadil.srs.infradead.org; dkim=pass (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b=OKgerhn8; arc=none smtp.client-ip=198.137.202.133 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=lst.de Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=bombadil.srs.infradead.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b="OKgerhn8" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description; bh=3EWpzVhg/zPlEuxPjsGAYy8nVqO2aOBX7RcVuolcSC0=; b=OKgerhn8bPloOw4vVdxA5brOBA twuuzm0bhaLhpPOwNxMrJSedgKd2jYAjtBiavhqYdjc/WFpkkfSKxH1CJR4ZKce+47N0xeTPc2Tme Xkpl0xx5hXMOEz2j5bdXdzbRdxiRwwfU+yRKuEZIX1zCb1OtC69zLavojiQWiCX6VM60+jRtx2mcq wF6EV/N0bHJQtVegdID1kv+oXsdNb13JIJMlRJQiLDC5wihMRV7HMrVxm3U7MMAzdvC8kaJVc9nYc zVWPA/u7LREwpJuis2a/mKhDakLihmJw8/vEF807qHpF17pkjbgQvqCIgvC14mFlAfMbMT9yFaES6 SX9/ucrQ==; Received: from [206.0.71.29] (helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux)) id 1rkWLO-0000000Bxq2-1jKd; Wed, 13 Mar 2024 21:41:02 +0000 From: Christoph Hellwig To: Carlos Maiolino Cc: "Darrick J . Wong" , linux-xfs@vger.kernel.org, Dave Chinner Subject: [PATCH 3/5] libxfs: remove the S_ISREG check from blkid_get_topology Date: Wed, 13 Mar 2024 14:40:49 -0700 Message-Id: <20240313214051.1718117-4-hch@lst.de> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240313214051.1718117-1-hch@lst.de> References: <20240313214051.1718117-1-hch@lst.de> Precedence: bulk X-Mailing-List: linux-xfs@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html The only caller already performs the exact same check. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Reviewed-by: Darrick J. Wong --- libxfs/topology.c | 9 --------- 1 file changed, 9 deletions(-) diff --git a/libxfs/topology.c b/libxfs/topology.c index 63f0b96a5..706eed022 100644 --- a/libxfs/topology.c +++ b/libxfs/topology.c @@ -178,15 +178,6 @@ blkid_get_topology( { blkid_topology tp; blkid_probe pr; - struct stat statbuf; - - /* can't get topology info from a file */ - if (!stat(device, &statbuf) && S_ISREG(statbuf.st_mode)) { - fprintf(stderr, - _("%s: Warning: trying to probe topology of a file %s!\n"), - progname, device); - return; - } pr = blkid_new_probe_from_filename(device); if (!pr) From patchwork Wed Mar 13 21:40:50 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 13591902 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E326B59B66 for ; Wed, 13 Mar 2024 21:41:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.137.202.133 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710366067; cv=none; b=fOJO7VuJ9sRZrSlIAXIsl/yww9WlfD7ux4SKTi7u1bVLMvnwLaKwnMgvcjhEQ8iyok09Z5Fua43WOMZ+3B3yuyGe80KcVK7GKswRM1Prlq3xLGI7yZgVjuBK4isxE0zZmkkXV9iDlPxk3TfWm6JPj86boxhCwyrrQb01BIVkqig= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710366067; c=relaxed/simple; bh=tJ9p5WewJpZfyF4FWD953h5IIS7OUPrnuOWyctTMPvo=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=G3enSMRas6n9FN+hexxN2QJEB++9P8BFyqhENu0nBGkOVtQiDbThTO9KqSNOEjFj5xTQLDnlHdF+UXU5s7NBHWl/K1mkLB+3j62Z/LRraBsLQrcmUmRz3Jxq16rMhskZD00h/lRv+VLeloTHkhuWa9QP98tF6OQLLLvA0xcQ2B0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=lst.de; spf=none smtp.mailfrom=bombadil.srs.infradead.org; dkim=pass (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b=UWfjWh8m; arc=none smtp.client-ip=198.137.202.133 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=lst.de Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=bombadil.srs.infradead.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b="UWfjWh8m" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description; bh=f3rFV9w3NnEWJ/ARPC3BBPefyCcjjBsG8HPiAaM19xo=; b=UWfjWh8mbpYFkwTLJH78PGg4Cs pr20hUUDiI+4S1ufQIlckrvizQ+h4ehrvmS8EaewLdj+GYLSn7/Kk298sPIPqhfmBMDGPfn31yFJH 9sZdMREiVRVBHI6YGPFDiuD1IonwXSpyA68SuwVoVp43qmquJRm60z17xUNq8i11G/G0zIpsVtOUY 2qrM7D3zuaUHjHvt8DZjjBTFpK9Rk2RVTROvY0wHWLV+pGUgg2RoWpxgUIPmwDVa+8GDUzCg8z/Yt QhSbg6KetKG44nX1sWi5RT+jteXJcNW5OYu2Kz3uHW1DG5txM68DvFLLjjkhDUuyUlDz+GQOxYoUl cJpBSGVA==; Received: from [206.0.71.29] (helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux)) id 1rkWLR-0000000Bxr2-0LIf; Wed, 13 Mar 2024 21:41:05 +0000 From: Christoph Hellwig To: Carlos Maiolino Cc: "Darrick J . Wong" , linux-xfs@vger.kernel.org, Dave Chinner Subject: [PATCH 4/5] libxfs: also query log device topology in get_topology Date: Wed, 13 Mar 2024 14:40:50 -0700 Message-Id: <20240313214051.1718117-5-hch@lst.de> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240313214051.1718117-1-hch@lst.de> References: <20240313214051.1718117-1-hch@lst.de> Precedence: bulk X-Mailing-List: linux-xfs@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html Also query the log device topology in get_topology, which we'll need in mkfs in a bit. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Reviewed-by: Darrick J. Wong --- libxfs/topology.c | 1 + libxfs/topology.h | 1 + 2 files changed, 2 insertions(+) diff --git a/libxfs/topology.c b/libxfs/topology.c index 706eed022..94adb5be7 100644 --- a/libxfs/topology.c +++ b/libxfs/topology.c @@ -292,4 +292,5 @@ get_topology( { get_device_topology(&xi->data, &ft->data, force_overwrite); get_device_topology(&xi->rt, &ft->rt, force_overwrite); + get_device_topology(&xi->log, &ft->log, force_overwrite); } diff --git a/libxfs/topology.h b/libxfs/topology.h index ba0c8f669..fa0a23b77 100644 --- a/libxfs/topology.h +++ b/libxfs/topology.h @@ -20,6 +20,7 @@ struct device_topology { struct fs_topology { struct device_topology data; struct device_topology rt; + struct device_topology log; }; void From patchwork Wed Mar 13 21:40:51 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 13591903 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6FF2453E2D for ; Wed, 13 Mar 2024 21:41:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.137.202.133 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710366070; cv=none; b=AJv/7soHAR4PqQwSjeZtREvxmuo5Sv9kOdCPoFpEA464POxDmcLppwKTYJ4pi5e+ME2yo+R8uOl5zmLQIMHkwaQMevM0KpAsfmtHEKWyz0D2xVaa0xXm2tmJ0tU2h+2ko7ACPZS5RQClCpXPo8oDzHpESjuNGbbp4E13e+Ma4rQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710366070; c=relaxed/simple; bh=17H7BoEeHoPlmXT09AGcC3qlK0jGSbehvhViXQ5hx/o=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=bkjqeVWIomANwMW5aRiI3l9a/mPPw73/ZgneXbX1YZb8/PXgrbadjfehEO4rHJBkFSwsDneJIupEHRPZtSltO0LYYhEo7YqfIPUMY8nZ6Z+ytMunX8rydfu2iZ98rl/SrdXdlupTUI25VOTAJq+vV2KzzSXQJ3DO7yuOs7e3y6Q= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=lst.de; spf=none smtp.mailfrom=bombadil.srs.infradead.org; dkim=pass (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b=skKfXkWo; arc=none smtp.client-ip=198.137.202.133 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=lst.de Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=bombadil.srs.infradead.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b="skKfXkWo" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description; bh=fR3yFr9TnoTUeOUldS7KhaX2T/+fASq+jO38BPUUU7A=; b=skKfXkWo26j5QzRfXj65DhdVCA cV8ttS8+B6ygBlhe30irwdQjaXaR3qRFhxi+hR5mmX/oCeRvEScsBet9ju/gF+qLxRCD6T32FX3De R02zeGiw8y60CQ290zAGRbTOH9iAEoMUe5IKFxFAkYaRpNsrop7Af1/+XNkKfLG5Kpnz28ACCwxhW 9XhdfZGL3dAJAHmv6OfKF9VaF+k5eT5oIAjwehNLTAOcnhpeyv/01G3lGuR9ywdCpmT7h0AfPENYW NjpLvzJqRp5Qxsu8YzZ1Kvy8b7kK73wmFNB10Mi97eXCBNqChsxKwyC1VH05zKY77+X/DXHp3b+bf rru8dzOw==; Received: from [206.0.71.29] (helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux)) id 1rkWLU-0000000Bxry-0eTu; Wed, 13 Mar 2024 21:41:08 +0000 From: Christoph Hellwig To: Carlos Maiolino Cc: "Darrick J . Wong" , linux-xfs@vger.kernel.org, Dave Chinner , Pankaj Raghav Subject: [PATCH 5/5] mkfs: use a sensible log sector size default Date: Wed, 13 Mar 2024 14:40:51 -0700 Message-Id: <20240313214051.1718117-6-hch@lst.de> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240313214051.1718117-1-hch@lst.de> References: <20240313214051.1718117-1-hch@lst.de> Precedence: bulk X-Mailing-List: linux-xfs@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html Currently the XFS log sector size defaults to the 512 bytes unless explicitly overriden. Default to the device logical block size queried by get_topology instead. If that is also 512 nothing changes, and if the device logical block size is larger this prevents a mkfs failure because the libxfs buffer cache blows up and as we obviously can't use a smaller than hardware supported sector size. This fixes xfs/157 with a 4k block size device. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Reviewed-by: Darrick J. Wong Tested-by: Pankaj Raghav --- mkfs/xfs_mkfs.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c index be65ccc1e..022a11a7f 100644 --- a/mkfs/xfs_mkfs.c +++ b/mkfs/xfs_mkfs.c @@ -2075,7 +2075,8 @@ static void validate_log_sectorsize( struct mkfs_params *cfg, struct cli_params *cli, - struct mkfs_default_params *dft) + struct mkfs_default_params *dft, + struct fs_topology *ft) { if (cli->loginternal && cli->lsectorsize && @@ -2090,7 +2091,7 @@ _("Can't change sector size on internal log!\n")); else if (cli->loginternal) cfg->lsectorsize = cfg->sectorsize; else - cfg->lsectorsize = dft->sectorsize; + cfg->lsectorsize = ft->log.logical_sector_size; cfg->lsectorlog = libxfs_highbit32(cfg->lsectorsize); if (cfg->lsectorsize < XFS_MIN_SECTORSIZE || @@ -4196,7 +4197,7 @@ main( blocksize = cfg.blocksize; sectorsize = cfg.sectorsize; - validate_log_sectorsize(&cfg, &cli, &dft); + validate_log_sectorsize(&cfg, &cli, &dft, &ft); validate_sb_features(&cfg, &cli); /*