Rebase to upstream v6.4.0
Following is a list of dropped backported patches which are contained in the current rebase: xfsprogs-6.4.0-set-bnobt-cntbt-numrecs-correctly-when-formattin.patch xfsprogs-6.4.0-mkfs-fix-man-s-default-value-for-sparse-option.patch xfsprogs-6.4.0-xfs_repair-don-t-add-junked-entries-to-the-rebuilt-d.patch xfsprogs-6.4.0-xfs_repair-fix-messaging-when-fixing-imap-due-to-spa.patch xfsprogs-6.4.0-xfs_repair-don-t-spray-correcting-imap-all-by-itself.patch xfsprogs-6.4.0-xfs_repair-fix-messaging-when-shortform_dir2_junk-is.patch xfsprogs-6.4.0-xfs_db-move-obfuscate_name-assertion-to-callers.patch xfsprogs-6.4.0-xfs_db-fix-metadump-name-obfuscation-for-ascii-ci-fi.patch xfsprogs-6.4.0-xfs-stabilize-the-dirent-name-transformation-functio.patch - Rename xfs_quota-fix-missing-mount-point-warning.patch to reflect upstream - version it was merged in. Resolves: RHEL-28339 Signed-off-by: Pavel Reichl <preichl@redhat.com>
This commit is contained in:
parent
c49945ae5f
commit
96a8a81319
2
.gitignore
vendored
2
.gitignore
vendored
@ -61,3 +61,5 @@ xfsprogs-3.1.2.tar.gz
|
|||||||
/xfsprogs-5.19.0.tar.sign
|
/xfsprogs-5.19.0.tar.sign
|
||||||
/xfsprogs-6.3.0.tar.sign
|
/xfsprogs-6.3.0.tar.sign
|
||||||
/xfsprogs-6.3.0.tar.xz
|
/xfsprogs-6.3.0.tar.xz
|
||||||
|
/xfsprogs-6.4.0.tar.sign
|
||||||
|
/xfsprogs-6.4.0.tar.xz
|
||||||
|
4
sources
4
sources
@ -1,2 +1,2 @@
|
|||||||
SHA512 (xfsprogs-6.3.0.tar.sign) = 55d25cba087ab3b34ac4ff6ee12267c56aab8391cb74c0f1fbba82930ab8061de04014c29fa3e2db2800fb5c943b3c3656e0db832e0ed5206c24fe1478890b13
|
SHA512 (xfsprogs-6.4.0.tar.sign) = 7b3d48bc398d2962ac113f2f2804423cc8abfb3784ccee607945c19d89e34da629cc5b2b8c946af3d7b5839c6745cf20f1a72ddd2dea6e922c39d2ec9b7d6bc6
|
||||||
SHA512 (xfsprogs-6.3.0.tar.xz) = dbb3e77d0d9cf184a0e647b8231350401a7549a23a0bfd9121cf2a1b48e85f71d98329dff440fc6e984bcecfdcc2a72f0f27c4989560f3c55359f21f3fb434bb
|
SHA512 (xfsprogs-6.4.0.tar.xz) = 831e7747640bc2964b182226d8bb6f637610b123aeec9b3cb97a5de5d5b65bde30c6b40ad2e78de6a5214e823dd75de3a2bdfddd8ab1638f5c7340a760c91b3f
|
||||||
|
@ -1,30 +0,0 @@
|
|||||||
From 965f91091e4442ea74132aa0c3c6795d922bda8c Mon Sep 17 00:00:00 2001
|
|
||||||
From: Pavel Reichl <preichl@redhat.com>
|
|
||||||
Date: Thu, 8 Jun 2023 11:13:20 +0200
|
|
||||||
Subject: [PATCH] mkfs: fix man's default value for sparse option
|
|
||||||
|
|
||||||
Fixes: 9cf846b51 ("mkfs: enable sparse inodes by default")
|
|
||||||
Suggested-by: Lukas Herbolt <lukas@herbolt.com>
|
|
||||||
Signed-off-by: Pavel Reichl <preichl@redhat.com>
|
|
||||||
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
|
|
||||||
Signed-off-by: Carlos Maiolino <cem@kernel.org>
|
|
||||||
---
|
|
||||||
man/man8/mkfs.xfs.8.in | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/man/man8/mkfs.xfs.8.in b/man/man8/mkfs.xfs.8.in
|
|
||||||
index 01f9dc6e..ce6f1e2d 100644
|
|
||||||
--- a/man/man8/mkfs.xfs.8.in
|
|
||||||
+++ b/man/man8/mkfs.xfs.8.in
|
|
||||||
@@ -631,7 +631,7 @@ Enable sparse inode chunk allocation. The
|
|
||||||
.I value
|
|
||||||
is either 0 or 1, with 1 signifying that sparse allocation is enabled.
|
|
||||||
If the value is omitted, 1 is assumed. Sparse inode allocation is
|
|
||||||
-disabled by default. This feature is only available for filesystems
|
|
||||||
+enabled by default. This feature is only available for filesystems
|
|
||||||
formatted with
|
|
||||||
.B \-m crc=1.
|
|
||||||
.IP
|
|
||||||
--
|
|
||||||
2.41.0
|
|
||||||
|
|
@ -1,131 +0,0 @@
|
|||||||
From 7901c8c1a501de87c42bb1ed83456f99462538c6 Mon Sep 17 00:00:00 2001
|
|
||||||
From: "Darrick J. Wong" <djwong@kernel.org>
|
|
||||||
Date: Thu, 1 Jun 2023 11:41:10 +0200
|
|
||||||
Subject: [PATCH] xfs: set bnobt/cntbt numrecs correctly when formatting new
|
|
||||||
AGs
|
|
||||||
|
|
||||||
Source kernel commit: 8e698ee72c4ecbbf18264568eb310875839fd601
|
|
||||||
|
|
||||||
Through generic/300, I discovered that mkfs.xfs creates corrupt
|
|
||||||
filesystems when given these parameters:
|
|
||||||
|
|
||||||
# mkfs.xfs -d size=512M /dev/sda -f -d su=128k,sw=4 --unsupported
|
|
||||||
Filesystems formatted with --unsupported are not supported!!
|
|
||||||
meta-data=/dev/sda isize=512 agcount=8, agsize=16352 blks
|
|
||||||
= sectsz=512 attr=2, projid32bit=1
|
|
||||||
= crc=1 finobt=1, sparse=1, rmapbt=1
|
|
||||||
= reflink=1 bigtime=1 inobtcount=1 nrext64=1
|
|
||||||
data = bsize=4096 blocks=130816, imaxpct=25
|
|
||||||
= sunit=32 swidth=128 blks
|
|
||||||
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
|
|
||||||
log =internal log bsize=4096 blocks=8192, version=2
|
|
||||||
= sectsz=512 sunit=32 blks, lazy-count=1
|
|
||||||
realtime =none extsz=4096 blocks=0, rtextents=0
|
|
||||||
= rgcount=0 rgsize=0 blks
|
|
||||||
Discarding blocks...Done.
|
|
||||||
# xfs_repair -n /dev/sda
|
|
||||||
Phase 1 - find and verify superblock...
|
|
||||||
- reporting progress in intervals of 15 minutes
|
|
||||||
Phase 2 - using internal log
|
|
||||||
- zero log...
|
|
||||||
- 16:30:50: zeroing log - 16320 of 16320 blocks done
|
|
||||||
- scan filesystem freespace and inode maps...
|
|
||||||
agf_freeblks 25, counted 0 in ag 4
|
|
||||||
sb_fdblocks 8823, counted 8798
|
|
||||||
|
|
||||||
The root cause of this problem is the numrecs handling in
|
|
||||||
xfs_freesp_init_recs, which is used to initialize a new AG. Prior to
|
|
||||||
calling the function, we set up the new bnobt block with numrecs == 1
|
|
||||||
and rely on _freesp_init_recs to format that new record. If the last
|
|
||||||
record created has a blockcount of zero, then it sets numrecs = 0.
|
|
||||||
|
|
||||||
That last bit isn't correct if the AG contains the log, the start of the
|
|
||||||
log is not immediately after the initial blocks due to stripe alignment,
|
|
||||||
and the end of the log is perfectly aligned with the end of the AG. For
|
|
||||||
this case, we actually formatted a single bnobt record to handle the
|
|
||||||
free space before the start of the (stripe aligned) log, and incremented
|
|
||||||
arec to try to format a second record. That second record turned out to
|
|
||||||
be unnecessary, so what we really want is to leave numrecs at 1.
|
|
||||||
|
|
||||||
The numrecs handling itself is overly complicated because a different
|
|
||||||
function sets numrecs == 1. Change the bnobt creation code to start
|
|
||||||
with numrecs set to zero and only increment it after successfully
|
|
||||||
formatting a free space extent into the btree block.
|
|
||||||
|
|
||||||
Fixes: f327a00745ff ("xfs: account for log space when formatting new AGs")
|
|
||||||
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
|
|
||||||
Reviewed-by: Dave Chinner <dchinner@redhat.com>
|
|
||||||
Signed-off-by: Dave Chinner <david@fromorbit.com>
|
|
||||||
Signed-off-by: Carlos Maiolino <cem@kernel.org>
|
|
||||||
Signed-off-by: Pavel Reichl <preichl@redhat.com>
|
|
||||||
---
|
|
||||||
libxfs/xfs_ag.c | 19 +++++++++----------
|
|
||||||
1 file changed, 9 insertions(+), 10 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/libxfs/xfs_ag.c b/libxfs/xfs_ag.c
|
|
||||||
index e3465e06..5d269312 100644
|
|
||||||
--- a/libxfs/xfs_ag.c
|
|
||||||
+++ b/libxfs/xfs_ag.c
|
|
||||||
@@ -493,10 +493,12 @@ xfs_freesp_init_recs(
|
|
||||||
ASSERT(start >= mp->m_ag_prealloc_blocks);
|
|
||||||
if (start != mp->m_ag_prealloc_blocks) {
|
|
||||||
/*
|
|
||||||
- * Modify first record to pad stripe align of log
|
|
||||||
+ * Modify first record to pad stripe align of log and
|
|
||||||
+ * bump the record count.
|
|
||||||
*/
|
|
||||||
arec->ar_blockcount = cpu_to_be32(start -
|
|
||||||
mp->m_ag_prealloc_blocks);
|
|
||||||
+ be16_add_cpu(&block->bb_numrecs, 1);
|
|
||||||
nrec = arec + 1;
|
|
||||||
|
|
||||||
/*
|
|
||||||
@@ -507,7 +509,6 @@ xfs_freesp_init_recs(
|
|
||||||
be32_to_cpu(arec->ar_startblock) +
|
|
||||||
be32_to_cpu(arec->ar_blockcount));
|
|
||||||
arec = nrec;
|
|
||||||
- be16_add_cpu(&block->bb_numrecs, 1);
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
* Change record start to after the internal log
|
|
||||||
@@ -516,15 +517,13 @@ xfs_freesp_init_recs(
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
- * Calculate the record block count and check for the case where
|
|
||||||
- * the log might have consumed all available space in the AG. If
|
|
||||||
- * so, reset the record count to 0 to avoid exposure of an invalid
|
|
||||||
- * record start block.
|
|
||||||
+ * Calculate the block count of this record; if it is nonzero,
|
|
||||||
+ * increment the record count.
|
|
||||||
*/
|
|
||||||
arec->ar_blockcount = cpu_to_be32(id->agsize -
|
|
||||||
be32_to_cpu(arec->ar_startblock));
|
|
||||||
- if (!arec->ar_blockcount)
|
|
||||||
- block->bb_numrecs = 0;
|
|
||||||
+ if (arec->ar_blockcount)
|
|
||||||
+ be16_add_cpu(&block->bb_numrecs, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
@@ -536,7 +535,7 @@ xfs_bnoroot_init(
|
|
||||||
struct xfs_buf *bp,
|
|
||||||
struct aghdr_init_data *id)
|
|
||||||
{
|
|
||||||
- xfs_btree_init_block(mp, bp, XFS_BTNUM_BNO, 0, 1, id->agno);
|
|
||||||
+ xfs_btree_init_block(mp, bp, XFS_BTNUM_BNO, 0, 0, id->agno);
|
|
||||||
xfs_freesp_init_recs(mp, bp, id);
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -546,7 +545,7 @@ xfs_cntroot_init(
|
|
||||||
struct xfs_buf *bp,
|
|
||||||
struct aghdr_init_data *id)
|
|
||||||
{
|
|
||||||
- xfs_btree_init_block(mp, bp, XFS_BTNUM_CNT, 0, 1, id->agno);
|
|
||||||
+ xfs_btree_init_block(mp, bp, XFS_BTNUM_CNT, 0, 0, id->agno);
|
|
||||||
xfs_freesp_init_recs(mp, bp, id);
|
|
||||||
}
|
|
||||||
|
|
||||||
--
|
|
||||||
2.41.0
|
|
||||||
|
|
@ -1,132 +0,0 @@
|
|||||||
From bd970a7390d9af5ce859397a6c368d2465368d76 Mon Sep 17 00:00:00 2001
|
|
||||||
From: "Darrick J. Wong" <djwong@kernel.org>
|
|
||||||
Date: Wed, 31 May 2023 11:13:21 +0200
|
|
||||||
Subject: [PATCH] xfs: stabilize the dirent name transformation function used
|
|
||||||
for ascii-ci dir hash computation
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
|
|
||||||
Source kernel commit: a9248538facc3d9e769489e50a544509c2f9cebe
|
|
||||||
|
|
||||||
Back in the old days, the "ascii-ci" feature was created to implement
|
|
||||||
case-insensitive directory entry lookups for latin1-encoded names and
|
|
||||||
remove the large overhead of Samba's case-insensitive lookup code. UTF8
|
|
||||||
names were not allowed, but nobody explicitly wrote in the documentation
|
|
||||||
that this was only expected to work if the system used latin1 names.
|
|
||||||
The kernel tolower function was selected to prepare names for hashed
|
|
||||||
lookups.
|
|
||||||
|
|
||||||
There's a major discrepancy in the function that computes directory entry
|
|
||||||
hashes for filesystems that have ASCII case-insensitive lookups enabled.
|
|
||||||
The root of this is that the kernel and glibc's tolower implementations
|
|
||||||
have differing behavior for extended ASCII accented characters. I wrote
|
|
||||||
a program to spit out characters for which the tolower() return value is
|
|
||||||
different from the input:
|
|
||||||
|
|
||||||
glibc tolower:
|
|
||||||
65:A 66:B 67:C 68:D 69:E 70:F 71:G 72:H 73:I 74:J 75:K 76:L 77:M 78:N
|
|
||||||
79:O 80:P 81:Q 82:R 83:S 84:T 85:U 86:V 87:W 88:X 89:Y 90:Z
|
|
||||||
|
|
||||||
kernel tolower:
|
|
||||||
65:A 66:B 67:C 68:D 69:E 70:F 71:G 72:H 73:I 74:J 75:K 76:L 77:M 78:N
|
|
||||||
79:O 80:P 81:Q 82:R 83:S 84:T 85:U 86:V 87:W 88:X 89:Y 90:Z 192:À 193:Á
|
|
||||||
194:Â 195:Ã 196:Ä 197:Å 198:Æ 199:Ç 200:È 201:É 202:Ê 203:Ë 204:Ì 205:Í
|
|
||||||
206:Î 207:Ï 208:Ð 209:Ñ 210:Ò 211:Ó 212:Ô 213:Õ 214:Ö 215:× 216:Ø 217:Ù
|
|
||||||
218:Ú 219:Û 220:Ü 221:Ý 222:Þ
|
|
||||||
|
|
||||||
Which means that the kernel and userspace do not agree on the hash value
|
|
||||||
for a directory filename that contains those higher values. The hash
|
|
||||||
values are written into the leaf index block of directories that are
|
|
||||||
larger than two blocks in size, which means that xfs_repair will flag
|
|
||||||
these directories as having corrupted hash indexes and rewrite the index
|
|
||||||
with hash values that the kernel now will not recognize.
|
|
||||||
|
|
||||||
Because the ascii-ci feature is not frequently enabled and the kernel
|
|
||||||
touches filesystems far more frequently than xfs_repair does, fix this
|
|
||||||
by encoding the kernel's toupper predicate and tolower functions into
|
|
||||||
libxfs. Give the new functions less provocative names to make it really
|
|
||||||
obvious that this is a pre-hash name preparation function, and nothing
|
|
||||||
else. This change makes userspace's behavior consistent with the
|
|
||||||
kernel.
|
|
||||||
|
|
||||||
Found by auditing obfuscate_name in xfs_metadump as part of working on
|
|
||||||
parent pointers, wondering how it could possibly work correctly with ci
|
|
||||||
filesystems, writing a test tool to create a directory with
|
|
||||||
hash-colliding names, and watching xfs_repair flag it.
|
|
||||||
|
|
||||||
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
|
|
||||||
Reviewed-by: Christoph Hellwig <hch@lst.de>
|
|
||||||
Signed-off-by: Carlos Maiolino <cem@kernel.org>
|
|
||||||
Signed-off-by: Pavel Reichl <preichl@redhat.com>
|
|
||||||
---
|
|
||||||
libxfs/xfs_dir2.c | 5 +++--
|
|
||||||
libxfs/xfs_dir2.h | 31 +++++++++++++++++++++++++++++++
|
|
||||||
2 files changed, 34 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/libxfs/xfs_dir2.c b/libxfs/xfs_dir2.c
|
|
||||||
index d6a19296..c19684b3 100644
|
|
||||||
--- a/libxfs/xfs_dir2.c
|
|
||||||
+++ b/libxfs/xfs_dir2.c
|
|
||||||
@@ -63,7 +63,7 @@ xfs_ascii_ci_hashname(
|
|
||||||
int i;
|
|
||||||
|
|
||||||
for (i = 0, hash = 0; i < name->len; i++)
|
|
||||||
- hash = tolower(name->name[i]) ^ rol32(hash, 7);
|
|
||||||
+ hash = xfs_ascii_ci_xfrm(name->name[i]) ^ rol32(hash, 7);
|
|
||||||
|
|
||||||
return hash;
|
|
||||||
}
|
|
||||||
@@ -84,7 +84,8 @@ xfs_ascii_ci_compname(
|
|
||||||
for (i = 0; i < len; i++) {
|
|
||||||
if (args->name[i] == name[i])
|
|
||||||
continue;
|
|
||||||
- if (tolower(args->name[i]) != tolower(name[i]))
|
|
||||||
+ if (xfs_ascii_ci_xfrm(args->name[i]) !=
|
|
||||||
+ xfs_ascii_ci_xfrm(name[i]))
|
|
||||||
return XFS_CMP_DIFFERENT;
|
|
||||||
result = XFS_CMP_CASE;
|
|
||||||
}
|
|
||||||
diff --git a/libxfs/xfs_dir2.h b/libxfs/xfs_dir2.h
|
|
||||||
index dd39f17d..19af22a1 100644
|
|
||||||
--- a/libxfs/xfs_dir2.h
|
|
||||||
+++ b/libxfs/xfs_dir2.h
|
|
||||||
@@ -248,4 +248,35 @@ unsigned int xfs_dir3_data_end_offset(struct xfs_da_geometry *geo,
|
|
||||||
struct xfs_dir2_data_hdr *hdr);
|
|
||||||
bool xfs_dir2_namecheck(const void *name, size_t length);
|
|
||||||
|
|
||||||
+/*
|
|
||||||
+ * The "ascii-ci" feature was created to speed up case-insensitive lookups for
|
|
||||||
+ * a Samba product. Because of the inherent problems with CI and UTF-8
|
|
||||||
+ * encoding, etc, it was decided that Samba would be configured to export
|
|
||||||
+ * latin1/iso 8859-1 encodings as that covered >90% of the target markets for
|
|
||||||
+ * the product. Hence the "ascii-ci" casefolding code could be encoded into
|
|
||||||
+ * the XFS directory operations and remove all the overhead of casefolding from
|
|
||||||
+ * Samba.
|
|
||||||
+ *
|
|
||||||
+ * To provide consistent hashing behavior between the userspace and kernel,
|
|
||||||
+ * these functions prepare names for hashing by transforming specific bytes
|
|
||||||
+ * to other bytes. Robustness with other encodings is not guaranteed.
|
|
||||||
+ */
|
|
||||||
+static inline bool xfs_ascii_ci_need_xfrm(unsigned char c)
|
|
||||||
+{
|
|
||||||
+ if (c >= 0x41 && c <= 0x5a) /* A-Z */
|
|
||||||
+ return true;
|
|
||||||
+ if (c >= 0xc0 && c <= 0xd6) /* latin A-O with accents */
|
|
||||||
+ return true;
|
|
||||||
+ if (c >= 0xd8 && c <= 0xde) /* latin O-Y with accents */
|
|
||||||
+ return true;
|
|
||||||
+ return false;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static inline unsigned char xfs_ascii_ci_xfrm(unsigned char c)
|
|
||||||
+{
|
|
||||||
+ if (xfs_ascii_ci_need_xfrm(c))
|
|
||||||
+ c -= 'A' - 'a';
|
|
||||||
+ return c;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
#endif /* __XFS_DIR2_H__ */
|
|
||||||
--
|
|
||||||
2.41.0
|
|
||||||
|
|
@ -1,178 +0,0 @@
|
|||||||
From 10a01bcdd748773c185255516a72e75a71295bd4 Mon Sep 17 00:00:00 2001
|
|
||||||
From: "Darrick J. Wong" <djwong@kernel.org>
|
|
||||||
Date: Thu, 15 Jun 2023 09:11:04 -0700
|
|
||||||
Subject: [PATCH] xfs_db: fix metadump name obfuscation for ascii-ci
|
|
||||||
filesystems
|
|
||||||
|
|
||||||
Now that we've stabilized the dirent hash function for ascii-ci
|
|
||||||
filesystems, adapt the metadump name obfuscation code to detect when
|
|
||||||
it's obfuscating a directory entry name on an ascii-ci filesystem and
|
|
||||||
spit out names that actually have the same hash.
|
|
||||||
|
|
||||||
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
|
|
||||||
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
|
|
||||||
Reviewed-by: Carlos Maiolino <cmaiolino@redhat.com>
|
|
||||||
Signed-off-by: Carlos Maiolino <cem@kernel.org>
|
|
||||||
Signed-off-by: Pavel Reichl <preichl@redhat.com>
|
|
||||||
---
|
|
||||||
db/metadump.c | 82 +++++++++++++++++++++++++++++++++++++++++++++------
|
|
||||||
1 file changed, 73 insertions(+), 9 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/db/metadump.c b/db/metadump.c
|
|
||||||
index 317ff728..9ccee0b7 100644
|
|
||||||
--- a/db/metadump.c
|
|
||||||
+++ b/db/metadump.c
|
|
||||||
@@ -817,13 +817,17 @@ static void
|
|
||||||
obfuscate_name(
|
|
||||||
xfs_dahash_t hash,
|
|
||||||
size_t name_len,
|
|
||||||
- unsigned char *name)
|
|
||||||
+ unsigned char *name,
|
|
||||||
+ bool is_dirent)
|
|
||||||
{
|
|
||||||
- unsigned char *newp = name;
|
|
||||||
+ unsigned char *oldname = NULL;
|
|
||||||
+ unsigned char *newp;
|
|
||||||
int i;
|
|
||||||
- xfs_dahash_t new_hash = 0;
|
|
||||||
+ xfs_dahash_t new_hash;
|
|
||||||
unsigned char *first;
|
|
||||||
unsigned char high_bit;
|
|
||||||
+ int tries = 0;
|
|
||||||
+ bool is_ci_name = is_dirent && xfs_has_asciici(mp);
|
|
||||||
int shift;
|
|
||||||
|
|
||||||
/*
|
|
||||||
@@ -836,6 +840,26 @@ obfuscate_name(
|
|
||||||
if (name_len < 5)
|
|
||||||
return;
|
|
||||||
|
|
||||||
+ if (is_ci_name) {
|
|
||||||
+ oldname = malloc(name_len);
|
|
||||||
+ if (!oldname)
|
|
||||||
+ return;
|
|
||||||
+ memcpy(oldname, name, name_len);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+again:
|
|
||||||
+ newp = name;
|
|
||||||
+ new_hash = 0;
|
|
||||||
+
|
|
||||||
+ /*
|
|
||||||
+ * If we cannot generate a ci-compatible obfuscated name after 1000
|
|
||||||
+ * tries, don't bother obfuscating the name.
|
|
||||||
+ */
|
|
||||||
+ if (tries++ > 1000) {
|
|
||||||
+ memcpy(name, oldname, name_len);
|
|
||||||
+ goto out_free;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
/*
|
|
||||||
* The beginning of the obfuscated name can be pretty much
|
|
||||||
* anything, so fill it in with random characters.
|
|
||||||
@@ -843,7 +867,11 @@ obfuscate_name(
|
|
||||||
*/
|
|
||||||
for (i = 0; i < name_len - 5; i++) {
|
|
||||||
*newp = random_filename_char();
|
|
||||||
- new_hash = *newp ^ rol32(new_hash, 7);
|
|
||||||
+ if (is_ci_name)
|
|
||||||
+ new_hash = xfs_ascii_ci_xfrm(*newp) ^
|
|
||||||
+ rol32(new_hash, 7);
|
|
||||||
+ else
|
|
||||||
+ new_hash = *newp ^ rol32(new_hash, 7);
|
|
||||||
newp++;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -867,6 +895,17 @@ obfuscate_name(
|
|
||||||
high_bit = 0x80;
|
|
||||||
} else
|
|
||||||
high_bit = 0;
|
|
||||||
+
|
|
||||||
+ /*
|
|
||||||
+ * If ascii-ci is enabled, uppercase characters are converted
|
|
||||||
+ * to lowercase characters while computing the name hash. If
|
|
||||||
+ * any of the necessary correction bytes are uppercase, the
|
|
||||||
+ * hash of the new name will not match. Try again with a
|
|
||||||
+ * different prefix.
|
|
||||||
+ */
|
|
||||||
+ if (is_ci_name && xfs_ascii_ci_need_xfrm(*newp))
|
|
||||||
+ goto again;
|
|
||||||
+
|
|
||||||
ASSERT(!is_invalid_char(*newp));
|
|
||||||
newp++;
|
|
||||||
}
|
|
||||||
@@ -880,8 +919,15 @@ obfuscate_name(
|
|
||||||
*/
|
|
||||||
if (high_bit) {
|
|
||||||
*first ^= 0x10;
|
|
||||||
+
|
|
||||||
+ if (is_ci_name && xfs_ascii_ci_need_xfrm(*first))
|
|
||||||
+ goto again;
|
|
||||||
+
|
|
||||||
ASSERT(!is_invalid_char(*first));
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+out_free:
|
|
||||||
+ free(oldname);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
@@ -1177,6 +1223,24 @@ handle_duplicate_name(xfs_dahash_t hash, size_t name_len, unsigned char *name)
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
+static inline xfs_dahash_t
|
|
||||||
+dirattr_hashname(
|
|
||||||
+ bool is_dirent,
|
|
||||||
+ const uint8_t *name,
|
|
||||||
+ int namelen)
|
|
||||||
+{
|
|
||||||
+ if (is_dirent) {
|
|
||||||
+ struct xfs_name xname = {
|
|
||||||
+ .name = name,
|
|
||||||
+ .len = namelen,
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ return libxfs_dir2_hashname(mp, &xname);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return libxfs_da_hashname(name, namelen);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
static void
|
|
||||||
generate_obfuscated_name(
|
|
||||||
xfs_ino_t ino,
|
|
||||||
@@ -1205,9 +1269,9 @@ generate_obfuscated_name(
|
|
||||||
|
|
||||||
/* Obfuscate the name (if possible) */
|
|
||||||
|
|
||||||
- hash = libxfs_da_hashname(name, namelen);
|
|
||||||
- obfuscate_name(hash, namelen, name);
|
|
||||||
- ASSERT(hash == libxfs_da_hashname(name, namelen));
|
|
||||||
+ hash = dirattr_hashname(ino != 0, name, namelen);
|
|
||||||
+ obfuscate_name(hash, namelen, name, ino != 0);
|
|
||||||
+ ASSERT(hash == dirattr_hashname(ino != 0, name, namelen));
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Make sure the name is not something already seen. If we
|
|
||||||
@@ -1320,7 +1384,7 @@ obfuscate_path_components(
|
|
||||||
/* last (or single) component */
|
|
||||||
namelen = strnlen((char *)comp, len);
|
|
||||||
hash = libxfs_da_hashname(comp, namelen);
|
|
||||||
- obfuscate_name(hash, namelen, comp);
|
|
||||||
+ obfuscate_name(hash, namelen, comp, false);
|
|
||||||
ASSERT(hash == libxfs_da_hashname(comp, namelen));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
@@ -1332,7 +1396,7 @@ obfuscate_path_components(
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
hash = libxfs_da_hashname(comp, namelen);
|
|
||||||
- obfuscate_name(hash, namelen, comp);
|
|
||||||
+ obfuscate_name(hash, namelen, comp, false);
|
|
||||||
ASSERT(hash == libxfs_da_hashname(comp, namelen));
|
|
||||||
comp += namelen + 1;
|
|
||||||
len -= namelen + 1;
|
|
||||||
--
|
|
||||||
2.41.0
|
|
||||||
|
|
@ -1,56 +0,0 @@
|
|||||||
From cb8c70b017e30d4004373300bce488a9687166ac Mon Sep 17 00:00:00 2001
|
|
||||||
From: "Darrick J. Wong" <djwong@kernel.org>
|
|
||||||
Date: Mon, 5 Jun 2023 08:36:38 -0700
|
|
||||||
Subject: [PATCH] xfs_db: move obfuscate_name assertion to callers
|
|
||||||
|
|
||||||
Currently, obfuscate_name asserts that the hash of the new name is the
|
|
||||||
same as the old name. To enable bug fixes in the next patch, move this
|
|
||||||
assertion to the callers.
|
|
||||||
|
|
||||||
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
|
|
||||||
Reviewed-by: Christoph Hellwig <hch@lst.de>
|
|
||||||
Signed-off-by: Carlos Maiolino <cem@kernel.org>
|
|
||||||
Signed-off-by: Pavel Reichl <preichl@redhat.com>
|
|
||||||
---
|
|
||||||
db/metadump.c | 4 +++-
|
|
||||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/db/metadump.c b/db/metadump.c
|
|
||||||
index 27d1df43..317ff728 100644
|
|
||||||
--- a/db/metadump.c
|
|
||||||
+++ b/db/metadump.c
|
|
||||||
@@ -882,7 +882,6 @@ obfuscate_name(
|
|
||||||
*first ^= 0x10;
|
|
||||||
ASSERT(!is_invalid_char(*first));
|
|
||||||
}
|
|
||||||
- ASSERT(libxfs_da_hashname(name, name_len) == hash);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
@@ -1208,6 +1207,7 @@ generate_obfuscated_name(
|
|
||||||
|
|
||||||
hash = libxfs_da_hashname(name, namelen);
|
|
||||||
obfuscate_name(hash, namelen, name);
|
|
||||||
+ ASSERT(hash == libxfs_da_hashname(name, namelen));
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Make sure the name is not something already seen. If we
|
|
||||||
@@ -1321,6 +1321,7 @@ obfuscate_path_components(
|
|
||||||
namelen = strnlen((char *)comp, len);
|
|
||||||
hash = libxfs_da_hashname(comp, namelen);
|
|
||||||
obfuscate_name(hash, namelen, comp);
|
|
||||||
+ ASSERT(hash == libxfs_da_hashname(comp, namelen));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
namelen = slash - (char *)comp;
|
|
||||||
@@ -1332,6 +1333,7 @@ obfuscate_path_components(
|
|
||||||
}
|
|
||||||
hash = libxfs_da_hashname(comp, namelen);
|
|
||||||
obfuscate_name(hash, namelen, comp);
|
|
||||||
+ ASSERT(hash == libxfs_da_hashname(comp, namelen));
|
|
||||||
comp += namelen + 1;
|
|
||||||
len -= namelen + 1;
|
|
||||||
}
|
|
||||||
--
|
|
||||||
2.41.0
|
|
||||||
|
|
@ -1,41 +0,0 @@
|
|||||||
From aca02624815ca47c6fd4cafdb0aeaad641ca1915 Mon Sep 17 00:00:00 2001
|
|
||||||
From: "Darrick J. Wong" <djwong@kernel.org>
|
|
||||||
Date: Mon, 5 Jun 2023 08:37:24 -0700
|
|
||||||
Subject: [PATCH] xfs_repair: don't add junked entries to the rebuilt directory
|
|
||||||
|
|
||||||
If a directory contains multiple entries with the same name, we create
|
|
||||||
separate objects in the directory hashtab for each dirent. The first
|
|
||||||
one has p->junkit==0, but the subsequent ones have p->junkit==1.
|
|
||||||
Because these are duplicate names that are not garbage, the first
|
|
||||||
character of p->name.name is not set to a slash.
|
|
||||||
|
|
||||||
Don't add these subsequent hashtab entries to the rebuilt directory.
|
|
||||||
|
|
||||||
Found by running xfs/155 with the parent pointers patchset enabled.
|
|
||||||
|
|
||||||
Fixes: 33165ec3b4b ("Fix dirv2 rebuild in phase6 Merge of master-melb:xfs-cmds:26664a by kenmcd.")
|
|
||||||
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
|
|
||||||
Reviewed-by: Pavel Reichl <preichl@redhat.com>
|
|
||||||
Signed-off-by: Carlos Maiolino <cem@kernel.org>
|
|
||||||
Signed-off-by: Pavel Reichl <preichl@redhat.com>
|
|
||||||
---
|
|
||||||
repair/phase6.c | 3 ++-
|
|
||||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/repair/phase6.c b/repair/phase6.c
|
|
||||||
index 25bbcd10..3870c5c9 100644
|
|
||||||
--- a/repair/phase6.c
|
|
||||||
+++ b/repair/phase6.c
|
|
||||||
@@ -1316,7 +1316,8 @@ longform_dir2_rebuild(
|
|
||||||
/* go through the hash list and re-add the inodes */
|
|
||||||
|
|
||||||
for (p = hashtab->first; p; p = p->nextbyorder) {
|
|
||||||
-
|
|
||||||
+ if (p->junkit)
|
|
||||||
+ continue;
|
|
||||||
if (p->name.name[0] == '/' || (p->name.name[0] == '.' &&
|
|
||||||
(p->name.len == 1 || (p->name.len == 2 &&
|
|
||||||
p->name.name[1] == '.'))))
|
|
||||||
--
|
|
||||||
2.41.0
|
|
||||||
|
|
@ -1,57 +0,0 @@
|
|||||||
From 67f541056f4dd3ba1ccc5d11464d67afdab0f2a3 Mon Sep 17 00:00:00 2001
|
|
||||||
From: "Darrick J. Wong" <djwong@kernel.org>
|
|
||||||
Date: Mon, 5 Jun 2023 08:37:39 -0700
|
|
||||||
Subject: [PATCH] xfs_repair: don't spray correcting imap all by itself
|
|
||||||
|
|
||||||
In xfs/155, I occasionally see this in the xfs_repair output:
|
|
||||||
|
|
||||||
correcting imap
|
|
||||||
correcting imap
|
|
||||||
correcting imap
|
|
||||||
...
|
|
||||||
|
|
||||||
This is completely useless, since we don't actually log which inode
|
|
||||||
prompted this message. This logic has been here for a really long time,
|
|
||||||
but ... I can't make heads nor tails of it. If we're running in verbose
|
|
||||||
or dry-run mode, then print the inode number, but not if we're running
|
|
||||||
in fixit mode?
|
|
||||||
|
|
||||||
A few lines later, if we're running in verbose dry-run mode, we print
|
|
||||||
"correcting imap" even though we're not going to write anything.
|
|
||||||
|
|
||||||
If we get here, the inode looks like it's in use, but the inode index
|
|
||||||
says it isn't. This is a corruption, so either we fix it or we say that
|
|
||||||
we would fix it.
|
|
||||||
|
|
||||||
Fixes: 6c39a3cbda3 ("Don't trash lost+found in phase 4 Merge of master-melb:xfs-cmds:29144a by kenmcd.")
|
|
||||||
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
|
|
||||||
Reviewed-by: Carlos Maiolino <cmaiolino@redhat.com>
|
|
||||||
Signed-off-by: Carlos Maiolino <cem@kernel.org>
|
|
||||||
Signed-off-by: Pavel Reichl <preichl@redhat.com>
|
|
||||||
---
|
|
||||||
repair/dino_chunks.c | 6 ++----
|
|
||||||
1 file changed, 2 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/repair/dino_chunks.c b/repair/dino_chunks.c
|
|
||||||
index 0e09132b..0841e65b 100644
|
|
||||||
--- a/repair/dino_chunks.c
|
|
||||||
+++ b/repair/dino_chunks.c
|
|
||||||
@@ -871,13 +871,11 @@ next_readbuf:
|
|
||||||
*/
|
|
||||||
if (is_used) {
|
|
||||||
if (is_inode_free(ino_rec, irec_offset)) {
|
|
||||||
- if (verbose || no_modify) {
|
|
||||||
- do_warn(
|
|
||||||
+ do_warn(
|
|
||||||
_("imap claims in-use inode %" PRIu64 " is free, "),
|
|
||||||
ino);
|
|
||||||
- }
|
|
||||||
|
|
||||||
- if (verbose || !no_modify)
|
|
||||||
+ if (!no_modify)
|
|
||||||
do_warn(_("correcting imap\n"));
|
|
||||||
else
|
|
||||||
do_warn(_("would correct imap\n"));
|
|
||||||
--
|
|
||||||
2.41.0
|
|
||||||
|
|
@ -1,39 +0,0 @@
|
|||||||
From 1e12a0751b99efd48cda501258e16f00bef9d13d Mon Sep 17 00:00:00 2001
|
|
||||||
From: "Darrick J. Wong" <djwong@kernel.org>
|
|
||||||
Date: Mon, 5 Jun 2023 08:38:01 -0700
|
|
||||||
Subject: [PATCH] xfs_repair: fix messaging when fixing imap due to sparse
|
|
||||||
cluster
|
|
||||||
|
|
||||||
This logic is wrong -- if we're in verbose dry-run mode, we do NOT want
|
|
||||||
to say that we're correcting the imap. Otherwise, we print things like:
|
|
||||||
|
|
||||||
imap claims inode XXX is present, but inode cluster is sparse,
|
|
||||||
|
|
||||||
But then we can erroneously tell the user that we would correct the
|
|
||||||
imap when in fact we /are/ correcting it.
|
|
||||||
|
|
||||||
Fixes: f4ff8086586 ("xfs_repair: don't crash on partially sparse inode clusters")
|
|
||||||
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
|
|
||||||
Reviewed-by: Carlos Maiolino <cmaiolino@redhat.com>
|
|
||||||
Signed-off-by: Carlos Maiolino <cem@kernel.org>
|
|
||||||
Signed-off-by: Pavel Reichl <preichl@redhat.com>
|
|
||||||
---
|
|
||||||
repair/dino_chunks.c | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/repair/dino_chunks.c b/repair/dino_chunks.c
|
|
||||||
index 0841e65b1844..64ce2a323c8d 100644
|
|
||||||
--- a/repair/dino_chunks.c
|
|
||||||
+++ b/repair/dino_chunks.c
|
|
||||||
@@ -834,7 +834,7 @@ next_readbuf:
|
|
||||||
do_warn(
|
|
||||||
_("imap claims inode %" PRIu64 " is present, but inode cluster is sparse, "),
|
|
||||||
ino);
|
|
||||||
- if (verbose || !no_modify)
|
|
||||||
+ if (!no_modify)
|
|
||||||
do_warn(_("correcting imap\n"));
|
|
||||||
else
|
|
||||||
do_warn(_("would correct imap\n"));
|
|
||||||
--
|
|
||||||
2.41.0
|
|
||||||
|
|
@ -1,96 +0,0 @@
|
|||||||
From d159552bbb05de6998388b960f50e5e0012828ea Mon Sep 17 00:00:00 2001
|
|
||||||
From: "Darrick J. Wong" <djwong@kernel.org>
|
|
||||||
Date: Mon, 5 Jun 2023 08:37:50 -0700
|
|
||||||
Subject: [PATCH] xfs_repair: fix messaging when shortform_dir2_junk is called
|
|
||||||
|
|
||||||
This function is called when we've decide to junk a shortform directory
|
|
||||||
entry. This is obviously corruption of some kind, so we should always
|
|
||||||
say something, particularly if we're in !verbose repair mode.
|
|
||||||
Otherwise, if we're in non-verbose repair mode, we print things like:
|
|
||||||
|
|
||||||
entry "FOO" in shortform directory XXX references non-existent inode YYY
|
|
||||||
|
|
||||||
Without telling the sysadmin that we're removing the dirent.
|
|
||||||
|
|
||||||
Fixes: aaca101b1ae ("xfs_repair: add support for validating dirent ftype field")
|
|
||||||
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
|
|
||||||
Reviewed-by: Carlos Maiolino <cmaiolino@redhat.com>
|
|
||||||
Signed-off-by: Carlos Maiolino <cem@kernel.org>
|
|
||||||
Signed-off-by: Pavel Reichl <preichl@redhat.com>
|
|
||||||
---
|
|
||||||
repair/phase6.c | 17 +++++++----------
|
|
||||||
1 file changed, 7 insertions(+), 10 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/repair/phase6.c b/repair/phase6.c
|
|
||||||
index c6418534..be10d9b7 100644
|
|
||||||
--- a/repair/phase6.c
|
|
||||||
+++ b/repair/phase6.c
|
|
||||||
@@ -2440,10 +2440,7 @@ shortform_dir2_junk(
|
|
||||||
*/
|
|
||||||
(*index)--;
|
|
||||||
|
|
||||||
- if (verbose)
|
|
||||||
- do_warn(_("junking entry\n"));
|
|
||||||
- else
|
|
||||||
- do_warn("\n");
|
|
||||||
+ do_warn(_("junking entry\n"));
|
|
||||||
return sfep;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -2592,7 +2589,7 @@ shortform_dir2_entry_check(
|
|
||||||
|
|
||||||
if (irec == NULL) {
|
|
||||||
do_warn(
|
|
||||||
- _("entry \"%s\" in shortform directory %" PRIu64 " references non-existent inode %" PRIu64 "\n"),
|
|
||||||
+ _("entry \"%s\" in shortform directory %" PRIu64 " references non-existent inode %" PRIu64 ", "),
|
|
||||||
fname, ino, lino);
|
|
||||||
next_sfep = shortform_dir2_junk(mp, sfp, sfep, lino,
|
|
||||||
&max_size, &i, &bytes_deleted,
|
|
||||||
@@ -2609,7 +2606,7 @@ shortform_dir2_entry_check(
|
|
||||||
*/
|
|
||||||
if (is_inode_free(irec, ino_offset)) {
|
|
||||||
do_warn(
|
|
||||||
- _("entry \"%s\" in shortform directory inode %" PRIu64 " points to free inode %" PRIu64 "\n"),
|
|
||||||
+ _("entry \"%s\" in shortform directory inode %" PRIu64 " points to free inode %" PRIu64 ", "),
|
|
||||||
fname, ino, lino);
|
|
||||||
next_sfep = shortform_dir2_junk(mp, sfp, sfep, lino,
|
|
||||||
&max_size, &i, &bytes_deleted,
|
|
||||||
@@ -2625,7 +2622,7 @@ shortform_dir2_entry_check(
|
|
||||||
*/
|
|
||||||
if (!inode_isadir(irec, ino_offset)) {
|
|
||||||
do_warn(
|
|
||||||
- _("%s (ino %" PRIu64 ") in root (%" PRIu64 ") is not a directory"),
|
|
||||||
+ _("%s (ino %" PRIu64 ") in root (%" PRIu64 ") is not a directory, "),
|
|
||||||
ORPHANAGE, lino, ino);
|
|
||||||
next_sfep = shortform_dir2_junk(mp, sfp, sfep,
|
|
||||||
lino, &max_size, &i,
|
|
||||||
@@ -2647,7 +2644,7 @@ shortform_dir2_entry_check(
|
|
||||||
lino, sfep->namelen, sfep->name,
|
|
||||||
libxfs_dir2_sf_get_ftype(mp, sfep))) {
|
|
||||||
do_warn(
|
|
||||||
-_("entry \"%s\" (ino %" PRIu64 ") in dir %" PRIu64 " is a duplicate name"),
|
|
||||||
+_("entry \"%s\" (ino %" PRIu64 ") in dir %" PRIu64 " is a duplicate name, "),
|
|
||||||
fname, lino, ino);
|
|
||||||
next_sfep = shortform_dir2_junk(mp, sfp, sfep, lino,
|
|
||||||
&max_size, &i, &bytes_deleted,
|
|
||||||
@@ -2672,7 +2669,7 @@ _("entry \"%s\" (ino %" PRIu64 ") in dir %" PRIu64 " is a duplicate name"),
|
|
||||||
if (is_inode_reached(irec, ino_offset)) {
|
|
||||||
do_warn(
|
|
||||||
_("entry \"%s\" in directory inode %" PRIu64
|
|
||||||
- " references already connected inode %" PRIu64 ".\n"),
|
|
||||||
+ " references already connected inode %" PRIu64 ", "),
|
|
||||||
fname, ino, lino);
|
|
||||||
next_sfep = shortform_dir2_junk(mp, sfp, sfep,
|
|
||||||
lino, &max_size, &i,
|
|
||||||
@@ -2696,7 +2693,7 @@ _("entry \"%s\" (ino %" PRIu64 ") in dir %" PRIu64 " is a duplicate name"),
|
|
||||||
do_warn(
|
|
||||||
_("entry \"%s\" in directory inode %" PRIu64
|
|
||||||
" not consistent with .. value (%" PRIu64
|
|
||||||
- ") in inode %" PRIu64 ",\n"),
|
|
||||||
+ ") in inode %" PRIu64 ", "),
|
|
||||||
fname, ino, parent, lino);
|
|
||||||
next_sfep = shortform_dir2_junk(mp, sfp, sfep,
|
|
||||||
lino, &max_size, &i,
|
|
||||||
--
|
|
||||||
2.41.0
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
|||||||
Summary: Utilities for managing the XFS filesystem
|
Summary: Utilities for managing the XFS filesystem
|
||||||
Name: xfsprogs
|
Name: xfsprogs
|
||||||
Version: 6.3.0
|
Version: 6.4.0
|
||||||
Release: 1%{?dist}
|
Release: 1%{?dist}
|
||||||
License: GPL+ and LGPLv2+
|
License: GPL+ and LGPLv2+
|
||||||
URL: https://xfs.wiki.kernel.org
|
URL: https://xfs.wiki.kernel.org
|
||||||
@ -26,17 +26,8 @@ Suggests: xfsprogs-xfs_scrub
|
|||||||
Patch0: xfsprogs-rhelonly-disable-old-kernel-bigtime-inobtcnt-on.patch
|
Patch0: xfsprogs-rhelonly-disable-old-kernel-bigtime-inobtcnt-on.patch
|
||||||
Patch1: xfsprogs-rhelonly-example-conf.patch
|
Patch1: xfsprogs-rhelonly-example-conf.patch
|
||||||
Patch2: xfsprogs-rhelonly-mkfs-tolerate-tiny-filesystems.patch
|
Patch2: xfsprogs-rhelonly-mkfs-tolerate-tiny-filesystems.patch
|
||||||
Patch3: xfsprogs-rhelonly-xfs_quota-fix-missing-mount-point-warning.patch
|
Patch3: xfsprogs-rhelonly-upstream-v6.6.0-xfs_quota-fix-missing-mount-point-warning.patch
|
||||||
Patch4: xfsprogs-6.4.0-set-bnobt-cntbt-numrecs-correctly-when-formattin.patch
|
Patch4: xfsprogs-6.5.0-mkfs.xfs.8-correction-on-mkfs.xfs-manpage-since-refl.patch
|
||||||
Patch5: xfsprogs-6.4.0-mkfs-fix-man-s-default-value-for-sparse-option.patch
|
|
||||||
Patch6: xfsprogs-6.4.0-xfs_repair-don-t-add-junked-entries-to-the-rebuilt-d.patch
|
|
||||||
Patch7: xfsprogs-6.4.0-xfs_repair-fix-messaging-when-fixing-imap-due-to-spa.patch
|
|
||||||
Patch8: xfsprogs-6.4.0-xfs_repair-don-t-spray-correcting-imap-all-by-itself.patch
|
|
||||||
Patch9: xfsprogs-6.4.0-xfs_repair-fix-messaging-when-shortform_dir2_junk-is.patch
|
|
||||||
Patch10: xfsprogs-6.4.0-xfs_db-move-obfuscate_name-assertion-to-callers.patch
|
|
||||||
Patch11: xfsprogs-6.4.0-xfs_db-fix-metadump-name-obfuscation-for-ascii-ci-fi.patch
|
|
||||||
Patch12: xfsprogs-6.5.0-mkfs.xfs.8-correction-on-mkfs.xfs-manpage-since-refl.patch
|
|
||||||
Patch13: xfsprogs-6.4.0-xfs-stabilize-the-dirent-name-transformation-functio.patch
|
|
||||||
|
|
||||||
%description
|
%description
|
||||||
A set of commands to use the XFS filesystem, including mkfs.xfs.
|
A set of commands to use the XFS filesystem, including mkfs.xfs.
|
||||||
@ -148,6 +139,24 @@ install -m 0644 %{SOURCE3} %{buildroot}%{mkfsdir}
|
|||||||
%{_libdir}/*.so
|
%{_libdir}/*.so
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Mon May 20 2024 Pavel Reichl <preichl@redhat.com> - 6.4.0-1
|
||||||
|
- Rebase to a more recent upstream release
|
||||||
|
- Related: RHEL-28339
|
||||||
|
- Following is a list of dropped backported patches which
|
||||||
|
- are contained in the current rebase:
|
||||||
|
- xfsprogs-6.4.0-set-bnobt-cntbt-numrecs-correctly-when-formattin.patch
|
||||||
|
- xfsprogs-6.4.0-mkfs-fix-man-s-default-value-for-sparse-option.patch
|
||||||
|
- xfsprogs-6.4.0-xfs_repair-don-t-add-junked-entries-to-the-rebuilt-d.patch
|
||||||
|
- xfsprogs-6.4.0-xfs_repair-fix-messaging-when-fixing-imap-due-to-spa.patch
|
||||||
|
- xfsprogs-6.4.0-xfs_repair-don-t-spray-correcting-imap-all-by-itself.patch
|
||||||
|
- xfsprogs-6.4.0-xfs_repair-fix-messaging-when-shortform_dir2_junk-is.patch
|
||||||
|
- xfsprogs-6.4.0-xfs_db-move-obfuscate_name-assertion-to-callers.patch
|
||||||
|
- xfsprogs-6.4.0-xfs_db-fix-metadump-name-obfuscation-for-ascii-ci-fi.patch
|
||||||
|
- xfsprogs-6.4.0-xfs-stabilize-the-dirent-name-transformation-functio.patch
|
||||||
|
-
|
||||||
|
- Rename xfs_quota-fix-missing-mount-point-warning.patch to reflect upstream
|
||||||
|
- version it was merged in.
|
||||||
|
|
||||||
* Mon Nov 13 2023 Pavel Reichl <preichl@redhat.com> - 6.3.0-1
|
* Mon Nov 13 2023 Pavel Reichl <preichl@redhat.com> - 6.3.0-1
|
||||||
- Rebase to upstream version 6.3.0
|
- Rebase to upstream version 6.3.0
|
||||||
-
|
-
|
||||||
|
Loading…
Reference in New Issue
Block a user