diff --git a/1000-5.0.0-mkfs-validate-extent-size-hint-parameters.patch b/1000-5.0.0-mkfs-validate-extent-size-hint-parameters.patch new file mode 100644 index 0000000000000000000000000000000000000000..59f16710fad7d71faff7bb60f2a0c45afa3d0ff7 --- /dev/null +++ b/1000-5.0.0-mkfs-validate-extent-size-hint-parameters.patch @@ -0,0 +1,120 @@ +From 9cfe71bae43451bf5cc6b6688b94c88336e1ea00 Mon Sep 17 00:00:00 2001 +From: "Darrick J. Wong" +Date: Thu, 18 Apr 2019 13:19:39 -0500 +Subject: mkfs: validate extent size hint parameters + +Validate extent and cow extent size hints that are passed to mkfs so +that we avoid formatting a filesystem that will never mount. + +Signed-off-by: Darrick J. Wong +Reviewed-by: Eric Sandeen +[sandeen: use DIFLAG macros for now to be consistent, fixed later] +Signed-off-by: Eric Sandeen +--- + mkfs/xfs_mkfs.c | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 83 insertions(+) + +diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c +index d1387dd..3343aaf 100644 +--- a/mkfs/xfs_mkfs.c ++++ b/mkfs/xfs_mkfs.c +@@ -2202,6 +2202,85 @@ validate_rtextsize( + ASSERT(cfg->rtextblocks); + } + ++/* Validate the incoming extsize hint. */ ++static void ++validate_extsize_hint( ++ struct xfs_mount *mp, ++ struct cli_params *cli) ++{ ++ xfs_failaddr_t fa; ++ uint16_t flags = 0; ++ ++ /* ++ * First we validate the extent size inherit hint on a directory so ++ * that we know that we'll be propagating a correct hint and flag to ++ * new files on the data device. ++ */ ++ if (cli->fsx.fsx_xflags & XFS_DIFLAG_EXTSZINHERIT) ++ flags |= XFS_DIFLAG_EXTSZINHERIT; ++ ++ fa = libxfs_inode_validate_extsize(mp, cli->fsx.fsx_extsize, S_IFDIR, ++ flags); ++ if (fa) { ++ fprintf(stderr, ++_("illegal extent size hint %lld, must be less than %u.\n"), ++ (long long)cli->fsx.fsx_extsize, ++ min(MAXEXTLEN, mp->m_sb.sb_agblocks / 2)); ++ usage(); ++ } ++ ++ /* ++ * Now we do it again with a realtime file so that we know the hint and ++ * flag that get passed on to realtime files will be correct. ++ */ ++ if (mp->m_sb.sb_rextsize == 0) ++ return; ++ ++ flags = XFS_DIFLAG_REALTIME; ++ if (cli->fsx.fsx_xflags & XFS_DIFLAG_EXTSIZE) ++ flags |= XFS_DIFLAG_EXTSIZE; ++ ++ fa = libxfs_inode_validate_extsize(mp, cli->fsx.fsx_extsize, S_IFREG, ++ flags); ++ ++ if (fa) { ++ fprintf(stderr, ++_("illegal extent size hint %lld, must be less than %u and a multiple of %u.\n"), ++ (long long)cli->fsx.fsx_extsize, ++ min(MAXEXTLEN, mp->m_sb.sb_agblocks / 2), ++ mp->m_sb.sb_rextsize); ++ usage(); ++ } ++} ++ ++/* Validate the incoming CoW extsize hint. */ ++static void ++validate_cowextsize_hint( ++ struct xfs_mount *mp, ++ struct cli_params *cli) ++{ ++ xfs_failaddr_t fa; ++ uint64_t flags2 = 0; ++ ++ /* ++ * Validate the copy on write extent size inherit hint on a directory ++ * so that we know that we'll be propagating a correct hint and flag to ++ * new files on the data device. ++ */ ++ if (cli->fsx.fsx_xflags & FS_XFLAG_COWEXTSIZE) ++ flags2 |= XFS_DIFLAG2_COWEXTSIZE; ++ ++ fa = libxfs_inode_validate_cowextsize(mp, cli->fsx.fsx_cowextsize, ++ S_IFDIR, 0, flags2); ++ if (fa) { ++ fprintf(stderr, ++_("illegal CoW extent size hint %lld, must be less than %u.\n"), ++ (long long)cli->fsx.fsx_cowextsize, ++ min(MAXEXTLEN, mp->m_sb.sb_agblocks / 2)); ++ usage(); ++ } ++} ++ + /* + * Validate the configured stripe geometry, or is none is specified, pull + * the configuration from the underlying device. +@@ -3945,6 +4024,10 @@ main( + + finish_superblock_setup(&cfg, mp, sbp); + ++ /* Validate the extent size hints now that @mp is fully set up. */ ++ validate_extsize_hint(mp, &cli); ++ validate_cowextsize_hint(mp, &cli); ++ + /* Print the intended geometry of the fs. */ + if (!quiet || dry_run) { + struct xfs_fsop_geom geo; +-- +cgit v1.1 + diff --git a/1001-4.20.0-xfs_db-fix-finobt-record-decoding-when-sparse-inodes-enabled.patch b/1001-4.20.0-xfs_db-fix-finobt-record-decoding-when-sparse-inodes-enabled.patch new file mode 100644 index 0000000000000000000000000000000000000000..ff385d87e34ee65793a1a6e2642f455a9388b10a --- /dev/null +++ b/1001-4.20.0-xfs_db-fix-finobt-record-decoding-when-sparse-inodes-enabled.patch @@ -0,0 +1,41 @@ +From 38c599e7782ced7d2d1b41c3182daeaddad2cee4 Mon Sep 17 00:00:00 2001 +From: "Darrick J. Wong" +Date: Mon, 28 Jan 2019 13:03:15 -0600 +Subject: xfs_db: fix finobt record decoding when sparse inodes enabled + +Use the sparse inobt record field decoder (inobt_spcrc_hfld) to decode +finobt records when sparse inodes are enabled. Otherwise, xfs_db +prints out bogus things like: + +recs[1] = [startino,freecount,free] +1:[214720,16429,0xfffffffffff80000] + +There can never be 16429 records in an inode btree record; instead it +should print: + +recs[1] = [startino,holemask,count,freecount,free] +1:[214720,0,64,45,0xfffffffffff80000] + +Signed-off-by: Darrick J. Wong +Reviewed-by: Dave Chinner +Signed-off-by: Eric Sandeen +--- + db/type.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/db/type.c b/db/type.c +index d0234c5..f5f6504 100644 +--- a/db/type.c ++++ b/db/type.c +@@ -151,7 +151,7 @@ static const typ_t __typtab_spcrc[] = { + { TYP_SYMLINK, "symlink", handle_struct, symlink_crc_hfld, + &xfs_symlink_buf_ops, XFS_SYMLINK_CRC_OFF }, + { TYP_TEXT, "text", handle_text, NULL, NULL, TYP_F_NO_CRC_OFF }, +- { TYP_FINOBT, "finobt", handle_struct, inobt_crc_hfld, ++ { TYP_FINOBT, "finobt", handle_struct, inobt_spcrc_hfld, + &xfs_inobt_buf_ops, XFS_BTREE_SBLOCK_CRC_OFF }, + { TYP_NONE, NULL } + }; +-- +cgit v1.1 + diff --git a/1002-4.20.0-xfs_repair-allow-in-attribute-names.patch b/1002-4.20.0-xfs_repair-allow-in-attribute-names.patch new file mode 100644 index 0000000000000000000000000000000000000000..1c1792665dbda227a07f90ec7a00cf53b6dff7db --- /dev/null +++ b/1002-4.20.0-xfs_repair-allow-in-attribute-names.patch @@ -0,0 +1,173 @@ +From 45571fd5885d00520a5c1d3bb743634267920c19 Mon Sep 17 00:00:00 2001 +From: Eric Sandeen +Date: Mon, 28 Jan 2019 13:03:03 -0600 +Subject: [PATCH] xfs_repair: allow '/' in attribute names + +For some reason, since the earliest days of XFS, a '/' character +in an extended attribute name has been treated as corruption by +xfs_repair. This despite nothing in other userspace tools or the +kernel having this restriction. + +My best guess is that this was an unintentional leftover from +common code between dirs & attrs in the "da" code, and there has +never been a good reason for it. + +Since userspace and kernelspace allow such a name to be set, +listed, and read, it seems wrong to flag it as corruption. +So, make this test conditional on whether we're validating a name +in a dir, as opposed to the name of an attr. + +Signed-off-by: Eric Sandeen +Reviewed-by: Darrick J. Wong +Signed-off-by: Eric Sandeen +--- + repair/attr_repair.c | 20 +++++++++++++------- + repair/da_util.c | 20 +++++++++++++------- + repair/da_util.h | 3 ++- + repair/dir2.c | 12 ++++++++++-- + 4 files changed, 38 insertions(+), 17 deletions(-) + +diff --git a/repair/attr_repair.c b/repair/attr_repair.c +index 1d04500..5ad81c0 100644 +--- a/repair/attr_repair.c ++++ b/repair/attr_repair.c +@@ -122,6 +122,14 @@ set_da_freemap(xfs_mount_t *mp, da_freemap_t *map, int start, int stop) + * fork being emptied and put in shortform format. + */ + ++static int ++attr_namecheck( ++ uint8_t *name, ++ int length) ++{ ++ return namecheck((char *)name, length, false); ++} ++ + /* + * This routine just checks what security needs are for attribute values + * only called when root flag is set, otherwise these names could exist in +@@ -292,11 +300,9 @@ process_shortform_attr( + } + } + +- /* namecheck checks for / and null terminated for file names. +- * attributes names currently follow the same rules. +- */ +- if (namecheck((char *)¤tentry->nameval[0], +- currententry->namelen)) { ++ /* namecheck checks for null chars in attr names. */ ++ if (attr_namecheck(currententry->nameval, ++ currententry->namelen)) { + do_warn( + _("entry contains illegal character in shortform attribute name\n")); + junkit = 1; +@@ -458,7 +464,7 @@ process_leaf_attr_local( + xfs_attr_leaf_name_local_t *local; + + local = xfs_attr3_leaf_name_local(leaf, i); +- if (local->namelen == 0 || namecheck((char *)&local->nameval[0], ++ if (local->namelen == 0 || attr_namecheck(local->nameval, + local->namelen)) { + do_warn( + _("attribute entry %d in attr block %u, inode %" PRIu64 " has bad name (namelen = %d)\n"), +@@ -513,7 +519,7 @@ process_leaf_attr_remote( + + remotep = xfs_attr3_leaf_name_remote(leaf, i); + +- if (remotep->namelen == 0 || namecheck((char *)&remotep->name[0], ++ if (remotep->namelen == 0 || attr_namecheck(remotep->name, + remotep->namelen) || + be32_to_cpu(entry->hashval) != + libxfs_da_hashname((unsigned char *)&remotep->name[0], +diff --git a/repair/da_util.c b/repair/da_util.c +index 1450767..c5e690c 100644 +--- a/repair/da_util.c ++++ b/repair/da_util.c +@@ -13,20 +13,26 @@ + #include "da_util.h" + + /* +- * takes a name and length (name need not be null-terminated) +- * and returns 1 if the name contains a '/' or a \0, returns 0 +- * otherwise ++ * Takes a name and length (name need not be null-terminated) and whether ++ * we are checking a dir (as opposed to an attr). ++ * Returns 1 if the name contains a NUL or if a directory entry contains a '/'. ++ * Returns 0 if the name checks out. + */ + int +-namecheck(char *name, int length) ++namecheck( ++ char *name, ++ int length, ++ bool isadir) + { +- char *c; +- int i; ++ char *c; ++ int i; + + ASSERT(length < MAXNAMELEN); + + for (c = name, i = 0; i < length; i++, c++) { +- if (*c == '/' || *c == '\0') ++ if (isadir && *c == '/') ++ return 0; ++ if (*c == '\0') + return 1; + } + +diff --git a/repair/da_util.h b/repair/da_util.h +index d36dfd0..041dff7 100644 +--- a/repair/da_util.h ++++ b/repair/da_util.h +@@ -27,7 +27,8 @@ typedef struct da_bt_cursor { + int + namecheck( + char *name, +- int length); ++ int length, ++ bool isadir); + + struct xfs_buf * + da_read_buf( +diff --git a/repair/dir2.c b/repair/dir2.c +index e67ec59..094ecb3 100644 +--- a/repair/dir2.c ++++ b/repair/dir2.c +@@ -44,6 +44,14 @@ _("malloc failed (%zu bytes) dir2_add_badlist:ino %" PRIu64 "\n"), + l->ino = ino; + } + ++static int ++dir_namecheck( ++ uint8_t *name, ++ int length) ++{ ++ return namecheck((char *)name, length, true); ++} ++ + int + dir2_is_badino( + xfs_ino_t ino) +@@ -310,7 +318,7 @@ _("entry #%d %s in shortform dir %" PRIu64), + * the length value is stored in a byte + * so it can't be too big, it can only wrap + */ +- if (namecheck((char *)&sfep->name[0], namelen)) { ++ if (dir_namecheck(sfep->name, namelen)) { + /* + * junk entry + */ +@@ -781,7 +789,7 @@ _("\twould clear inode number in entry at offset %" PRIdPTR "...\n"), + * during phase 4. + */ + junkit = dep->name[0] == '/'; +- nm_illegal = namecheck((char *)dep->name, dep->namelen); ++ nm_illegal = dir_namecheck(dep->name, dep->namelen); + if (ino_discovery && nm_illegal) { + do_warn( + _("entry at block %u offset %" PRIdPTR " in directory inode %" PRIu64 " has illegal name \"%*.*s\": "), +-- +1.8.3.1 + diff --git a/1003-4.20.0-xfs_repair-fix-incorrect-return-value-in-namecheck.patch b/1003-4.20.0-xfs_repair-fix-incorrect-return-value-in-namecheck.patch new file mode 100644 index 0000000000000000000000000000000000000000..17ec367f5ebfc29b8e015841b071e743de0b06ba --- /dev/null +++ b/1003-4.20.0-xfs_repair-fix-incorrect-return-value-in-namecheck.patch @@ -0,0 +1,35 @@ +From 2cd8d66522b1ba9dc21f47e3588d4ab037be37c7 Mon Sep 17 00:00:00 2001 +From: Eric Sandeen +Date: Fri, 1 Feb 2019 11:54:15 -0600 +Subject: [PATCH] xfs_repair: fix incorrect return value in namecheck() + +Obviously a directory entry with a '/' in the name should return +1, i.e. failure. This was just a dumb thinko. + +Fixes: 45571fd5885d ("xfs_repair: allow '/' in attribute names") + +Reported-by: Darrick J. Wong +Signed-off-by: Eric Sandeen +Reviewed-by: Darrick J. Wong +Reviewed-by: Bill O'Donnell +Signed-off-by: Eric Sandeen +--- + repair/da_util.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/repair/da_util.c b/repair/da_util.c +index c5e690c..4a258e5 100644 +--- a/repair/da_util.c ++++ b/repair/da_util.c +@@ -31,7 +31,7 @@ namecheck( + + for (c = name, i = 0; i < length; i++, c++) { + if (isadir && *c == '/') +- return 0; ++ return 1; + if (*c == '\0') + return 1; + } +-- +1.8.3.1 + diff --git a/xfsprogs-4.10.0-xfs_db-fix-the-source-command-when-passed-as-a-c-opt.patch b/xfsprogs-4.10.0-xfs_db-fix-the-source-command-when-passed-as-a-c-opt.patch deleted file mode 100644 index e57a8b26a317cbad5d4b36e85ff68e58f4368bd2..0000000000000000000000000000000000000000 --- a/xfsprogs-4.10.0-xfs_db-fix-the-source-command-when-passed-as-a-c-opt.patch +++ /dev/null @@ -1,128 +0,0 @@ -From c8dc4235614292020f82a031545d66c000b455f9 Mon Sep 17 00:00:00 2001 -From: "Darrick J. Wong" -Date: Wed, 25 Jan 2017 20:02:43 -0600 -Subject: [PATCH] xfs_db: fix the 'source' command when passed as a -c option - -The 'source' command is supposed to read commands out of a file and -execute them. This works great when done from an interactive command -line, but it doesn't work at all when invoked from the command line -because we never actually do anything with the opened file. - -So don't load stdin into the input stack when we're only executing -command line options, and use that to decide if source_f is executing -from the command line so that we can actually run the input loop. We'll -use this for the per-field fuzzing xfstests. - -Signed-off-by: Darrick J. Wong -Reviewed-by: Eric Sandeen -Signed-off-by: Eric Sandeen ---- - db/init.c | 2 +- - db/input.c | 43 +++++++++++++++++++++++++++++++++---------- - 2 files changed, 34 insertions(+), 11 deletions(-) - -Index: xfsprogs-4.5.0/db/init.c -=================================================================== ---- xfsprogs-4.5.0.orig/db/init.c -+++ xfsprogs-4.5.0/db/init.c -@@ -192,7 +192,6 @@ main( - char **v; - int start_iocur_sp; - -- pushfile(stdin); - init(argc, argv); - start_iocur_sp = iocur_sp; - -@@ -207,6 +206,7 @@ main( - goto close_devices; - } - -+ pushfile(stdin); - while (!done) { - if ((input = fetchline()) == NULL) - break; -Index: xfsprogs-4.5.0/db/input.c -=================================================================== ---- xfsprogs-4.5.0.orig/db/input.c -+++ xfsprogs-4.5.0/db/input.c -@@ -156,7 +156,7 @@ fetchline_internal(void) - - rval = NULL; - for (rlen = iscont = 0; ; ) { -- if (inputstacksize == 1) { -+ if (curinput == stdin) { - if (iscont) - dbprintf("... "); - else -@@ -181,18 +181,24 @@ fetchline_internal(void) - } - if (ferror(curinput) || feof(curinput) || - (len = strlen(buf)) == 0) { -- popfile(); -- if (curinput == NULL) { -+ /* -+ * No more input at this inputstack level; pop -+ * our fd off and return so that a lower -+ * level fetchline can handle us. If this was -+ * an interactive session, print a newline -+ * because ^D doesn't emit one. -+ */ -+ if (curinput == stdin) - dbprintf("\n"); -- return NULL; -- } -+ -+ popfile(); - iscont = 0; - rlen = 0; - if (rval) { - xfree(rval); - rval = NULL; - } -- continue; -+ return NULL; - } - if (inputstacksize == 1) - logprintf("%s", buf); -@@ -225,7 +231,9 @@ fetchline(void) - - if (inputstacksize == 1) { - line = readline(get_prompt()); -- if (line && *line) { -+ if (!line) -+ dbprintf("\n"); -+ else if (line && *line) { - add_history(line); - logprintf("%s", line); - } -@@ -314,12 +322,27 @@ source_f( - char **argv) - { - FILE *f; -+ int c, done = 0; -+ char *input; -+ char **v; - - f = fopen(argv[1], "r"); -- if (f == NULL) -+ if (f == NULL) { - dbprintf(_("can't open %s\n"), argv[0]); -- else -- pushfile(f); -+ return 0; -+ } -+ -+ /* Run the sourced commands now. */ -+ pushfile(f); -+ while (!done) { -+ if ((input = fetchline_internal()) == NULL) -+ break; -+ v = breakline(input, &c); -+ if (c) -+ done = command(c, v); -+ doneline(input, v); -+ } -+ - return 0; - } - diff --git a/xfsprogs-4.10.0-xfs_metadump-ignore-0-entries.patch b/xfsprogs-4.10.0-xfs_metadump-ignore-0-entries.patch deleted file mode 100644 index 73879426d297baf8fec92b4fffcdb74cd5fed025..0000000000000000000000000000000000000000 --- a/xfsprogs-4.10.0-xfs_metadump-ignore-0-entries.patch +++ /dev/null @@ -1,35 +0,0 @@ -commit 595629131dbe6c5fb16d03e87bc2cb71ad3dcc4b -Author: Eric Sandeen -Date: Wed Feb 15 21:48:31 2017 -0600 - - xfs_metadump: ignore attr leaf with 0 entries - - Another in the ongoing saga of attribute leaves with zero - entries; in this case, if we try to metadump an inode with - a zero-entries attribute leaf, the zeroing code will go off - the rails and segfault at: - - memset(&entries[nentries], 0, - first_name - (char *)&entries[nentries]); - - because first_name is null, and we try to memset a large - (negative) number. - - Signed-off-by: Eric Sandeen - Reviewed-by: Darrick J. Wong - Signed-off-by: Eric Sandeen - -diff --git a/db/metadump.c b/db/metadump.c -index 38519f1..66952f6 100644 ---- a/db/metadump.c -+++ b/db/metadump.c -@@ -1654,7 +1654,8 @@ process_attr_block( - xfs_attr3_leaf_hdr_from_disk(mp->m_attr_geo, &hdr, leaf); - - nentries = hdr.count; -- if (nentries * sizeof(xfs_attr_leaf_entry_t) + -+ if (nentries == 0 || -+ nentries * sizeof(xfs_attr_leaf_entry_t) + - xfs_attr3_leaf_hdr_size(leaf) > - XFS_ATTR3_RMT_BUF_SPACE(mp, bs)) { - if (show_warnings) diff --git a/xfsprogs-4.11.0-xfs_repair-warn-about-dirty-log-with-n-option.patch b/xfsprogs-4.11.0-xfs_repair-warn-about-dirty-log-with-n-option.patch deleted file mode 100644 index 2f659b86882e58feb538cea0b524bc15ca03869f..0000000000000000000000000000000000000000 --- a/xfsprogs-4.11.0-xfs_repair-warn-about-dirty-log-with-n-option.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 47e48705ed893ca9f46adb02ad15e5acddbe060a Mon Sep 17 00:00:00 2001 -From: Eric Sandeen -Date: Mon, 10 Apr 2017 17:32:04 -0500 -Subject: [PATCH] xfs_repair: warn about dirty log with -n option - -When looking at xfs_repair -n output today, we have no idea if -reported errors may be due to an un-replayed dirty log. If this -is the case, mention it in the output. - -Signed-off-by: Eric Sandeen -Reviewed-by: Darrick J. Wong -Signed-off-by: Eric Sandeen ---- - repair/phase2.c | 9 +++++++-- - 1 file changed, 7 insertions(+), 2 deletions(-) - -Index: xfsprogs-4.5.0/repair/phase2.c -=================================================================== ---- xfsprogs-4.5.0.orig/repair/phase2.c -+++ xfsprogs-4.5.0/repair/phase2.c -@@ -89,11 +89,16 @@ zero_log( - _("zero_log: head block %" PRId64 " tail block %" PRId64 "\n"), - head_blk, tail_blk); - } -- if (!no_modify && head_blk != tail_blk) { -- if (zap_log) { -+ if (head_blk != tail_blk) { -+ if (!no_modify && zap_log) { - do_warn(_( - "ALERT: The filesystem has valuable metadata changes in a log which is being\n" - "destroyed because the -L option was used.\n")); -+ } else if (no_modify) { -+ do_warn(_( -+"ALERT: The filesystem has valuable metadata changes in a log which is being\n" -+"ignored because the -n option was used. Expect spurious inconsistencies\n" -+"which may be resolved by first mounting the filesystem to replay the log.\n")); - } else { - do_warn(_( - "ERROR: The filesystem has valuable metadata changes in a log which needs to\n" diff --git a/xfsprogs-4.12.0-mkfs.xfs-allow-specification-of-0-data-stripe-width-.patch b/xfsprogs-4.12.0-mkfs.xfs-allow-specification-of-0-data-stripe-width-.patch deleted file mode 100644 index d388d3942669af3786ef3ad4fef6c9a8c5e61d0f..0000000000000000000000000000000000000000 --- a/xfsprogs-4.12.0-mkfs.xfs-allow-specification-of-0-data-stripe-width-.patch +++ /dev/null @@ -1,86 +0,0 @@ -From 746d40a73162f942f63f6a2f612f491d107b9824 Mon Sep 17 00:00:00 2001 -From: Eric Sandeen -Date: Thu, 20 Jul 2017 10:51:34 -0500 -Subject: [PATCH] mkfs.xfs: allow specification of 0 data stripe width & unit - -The "noalign" option works for this too, but it seems reasonable -to allow explicit specification of stripe unit and stripe width -to 0; today, doing so today makes the code think it's unspecified, -and so it goes ahead and detects stripe geometry and sets it in the -superblock. That's unexpected and surprising. - -Create a new flag that tracks whtether a geometry option has been -specified, and if it's set along with 0 values, treat it the -same as if "noalign" had been specified. - -Signed-off-by: Eric Sandeen -Reviewed-by: Christoph Hellwig -Signed-off-by: Eric Sandeen ---- - mkfs/xfs_mkfs.c | 11 ++++++++++- - 1 file changed, 10 insertions(+), 1 deletion(-) - -Index: xfsprogs-rhel7.5/mkfs/xfs_mkfs.c -=================================================================== ---- xfsprogs-rhel7.5.orig/mkfs/xfs_mkfs.c -+++ xfsprogs-rhel7.5/mkfs/xfs_mkfs.c -@@ -909,6 +909,7 @@ main( - int dsw; - int dsunit; - int dswidth; -+ int dsflag; - int force_overwrite; - struct fsxattr fsx; - int iaflag; -@@ -1012,7 +1013,7 @@ main( - dfile = logfile = rtfile = NULL; - dsize = logsize = rtsize = rtextsize = protofile = NULL; - dsu = dsw = dsunit = dswidth = lalign = lsu = lsunit = 0; -- nodsflag = norsflag = 0; -+ dsflag = nodsflag = norsflag = 0; - force_overwrite = 0; - worst_freelist = 0; - lazy_sb_counters = 1; -@@ -1137,6 +1138,7 @@ main( - exit(1); - } - dsunit = cvtnum(0, 0, value); -+ dsflag = 1; - break; - case D_SWIDTH: - if (!value || *value == '\0') -@@ -1153,6 +1155,7 @@ main( - exit(1); - } - dswidth = cvtnum(0, 0, value); -+ dsflag = 1; - break; - case D_SU: - if (!value || *value == '\0') -@@ -1164,6 +1167,7 @@ main( - D_SU); - dsu = cvtnum( - blocksize, sectorsize, value); -+ dsflag = 1; - break; - case D_SW: - if (!value || *value == '\0') -@@ -1180,6 +1184,7 @@ main( - exit(1); - } - dsw = cvtnum(0, 0, value); -+ dsflag = 1; - break; - case D_NOALIGN: - if (dsu) -@@ -2078,6 +2083,10 @@ _("warning: sparse inodes not supported - calc_stripe_factors(dsu, dsw, sectorsize, lsu, lsectorsize, - &dsunit, &dswidth, &lsunit); - -+ /* If sunit & swidth were manually specified as 0, same as noalign */ -+ if (dsflag && !dsunit && !dswidth) -+ nodsflag = 1; -+ - xi.setblksize = sectorsize; - - /* diff --git a/xfsprogs-4.12.0-xfs_db-improve-argument-naming-in-set_cur-and-set_io.patch b/xfsprogs-4.12.0-xfs_db-improve-argument-naming-in-set_cur-and-set_io.patch deleted file mode 100644 index 0781351b1e99968f6b3d58e3535fcc833ec04b7a..0000000000000000000000000000000000000000 --- a/xfsprogs-4.12.0-xfs_db-improve-argument-naming-in-set_cur-and-set_io.patch +++ /dev/null @@ -1,148 +0,0 @@ -From db23e0f431a77d228b5f68ef0a8587c25c689133 Mon Sep 17 00:00:00 2001 -From: Bill O'Donnell -Date: Thu, 29 Jun 2017 13:05:00 -0500 -Subject: [PATCH] xfs_db: improve argument naming in set_cur and set_iocur_type - -In set_cur and set_iocur_type, the current naming for arguments -type, block number, and length are t, d, and c, respectively. -Replace these with more intuitive and descriptive names: -type, blknum, and len. Fix type of blknum (xfs_daddr_t) to be -consistent with that of libxfs_readbuf where it's used. -Additionally remove extra blank line in io.c. - -Signed-off-by: Bill O'Donnell -Reviewed-by: Eric Sandeen -Signed-off-by: Eric Sandeen ---- - db/io.c | 38 +++++++++++++++++++------------------- - db/io.h | 6 +++--- - 2 files changed, 22 insertions(+), 22 deletions(-) - -Index: xfsprogs-rhel7.5/db/io.c -=================================================================== ---- xfsprogs-rhel7.5.orig/db/io.c -+++ xfsprogs-rhel7.5/db/io.c -@@ -487,9 +487,9 @@ write_cur(void) - - void - set_cur( -- const typ_t *t, -- __int64_t d, -- int c, -+ const typ_t *type, -+ xfs_daddr_t blknum, -+ int len, - int ring_flag, - bbmap_t *bbmap) - { -@@ -497,14 +497,13 @@ set_cur( - xfs_ino_t dirino; - xfs_ino_t ino; - __uint16_t mode; -- const struct xfs_buf_ops *ops = t ? t->bops : NULL; -+ const struct xfs_buf_ops *ops = type ? type->bops : NULL; - - if (iocur_sp < 0) { - dbprintf(_("set_cur no stack element to set\n")); - return; - } - -- - ino = iocur_top->ino; - dirino = iocur_top->dirino; - mode = iocur_top->mode; -@@ -514,7 +513,7 @@ set_cur( - if (bbmap) { - #ifdef DEBUG_BBMAP - int i; -- printf(_("xfs_db got a bbmap for %lld\n"), (long long)d); -+ printf(_("xfs_db got a bbmap for %lld\n"), (long long)blknum); - printf(_("\tblock map")); - for (i = 0; i < bbmap->nmaps; i++) - printf(" %lld:%d", (long long)bbmap->b[i].bm_bn, -@@ -528,7 +527,7 @@ set_cur( - bp = libxfs_readbuf_map(mp->m_ddev_targp, bbmap->b, - bbmap->nmaps, 0, ops); - } else { -- bp = libxfs_readbuf(mp->m_ddev_targp, d, c, 0, ops); -+ bp = libxfs_readbuf(mp->m_ddev_targp, blknum, len, 0, ops); - iocur_top->bbmap = NULL; - } - -@@ -544,13 +543,13 @@ set_cur( - if (!ops) - bp->b_flags |= LIBXFS_B_UNCHECKED; - -- iocur_top->bb = d; -- iocur_top->blen = c; -+ iocur_top->bb = blknum; -+ iocur_top->blen = len; - iocur_top->boff = 0; - iocur_top->data = iocur_top->buf; -- iocur_top->len = BBTOB(c); -- iocur_top->off = d << BBSHIFT; -- iocur_top->typ = cur_typ = t; -+ iocur_top->len = BBTOB(len); -+ iocur_top->off = blknum << BBSHIFT; -+ iocur_top->typ = cur_typ = type; - iocur_top->ino = ino; - iocur_top->dirino = dirino; - iocur_top->mode = mode; -@@ -564,23 +563,24 @@ set_cur( - - void - set_iocur_type( -- const typ_t *t) -+ const typ_t *type) - { - struct xfs_buf *bp = iocur_top->bp; - - /* adjust buffer size for types with fields & hence fsize() */ -- if (t->fields) { -+ if (type->fields) { - int bb_count; /* type's size in basic blocks */ - -- bb_count = BTOBB(byteize(fsize(t->fields, iocur_top->data, 0, 0))); -- set_cur(t, iocur_top->bb, bb_count, DB_RING_IGN, NULL); -+ bb_count = BTOBB(byteize(fsize(type->fields, -+ iocur_top->data, 0, 0))); -+ set_cur(type, iocur_top->bb, bb_count, DB_RING_IGN, NULL); - } -- iocur_top->typ = t; -+ iocur_top->typ = type; - - /* verify the buffer if the type has one. */ - if (!bp) - return; -- if (!t->bops) { -+ if (!type->bops) { - bp->b_ops = NULL; - bp->b_flags |= LIBXFS_B_UNCHECKED; - return; -@@ -588,7 +588,7 @@ set_iocur_type( - if (!(bp->b_flags & LIBXFS_B_UPTODATE)) - return; - bp->b_error = 0; -- bp->b_ops = t->bops; -+ bp->b_ops = type->bops; - bp->b_ops->verify_read(bp); - bp->b_flags &= ~LIBXFS_B_UNCHECKED; - } -Index: xfsprogs-rhel7.5/db/io.h -=================================================================== ---- xfsprogs-rhel7.5.orig/db/io.h -+++ xfsprogs-rhel7.5/db/io.h -@@ -59,10 +59,10 @@ extern void print_iocur(char *tag, iocur - extern void push_cur(void); - extern int read_buf(__int64_t daddr, int count, void *bufp); - extern void write_cur(void); --extern void set_cur(const struct typ *t, __int64_t d, int c, int ring_add, -- bbmap_t *bbmap); -+extern void set_cur(const struct typ *type, xfs_daddr_t blknum, -+ int len, int ring_add, bbmap_t *bbmap); - extern void ring_add(void); --extern void set_iocur_type(const struct typ *t); -+extern void set_iocur_type(const struct typ *type); - extern void xfs_dummy_verify(struct xfs_buf *bp); - - /* diff --git a/xfsprogs-4.12.0-xfs_db-properly-set-inode-type.patch b/xfsprogs-4.12.0-xfs_db-properly-set-inode-type.patch deleted file mode 100644 index 5e66b3488083fdcfa781807d03d5e2125043a412..0000000000000000000000000000000000000000 --- a/xfsprogs-4.12.0-xfs_db-properly-set-inode-type.patch +++ /dev/null @@ -1,58 +0,0 @@ -From 533d1d229a881d5a58a232377c409a3dd7a5cd6f Mon Sep 17 00:00:00 2001 -From: Eric Sandeen -Date: Thu, 20 Jul 2017 10:51:46 -0500 -Subject: [PATCH] xfs_db: properly set inode type - -When we set the type to "inode" the verifier validates multiple -inodes in the current fs block, so setting the buffer size to -that of just one inode is not sufficient and it'll emit spurious -verifier errors for all but the first, as we read off the end: - -xfs_db> daddr 99 -xfs_db> type inode -Metadata corruption detected at xfs_inode block 0x63/0x200 -Metadata corruption detected at xfs_inode block 0x63/0x200 -Metadata corruption detected at xfs_inode block 0x63/0x200 -Metadata corruption detected at xfs_inode block 0x63/0x200 -Metadata corruption detected at xfs_inode block 0x63/0x200 -Metadata corruption detected at xfs_inode block 0x63/0x200 -Metadata corruption detected at xfs_inode block 0x63/0x200 - -Use the special set_cur_inode() function for this purpose -as is done in inode_f(). - -Signed-off-by: Eric Sandeen -Reviewed-by: Bill O'Donnell -[sandeen: remove nag/warning printf for now] -Signed-off-by: Eric Sandeen ---- - db/io.c | 16 ++++++++++++++++ - 1 file changed, 16 insertions(+) - -Index: xfsprogs-rhel7.5/db/io.c -=================================================================== ---- xfsprogs-rhel7.5.orig/db/io.c -+++ xfsprogs-rhel7.5/db/io.c -@@ -567,6 +567,22 @@ set_iocur_type( - { - struct xfs_buf *bp = iocur_top->bp; - -+ /* Inodes are special; verifier checks all inodes in the chunk */ -+ if (type->typnm == TYP_INODE) { -+ xfs_daddr_t b = iocur_top->bb; -+ xfs_ino_t ino; -+ -+ /* -+ * Note that this will back up to the beginning of the inode -+ * which contains the current disk location; daddr may change. -+ */ -+ ino = XFS_AGINO_TO_INO(mp, xfs_daddr_to_agno(mp, b), -+ ((b << BBSHIFT) >> mp->m_sb.sb_inodelog) % -+ (mp->m_sb.sb_agblocks << mp->m_sb.sb_inopblog)); -+ set_cur_inode(ino); -+ return; -+ } -+ - /* adjust buffer size for types with fields & hence fsize() */ - if (type->fields) { - int bb_count; /* type's size in basic blocks */ diff --git a/xfsprogs-4.12.0-xfs_db-update-buffer-size-when-new-type-is-set.patch b/xfsprogs-4.12.0-xfs_db-update-buffer-size-when-new-type-is-set.patch deleted file mode 100644 index 42ed95681e9286999f7e3b89f38fd25a6eb2d641..0000000000000000000000000000000000000000 --- a/xfsprogs-4.12.0-xfs_db-update-buffer-size-when-new-type-is-set.patch +++ /dev/null @@ -1,65 +0,0 @@ -From 55f224baf83d71b3d2cc24e6387d9f1f6a5a1eda Mon Sep 17 00:00:00 2001 -From: Bill O'Donnell -Date: Thu, 29 Jun 2017 13:05:00 -0500 -Subject: [PATCH] xfs_db: update buffer size when new type is set - -xfs_db doesn't take sector size into account when setting type. -This can result in an errant crc. For example, with a sector size -of 4096: - -xfs_db> agi 0 -xfs_db> p crc -crc = 0xab85043e (correct) -xfs_db> daddr -current daddr is 16 -xfs_db> daddr 42 -xfs_db> daddr 16 -xfs_db> type agi -Metadata CRC error detected at xfs_agi block 0x10/0x200 -xfs_db> p crc -crc = 0xab85043e (bad) - -When xfs_db sets the new daddr in daddr_f, it does so with one -BBSIZE sector (512). Changing the type doesn't change the size -of the current buffer in iocur_top, so the checksum is calculated -on the wrong length for the type (when the actual sector size > BBSIZE (512). - -For types with fields, reread the buffer to pick up the correct size for -the new type when it gets set. Facilitate the reread by setting the cursor -with set_cur(). - -Signed-off-by: Bill O'Donnell -Reviewed-by: Carlos Maiolino -Reviewed-by: Darrick J. Wong -[sandeen: fix up long line, clarify subject & comments] -Signed-off-by: Eric Sandeen ---- - db/io.c | 8 ++++++++ - 1 file changed, 8 insertions(+) - -Index: xfsprogs-rhel7.5/db/io.c -=================================================================== ---- xfsprogs-rhel7.5.orig/db/io.c -+++ xfsprogs-rhel7.5/db/io.c -@@ -27,6 +27,7 @@ - #include "output.h" - #include "init.h" - #include "malloc.h" -+#include "bit.h" - - static int pop_f(int argc, char **argv); - static void pop_help(void); -@@ -567,6 +568,13 @@ set_iocur_type( - { - struct xfs_buf *bp = iocur_top->bp; - -+ /* adjust buffer size for types with fields & hence fsize() */ -+ if (t->fields) { -+ int bb_count; /* type's size in basic blocks */ -+ -+ bb_count = BTOBB(byteize(fsize(t->fields, iocur_top->data, 0, 0))); -+ set_cur(t, iocur_top->bb, bb_count, DB_RING_IGN, NULL); -+ } - iocur_top->typ = t; - - /* verify the buffer if the type has one. */ diff --git a/xfsprogs-4.13.0-mkfs.xfs-Don-t-stagger-AG-for-a-single-disk.patch b/xfsprogs-4.13.0-mkfs.xfs-Don-t-stagger-AG-for-a-single-disk.patch deleted file mode 100644 index 5fb2d7e484170d71c2e233123b1bd6bd0624ae16..0000000000000000000000000000000000000000 --- a/xfsprogs-4.13.0-mkfs.xfs-Don-t-stagger-AG-for-a-single-disk.patch +++ /dev/null @@ -1,54 +0,0 @@ -From 9a106b5fbb88342f0ee02891d1bbb0e3c5a93d03 Mon Sep 17 00:00:00 2001 -From: Donald Douwsma -Date: Fri, 15 Sep 2017 08:33:42 -0500 -Subject: [PATCH] mkfs.xfs: Don't stagger AG for a single disk - -When sunit and swidth are used mkfs.xfs tries to avoid all allocation -groups aligning on the same stripe and will attempt to stagger them -across the stripes that make up swidth. If there is only one stripe -then there is no benefit in this optimisation. - -$ truncate -s10G xfs_10G_su256k_sw1.image -$ mkfs.xfs -d su=256k,sw=1 xfs_10G_su256k_sw1.image -meta-data=xfs_10G_su256k_sw1.image isize=512 agcount=16, agsize=163776 blks - = sectsz=512 attr=2, projid32bit=1 - = crc=1 finobt=0, sparse=0 -data = bsize=4096 blocks=2620416, imaxpct=25 - = sunit=64 swidth=64 blks -naming =version 2 bsize=4096 ascii-ci=0 ftype=1 -log =internal log bsize=4096 blocks=2560, version=2 - = sectsz=512 sunit=64 blks, lazy-count=1 -realtime =none extsz=4096 blocks=0, rtextents=0 - -A side effect of the optimisation is that the size adjustment used to stager -the allocation groups causes the last sunit of storage to be unused. - -$ echo $((2620416*4096)) -10733223936 -$ ls -l xfs_10G_su256k_sw1.image --rw-rw-r--. 1 test test 10737418240 Aug 30 10:54 xfs_10G_su256k_sw1.image - -Skip this optimisation when sunit == swidth. - -Signed-off-by: Donald Douwsma -Reviewed-by: Eric Sandeen -Signed-off-by: Eric Sandeen ---- - mkfs/xfs_mkfs.c | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -Index: xfsprogs-rhel7.5/mkfs/xfs_mkfs.c -=================================================================== ---- xfsprogs-rhel7.5.orig/mkfs/xfs_mkfs.c -+++ xfsprogs-rhel7.5/mkfs/xfs_mkfs.c -@@ -2308,7 +2308,9 @@ reported by the device (%u).\n"), - } - } - } -- if (dswidth && ((agsize % dswidth) == 0) && (agcount > 1)) { -+ if (dswidth && ((agsize % dswidth) == 0) -+ && (dswidth != dsunit) -+ && (agcount > 1)) { - /* This is a non-optimal configuration because all AGs - * start on the same disk in the stripe. Changing - * the AG size by one sunit will guarantee that this diff --git a/xfsprogs-4.13.0-xfs_repair-don-t-use-do_warn-for-normal-log-message.patch b/xfsprogs-4.13.0-xfs_repair-don-t-use-do_warn-for-normal-log-message.patch deleted file mode 100644 index 4020c02f039cec237bceea84f259f3125e3d32ef..0000000000000000000000000000000000000000 --- a/xfsprogs-4.13.0-xfs_repair-don-t-use-do_warn-for-normal-log-message.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 67ea25fe9d663f69b550b39ce86b074534ae7c85 Mon Sep 17 00:00:00 2001 -From: Masatake YAMATO -Date: Fri, 15 Sep 2017 13:42:18 -0500 -Subject: [PATCH] xfs_repair: don't use do_warn for normal log message - -In some case, exit status of xfs_repair -n is different even for -the same file system when -v is specified or not. This patch fixes -this behavior. - -If -v is specified, do_warn() is used in zero_log() for printing -a normal message. That makes the exit status to 1 though there -is no dirtiness in the file system. - -Signed-off-by: Masatake YAMATO -Reviewed-by: Eric Sandeen -[sandeen: edit changelog for brevity] -Signed-off-by: Eric Sandeen ---- - repair/phase2.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -Index: xfsprogs-4.5.0/repair/phase2.c -=================================================================== ---- xfsprogs-4.5.0.orig/repair/phase2.c -+++ xfsprogs-4.5.0/repair/phase2.c -@@ -85,7 +85,7 @@ zero_log( - "attempt a repair.\n")); - } else { - if (verbose) { -- do_warn( -+ do_log( - _("zero_log: head block %" PRId64 " tail block %" PRId64 "\n"), - head_blk, tail_blk); - } diff --git a/xfsprogs-4.14.0-db-increase-metadump-s-default-overly-long-extent-di.patch b/xfsprogs-4.14.0-db-increase-metadump-s-default-overly-long-extent-di.patch deleted file mode 100644 index 17416bbb3d51d4b9f6d6e9a9248e83fbfedb3603..0000000000000000000000000000000000000000 --- a/xfsprogs-4.14.0-db-increase-metadump-s-default-overly-long-extent-di.patch +++ /dev/null @@ -1,55 +0,0 @@ -From 921c30674e9bc719e7c2747deb6deb04be2adb4b Mon Sep 17 00:00:00 2001 -From: "Darrick J. Wong" -Date: Thu, 9 Nov 2017 11:35:22 -0600 -Subject: [PATCH] db: increase metadump's default overly long extent discard - threshold - -Back in 88b8e1d6d7 ("Make xfs_metadump more robust against bad data"), -metadump grew the ability to ignore a directory extent if it was longer -than 20 blocks. Presumably this was to protect metadump from dumping -absurdly long extents resulting from bmbt corruption, but it's certainly -possible to create a directory with an extent longer than 20 blocks. -Hilariously, the discards happen with no warning unless the caller -explicitly set -w. - -This was raised to 1000 blocks in 7431d134fe8 ("Increase default maximum -extent size for xfs_metadump when copying..."), but it's still possible -to create a directory with an extent longer than 1000 blocks. - -Increase the threshold to MAXEXTLEN blocks because it's totally valid -for the filesystem to create extents up to that length. - -Signed-off-by: Darrick J. Wong -Reviewed-by: Carlos Maiolino -Signed-off-by: Eric Sandeen ---- - db/metadump.c | 2 +- - man/man8/xfs_metadump.8 | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -Index: xfsprogs-4.5.0/db/metadump.c -=================================================================== ---- xfsprogs-4.5.0.orig/db/metadump.c -+++ xfsprogs-4.5.0/db/metadump.c -@@ -32,7 +32,7 @@ - #include "field.h" - #include "dir2.h" - --#define DEFAULT_MAX_EXT_SIZE 1000 -+#define DEFAULT_MAX_EXT_SIZE MAXEXTLEN - - /* - * It's possible that multiple files in a directory (or attributes -Index: xfsprogs-4.5.0/man/man8/xfs_metadump.8 -=================================================================== ---- xfsprogs-4.5.0.orig/man/man8/xfs_metadump.8 -+++ xfsprogs-4.5.0/man/man8/xfs_metadump.8 -@@ -114,7 +114,7 @@ copied. - .B \-m - Set the maximum size of an allowed metadata extent. Extremely large metadata - extents are likely to be corrupt, and will be skipped if they exceed --this value. The default size is 1000 blocks. -+this value. The default size is 2097151 blocks. - .TP - .B \-o - Disables obfuscation of file names and extended attributes. diff --git a/xfsprogs-4.15.0-xfs_copy-accept-CRC-version-of-ABTB_MAGIC-in-ASSERT.patch b/xfsprogs-4.15.0-xfs_copy-accept-CRC-version-of-ABTB_MAGIC-in-ASSERT.patch deleted file mode 100644 index e4492eab6dc8ce438880d8abb2945fd6296a9b03..0000000000000000000000000000000000000000 --- a/xfsprogs-4.15.0-xfs_copy-accept-CRC-version-of-ABTB_MAGIC-in-ASSERT.patch +++ /dev/null @@ -1,35 +0,0 @@ -From d0ca5d8a3875a423b522ee9767cbeb3d47bed420 Mon Sep 17 00:00:00 2001 -From: Eric Sandeen -Date: Thu, 25 Jan 2018 13:55:01 -0600 -Subject: [PATCH] xfs_copy: accept CRC version of ABTB_MAGIC in ASSERT - -Not sure how this was missed for so long, but to handle CRC -filesystems, this ASSERT on block magic must accept CRC magic -as well. - -Reported-by: Radek Burkat -Signed-off-by: Eric Sandeen -Reviewed-by: Darrick J. Wong -Reviewed-by: Bill O'Donnell -Signed-off-by: Eric Sandeen ---- - copy/xfs_copy.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/copy/xfs_copy.c b/copy/xfs_copy.c -index fb37375..16ee4d9 100644 ---- a/copy/xfs_copy.c -+++ b/copy/xfs_copy.c -@@ -1140,7 +1140,8 @@ main(int argc, char **argv) - ((char *) btree_buf.data + - pos - btree_buf.position); - -- ASSERT(be32_to_cpu(block->bb_magic) == XFS_ABTB_MAGIC); -+ ASSERT(be32_to_cpu(block->bb_magic) == XFS_ABTB_MAGIC || -+ be32_to_cpu(block->bb_magic) == XFS_ABTB_CRC_MAGIC); - } - - /* --- -2.9.5 - diff --git a/xfsprogs-4.15.0-xfs_db-fix-crash-when-field-list-selector-string-has.patch b/xfsprogs-4.15.0-xfs_db-fix-crash-when-field-list-selector-string-has.patch deleted file mode 100644 index dd73b3f2dbe40530226bc5174b0a1e9e46732f7c..0000000000000000000000000000000000000000 --- a/xfsprogs-4.15.0-xfs_db-fix-crash-when-field-list-selector-string-has.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 945e47e2fcc5d1cec693122286da06d8ab829c52 Mon Sep 17 00:00:00 2001 -From: "Darrick J. Wong" -Date: Thu, 4 Jan 2018 13:58:29 -0600 -Subject: [PATCH] xfs_db: fix crash when field list selector string has - trailing slash - -If I run the following command: - -xfs_db /dev/sdf -x -c 'agf 0' -c 'addr refcntroot' -c 'addr ptrs[1]\' - -it errors out with "bad character in field \" and -then ftok_free crashes on an invalid free() because picking up the -previous token (the closing bracket) xrealloc'd the token array to be 5 -elements long but never set the last element's tok pointer. -Consequently the ftok_free tries to free whatever garbage pointer is in -that last element and kaboom. - -Signed-off-by: Darrick J. Wong -Reviewed-by: Eric Sandeen -[sandeen: slightly clarify commit log] -Signed-off-by: Eric Sandeen ---- - db/flist.c | 1 + - 1 file changed, 1 insertion(+) - -Index: xfsprogs-4.5.0/db/flist.c -=================================================================== ---- xfsprogs-4.5.0.orig/db/flist.c -+++ xfsprogs-4.5.0/db/flist.c -@@ -400,6 +400,7 @@ flist_split( - strncpy(a, s, l); - a[l] = '\0'; - v = xrealloc(v, (nv + 2) * sizeof(*v)); -+ v[nv + 1].tok = NULL; - v[nv].tok = a; - v[nv].tokty = t; - nv++; diff --git a/xfsprogs-4.15.0-xfsprogs-update-dead-urls.patch b/xfsprogs-4.15.0-xfsprogs-update-dead-urls.patch deleted file mode 100644 index 0f105f7db071fa09193864d3a41b1b9886b3230d..0000000000000000000000000000000000000000 --- a/xfsprogs-4.15.0-xfsprogs-update-dead-urls.patch +++ /dev/null @@ -1,97 +0,0 @@ -From 50663dc149619aef23bcb43e6fdf48bc60487374 Mon Sep 17 00:00:00 2001 -From: "Darrick J. Wong" -Date: Thu, 25 Jan 2018 13:55:01 -0600 -Subject: [PATCH] xfsprogs: update dead urls - -Since oss.sgi.com is dead and xfs.org is slowly migrating to -xfs.wiki.kernel.org, update all the documentation links to point to the -current landing pads. - -Signed-off-by: Darrick J. Wong -Reviewed-by: Eric Sandeen -Signed-off-by: Eric Sandeen ---- - README | 2 +- - debian/control | 6 +++--- - debian/copyright | 2 +- - debian/watch | 2 +- - 4 files changed, 6 insertions(+), 6 deletions(-) - -Index: xfsprogs-4.5.0/README -=================================================================== ---- xfsprogs-4.5.0.orig/README -+++ xfsprogs-4.5.0/README -@@ -9,4 +9,4 @@ and references to other XFS manual pages - - For more information and details on how to contribute to the - XFS project see the web pages at: -- http://oss.sgi.com/projects/xfs/ -+ https://xfs.wiki.kernel.org/ -Index: xfsprogs-4.5.0/debian/control -=================================================================== ---- xfsprogs-4.5.0.orig/debian/control -+++ xfsprogs-4.5.0/debian/control -@@ -24,7 +24,7 @@ Description: Utilities for managing the - Btrees (directories, extents, free space) to aid both performance - and scalability. - . -- Refer to the documentation at http://oss.sgi.com/projects/xfs/ -+ Refer to the documentation at https://xfs.wiki.kernel.org/ - for complete details. - - Package: xfslibs-dev -Index: xfsprogs-4.5.0/debian/copyright -=================================================================== ---- xfsprogs-4.5.0.orig/debian/copyright -+++ xfsprogs-4.5.0/debian/copyright -@@ -1,7 +1,7 @@ - This package was debianized by Nathan Scott nathans@debian.org on - Sun, 19 Nov 2000 07:37:09 -0500. - --It can be downloaded from ftp://oss.sgi.com/projects/xfs/download/ -+It can be downloaded from https://www.kernel.org/pub/linux/utils/fs/xfs/xfsprogs/ - - Copyright: - -Index: xfsprogs-4.5.0/debian/watch -=================================================================== ---- xfsprogs-4.5.0.orig/debian/watch -+++ xfsprogs-4.5.0/debian/watch -@@ -1,3 +1,3 @@ - version=3 - opts=uversionmangle=s/(\d)[_\.\-\+]?((RC|rc|pre|dev|beta|alpha)\d*)$/$1~$2/ \ --ftp://oss.sgi.com/projects/xfs/cmd_tars/xfsprogs-(.+)\.tar\.gz -+https://www.kernel.org/pub/linux/utils/fs/xfs/xfsprogs/xfsprogs-(.+)\.tar\.xz -Index: xfsprogs-4.5.0/libxfs/util.c -=================================================================== ---- xfsprogs-4.5.0.orig/libxfs/util.c -+++ xfsprogs-4.5.0/libxfs/util.c -@@ -690,7 +690,7 @@ libxfs_fs_repair_cmn_err(int level, xfs_ - fprintf(stderr, " This is a bug.\n"); - fprintf(stderr, "%s version %s\n", progname, VERSION); - fprintf(stderr, "Please capture the filesystem metadata with " -- "xfs_metadump and\nreport it to xfs@oss.sgi.com.\n"); -+ "xfs_metadump and\nreport it to linux-xfs@vger.kernel.org.\n"); - va_end(ap); - } - -Index: xfsprogs-4.5.0/man/man8/xfs_mdrestore.8 -=================================================================== ---- xfsprogs-4.5.0.orig/man/man8/xfs_mdrestore.8 -+++ xfsprogs-4.5.0/man/man8/xfs_mdrestore.8 -@@ -51,4 +51,4 @@ returns an exit code of 0 if all the met - .BR xfs (5) - .SH BUGS - Email bug reports to --.BR xfs@oss.sgi.com . -+.BR linux-xfs@vger.kernel.org . -Index: xfsprogs-4.5.0/man/man8/xfs_metadump.8 -=================================================================== ---- xfsprogs-4.5.0.orig/man/man8/xfs_metadump.8 -+++ xfsprogs-4.5.0/man/man8/xfs_metadump.8 -@@ -154,4 +154,4 @@ command. - .BR xfs (5) - .SH BUGS - Email bug reports to --.BR xfs@oss.sgi.com . -+.BR linux-xfs@vger.kernel.org . diff --git a/xfsprogs-4.16-xfs_repair-handle-corrupt-log.patch b/xfsprogs-4.16-xfs_repair-handle-corrupt-log.patch deleted file mode 100644 index a31f5f80cb7edcd0c59807bbb99cd3930c470e4d..0000000000000000000000000000000000000000 --- a/xfsprogs-4.16-xfs_repair-handle-corrupt-log.patch +++ /dev/null @@ -1,28 +0,0 @@ -This patch is not yet upstream; there are missing braces under -the if (!no_modify && !zap_log) case so that a repair which fails -xlog_find_tail() will not be repairable, because -L will not be -able to zero out the log. - -Reported-by: Xiao Yang -Signed-off-by: Xiao Yang -Reviewed-by: Eric Sandeen - -Index: xfsprogs-4.5.0/repair/phase2.c -=================================================================== ---- xfsprogs-4.5.0.orig/repair/phase2.c -+++ xfsprogs-4.5.0/repair/phase2.c -@@ -78,12 +78,13 @@ zero_log( - do_warn( - _("zero_log: cannot find log head/tail (xlog_find_tail=%d)\n"), - error); -- if (!no_modify && !zap_log) -+ if (!no_modify && !zap_log) { - do_warn(_( - "ERROR: The log head and/or tail cannot be discovered. Attempt to mount the\n" - "filesystem to replay the log or use the -L option to destroy the log and\n" - "attempt a repair.\n")); - exit(2); -+ } - } else { - if (verbose) { - do_log( diff --git a/xfsprogs-4.17.0-xfs_io-add-label-command.patch b/xfsprogs-4.17.0-xfs_io-add-label-command.patch deleted file mode 100644 index b03b089433cd2a299c4aa1e83e68a45b605dcdd9..0000000000000000000000000000000000000000 --- a/xfsprogs-4.17.0-xfs_io-add-label-command.patch +++ /dev/null @@ -1,194 +0,0 @@ -From cfa10b0f972005b38ed294bca66cebf2f65298ec Mon Sep 17 00:00:00 2001 -From: Eric Sandeen -Date: Thu, 24 May 2018 14:48:33 -0500 -Subject: [PATCH] xfs_io: add label command - -This adds an online get/set/clear label command to xfs_io. - -Signed-off-by: Eric Sandeen -Reviewed-by: Dave Chinner -Signed-off-by: Eric Sandeen ---- - io/Makefile | 6 +-- - io/init.c | 1 + - io/io.h | 1 + - io/label.c | 108 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ - man/man8/xfs_io.8 | 13 +++++++ - 5 files changed, 126 insertions(+), 3 deletions(-) - create mode 100644 io/label.c - -Index: xfsprogs-4.5.0/io/Makefile -=================================================================== ---- xfsprogs-4.5.0.orig/io/Makefile -+++ xfsprogs-4.5.0/io/Makefile -@@ -9,7 +9,7 @@ LTCOMMAND = xfs_io - LSRCFILES = xfs_bmap.sh xfs_freeze.sh xfs_mkfile.sh - HFILES = init.h io.h - CFILES = init.c \ -- attr.c bmap.c file.c freeze.c fsync.c getrusage.c imap.c link.c \ -+ attr.c bmap.c file.c freeze.c fsync.c getrusage.c imap.c label.c link.c \ - mmap.c open.c parent.c pread.c prealloc.c pwrite.c seek.c shutdown.c \ - sync.c truncate.c reflink.c - -Index: xfsprogs-4.5.0/io/init.c -=================================================================== ---- xfsprogs-4.5.0.orig/io/init.c -+++ xfsprogs-4.5.0/io/init.c -@@ -65,6 +65,7 @@ init_commands(void) - help_init(); - imap_init(); - inject_init(); -+ label_init(); - seek_init(); - madvise_init(); - mincore_init(); -Index: xfsprogs-4.5.0/io/io.h -=================================================================== ---- xfsprogs-4.5.0.orig/io/io.h -+++ xfsprogs-4.5.0/io/io.h -@@ -102,6 +102,7 @@ extern void getrusage_init(void); - extern void help_init(void); - extern void imap_init(void); - extern void inject_init(void); -+extern void label_init(void); - extern void mmap_init(void); - extern void open_init(void); - extern void parent_init(void); -Index: xfsprogs-4.5.0/io/label.c -=================================================================== ---- /dev/null -+++ xfsprogs-4.5.0/io/label.c -@@ -0,0 +1,108 @@ -+/* -+ * Copyright (c) 2018 Red Hat, Inc. -+ * All Rights Reserved. -+ * -+ * This program is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU General Public License as -+ * published by the Free Software Foundation. -+ * -+ * This program is distributed in the hope that it would be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with this program; if not, write the Free Software Foundation, -+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -+ */ -+ -+#include -+#include -+#include "platform_defs.h" -+#include "libxfs.h" -+#include "path.h" -+#include "command.h" -+#include "init.h" -+#include "io.h" -+ -+#ifndef FS_IOC_GETFSLABEL -+/* Max chars for the interface; fs limits may differ */ -+#define FSLABEL_MAX 256 -+#define FS_IOC_GETFSLABEL _IOR(0x94, 49, char[FSLABEL_MAX]) -+#define FS_IOC_SETFSLABEL _IOW(0x94, 50, char[FSLABEL_MAX]) -+#endif -+ -+static cmdinfo_t label_cmd; -+ -+static void -+label_help(void) -+{ -+ printf(_( -+"\n" -+" Manipulate or query the filesystem label while mounted.\n" -+"\n" -+" With no arguments, displays the current filesystem label.\n" -+" -s newlabel -- set the filesystem label to newlabel\n" -+" -c -- clear the filesystem label (sets to NULL string)\n" -+"\n")); -+} -+ -+static int -+label_f( -+ int argc, -+ char **argv) -+{ -+ int c; -+ int error; -+ char label[FSLABEL_MAX]; -+ -+ if (argc == 1) { -+ memset(label, 0, sizeof(label)); -+ error = ioctl(file->fd, FS_IOC_GETFSLABEL, &label); -+ goto out; -+ } -+ -+ while ((c = getopt(argc, argv, "cs:")) != EOF) { -+ switch (c) { -+ case 'c': -+ label[0] = '\0'; -+ break; -+ case 's': -+ strncpy(label, optarg, sizeof(label)); -+ break; -+ default: -+ return command_usage(&label_cmd); -+ } -+ } -+ -+ /* Check for trailing arguments */ -+ if (argc != optind) -+ return command_usage(&label_cmd); -+ -+ error = ioctl(file->fd, FS_IOC_SETFSLABEL, label); -+out: -+ if (error) { -+ perror("label"); -+ exitcode = 1; -+ } else { -+ printf("label = \"%s\"\n", label); -+ } -+ -+ return 0; -+} -+ -+void -+label_init(void) -+{ -+ label_cmd.name = "label"; -+ label_cmd.cfunc = label_f; -+ label_cmd.argmin = 0; -+ label_cmd.argmax = 3; -+ label_cmd.args = _("[-s label|-c]"); -+ label_cmd.flags = CMD_NOMAP_OK | CMD_FOREIGN_OK; -+ label_cmd.oneline = -+ _("query, set, or clear the filesystem label while mounted"); -+ label_cmd.help = label_help; -+ -+ add_command(&label_cmd); -+} -Index: xfsprogs-4.5.0/man/man8/xfs_io.8 -=================================================================== ---- xfsprogs-4.5.0.orig/man/man8/xfs_io.8 -+++ xfsprogs-4.5.0/man/man8/xfs_io.8 -@@ -812,7 +812,19 @@ verbose output will be printed. - .IP - .B [NOTE: Not currently operational on Linux.] - .PD -- -+.TP -+.BI "label" " " "[ -c | -s " label " ] " -+On filesystems that support online label manipulation, get, set, or clear the -+filesystem label. With no options, print the current filesystem label. The -+.B \-c -+option clears the filesystem label by setting it to the null string. The -+.BI "\-s " label -+option sets the filesystem label to -+.IR label . -+If the label is longer than the filesystem will accept, -+.B xfs_io -+will print an error message. XFS filesystem labels can be at most 12 -+characters long. - .SH SEE ALSO - .BR mkfs.xfs (8), - .BR xfsctl (3), diff --git a/xfsprogs-4.17.0-xfsprogs-be-careful-about-what-we-stat-in-platform_c.patch b/xfsprogs-4.17.0-xfsprogs-be-careful-about-what-we-stat-in-platform_c.patch deleted file mode 100644 index d8cff4bfb5f1e304c689ba54a3eb31a7aa2b8e01..0000000000000000000000000000000000000000 --- a/xfsprogs-4.17.0-xfsprogs-be-careful-about-what-we-stat-in-platform_c.patch +++ /dev/null @@ -1,64 +0,0 @@ -From 98c4a01c21b99b13d8aaa406ab15b7424ee5ef9f Mon Sep 17 00:00:00 2001 -From: Eric Sandeen -Date: Wed, 23 May 2018 16:30:49 -0500 -Subject: [PATCH] xfsprogs: be careful about what we stat in - platform_check_mount - -After we lost ustat(2) in commit 4e7a824, we ended up with a slightly -bonkers method to determine if our target block device was mounted: -it goes through every entry returned by getmntent and stats the dir -to see if its underlying device matches ours. - -Unfortunately that dir might be a hung nfs server and sadness ensues. - -So just do a really simple sanity check before we try to stat the -mountpoint: does its device start with a / ? If not, skip it. - -Fixes: 4e7a824 ("libxfs/linux.c: Replace use of ustat by stat") -Signed-off-by: Eric Sandeen -Reviewed-by: Allison Henderson -Signed-off-by: Eric Sandeen ---- - libfrog/linux.c | 10 ++++++++++ - 1 file changed, 10 insertions(+) - -Index: xfsprogs-4.5.0/libxfs/linux.c -=================================================================== ---- xfsprogs-4.5.0.orig/libxfs/linux.c -+++ xfsprogs-4.5.0/libxfs/linux.c -@@ -68,7 +68,17 @@ platform_check_ismounted(char *name, cha - progname, name); - return 1; - } -+ /* -+ * This whole business is to work out if our block device is mounted -+ * after we lost ustat(2), see: -+ * 4e7a824 libxfs/linux.c: Replace use of ustat by stat -+ * We don't really want to stat every single mounted directory, -+ * as that may include tmpfs, cgroups, procfs or - worst - hung nfs -+ * servers. So first, a simple check: does the "dev" start with "/" ? -+ */ - while ((mnt = getmntent(f)) != NULL) { -+ if (mnt->mnt_fsname[0] != '/') -+ continue; - if (stat64(mnt->mnt_dir, &mst) < 0) - continue; - if (mst.st_dev != s->st_rdev) -@@ -99,7 +109,17 @@ platform_check_iswritable(char *name, ch - "mounted filesystem\n"), progname, name); - return fatal; - } -+ /* -+ * This whole business is to work out if our block device is mounted -+ * after we lost ustat(2), see: -+ * 4e7a824 libxfs/linux.c: Replace use of ustat by stat -+ * We don't really want to stat every single mounted directory, -+ * as that may include tmpfs, cgroups, procfs or - worst - hung nfs -+ * servers. So first, a simple check: does the "dev" start with "/" ? -+ */ - while ((mnt = getmntent(f)) != NULL) { -+ if (mnt->mnt_fsname[0] != '/') -+ continue; - if (stat64(mnt->mnt_fsname, &mst) < 0) - continue; - if ((mst.st_mode & S_IFMT) != S_IFBLK) diff --git a/xfsprogs-4.18-repair-root-parent.patch b/xfsprogs-4.18-repair-root-parent.patch deleted file mode 100644 index d71e5740fbbfa326937f300f9f52fe27ff0e4eb8..0000000000000000000000000000000000000000 --- a/xfsprogs-4.18-repair-root-parent.patch +++ /dev/null @@ -1,51 +0,0 @@ -xfs_repair: Fix root inode's parent when it's bogus for sf directory - -Currently when root inode is in short-form and its parent ino -has an invalid value, process_sf_dir2() ends up not fixing it, -because if verify_inum() fails we never get to the next case which -would fix the root inode's parent pointer. - -This behavior triggers the following assert on process_dir2(): - - ASSERT((ino != mp->m_sb.sb_rootino && ino != *parent) || - (ino == mp->m_sb.sb_rootino && - (ino == *parent || need_root_dotdot == 1))); - -This patch fixes this behavior by making sure we always properly -handle rootino parent pointer in process_sf_dir2() - -Signed-off-by: Marco Benatto -Reviewed-by: Eric Sandeen - ---- - -Note: reviewed but not yet merged upstream - - repair/dir2.c | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/repair/dir2.c b/repair/dir2.c -index e162d2b..225f926 100644 ---- a/repair/dir2.c -+++ b/repair/dir2.c -@@ -495,8 +495,10 @@ _("corrected entry offsets in directory %" PRIu64 "\n"), - - /* - * if parent entry is bogus, null it out. we'll fix it later . -+ * If the validation fails for the root inode we fix it in -+ * the next else case. - */ -- if (verify_inum(mp, *parent)) { -+ if (verify_inum(mp, *parent) && ino != mp->m_sb.sb_rootino) { - - do_warn( - _("bogus .. inode number (%" PRIu64 ") in directory inode %" PRIu64 ", "), --- -2.9.5 - --- -To unsubscribe from this list: send the line "unsubscribe linux-xfs" in -the body of a message to majordomo@vger.kernel.org -More majordomo info at http://vger.kernel.org/majordomo-info.html - - diff --git a/xfsprogs-4.19.0.tar.xz b/xfsprogs-4.19.0.tar.xz new file mode 100644 index 0000000000000000000000000000000000000000..9dc1e5e866de4702621c21f82610eb664602092a Binary files /dev/null and b/xfsprogs-4.19.0.tar.xz differ diff --git a/xfsprogs-4.20-xfs_quota-fix-false-error-reporting-of-project-inhertance-flag.patch b/xfsprogs-4.20-xfs_quota-fix-false-error-reporting-of-project-inhertance-flag.patch deleted file mode 100644 index 4eeb40280619eedd1e1e8b9692d00f10d95d2826..0000000000000000000000000000000000000000 --- a/xfsprogs-4.20-xfs_quota-fix-false-error-reporting-of-project-inhertance-flag.patch +++ /dev/null @@ -1,43 +0,0 @@ -From b136f48b19a5b8e788aceb4b80e97d6ae9edd0ea Mon Sep 17 00:00:00 2001 -From: Achilles Gaikwad -Date: Mon, 28 Jan 2019 13:03:08 -0600 -Subject: [PATCH] xfs_quota: fix false error reporting of project inheritance - flag is not set - -After kernel commit: - -9336e3a7 "xfs: project id inheritance is a directory only flag" - -xfs stopped setting the project inheritance flag on regular files, but -userspace quota code still checks for it and will now issue the error: - -"project inheritance flag is not set" - -for every regular file during quotacheck. Fix this by only checking -for the flag on directories. - -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1663502 -Reported-by: Steven Gardner -Signed-off-by: Achilles Gaikwad -Reviewed-by: Darrick J. Wong -Signed-off-by: Eric Sandeen ---- - quota/project.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/quota/project.c b/quota/project.c -index 78ede9e..7c22947 100644 ---- a/quota/project.c -+++ b/quota/project.c -@@ -114,7 +114,7 @@ check_project( - printf(_("%s - project identifier is not set" - " (inode=%u, tree=%u)\n"), - path, fsx.fsx_projid, (unsigned int)prid); -- if (!(fsx.fsx_xflags & FS_XFLAG_PROJINHERIT)) -+ if (!(fsx.fsx_xflags & FS_XFLAG_PROJINHERIT) && S_ISDIR(stat->st_mode)) - printf(_("%s - project inheritance flag is not set\n"), - path); - } --- -2.9.5 - diff --git a/xfsprogs-4.20-xfs_repair-initialize-non-leaf-finobt-blocks-with-co.patch b/xfsprogs-4.20-xfs_repair-initialize-non-leaf-finobt-blocks-with-co.patch deleted file mode 100644 index d210b1af6fe5cf53ba322a528edd4d0ed3e1c240..0000000000000000000000000000000000000000 --- a/xfsprogs-4.20-xfs_repair-initialize-non-leaf-finobt-blocks-with-co.patch +++ /dev/null @@ -1,75 +0,0 @@ -From 051dae5efb4fc7c1c47ccb72ff161241fb0815ee Mon Sep 17 00:00:00 2001 -From: Brian Foster -Date: Mon, 28 Jan 2019 16:05:16 -0600 -Subject: [PATCH] xfs_repair: initialize non-leaf finobt blocks with correct magic - -The free inode btree construction code in xfs_repair has a bug where -any non-leaf nodes outside of the leftmost block at the associated -level in the tree are incorrectly initialized with the inobt magic -value. Update the prop_ino_cursor() path responsible for growing the -non-leaf portion of the inode btrees to use the btnum of the -specific tree being generated rather than the hardcoded inode btree -type. - -Signed-off-by: Brian Foster -Reported-by: Lucas Stach -Root-caused-by: Lucas Stach -Reviewed-by: Eric Sandeen -Reviewed-by: Dave Chinner -Signed-off-by: Eric Sandeen ---- - -(backported for RHEL7) - ---- xfsprogs-4.5.0/repair/phase5.c 2016-02-28 17:39:26.000000000 -0600 -+++ xfsprogs-4.5.0-mine/repair/phase5.c 2019-02-05 11:18:28.046228329 -0600 -@@ -1003,7 +1003,7 @@ init_ino_cursor(xfs_mount_t *mp, xfs_agn - - static void - prop_ino_cursor(xfs_mount_t *mp, xfs_agnumber_t agno, bt_status_t *btree_curs, -- xfs_agino_t startino, int level) -+ __uint32_t magic, xfs_agino_t startino, int level) - { - struct xfs_btree_block *bt_hdr; - xfs_inobt_key_t *bt_key; -@@ -1025,7 +1025,7 @@ prop_ino_cursor(xfs_mount_t *mp, xfs_agn - * first path up the left side of the tree - * where the agbno's are already set up - */ -- prop_ino_cursor(mp, agno, btree_curs, startino, level); -+ prop_ino_cursor(mp, agno, btree_curs, magic, startino, level); - } - - if (be16_to_cpu(bt_hdr->bb_numrecs) == -@@ -1062,11 +1062,11 @@ prop_ino_cursor(xfs_mount_t *mp, xfs_agn - bt_hdr = XFS_BUF_TO_BLOCK(lptr->buf_p); - memset(bt_hdr, 0, mp->m_sb.sb_blocksize); - if (xfs_sb_version_hascrc(&mp->m_sb)) -- xfs_btree_init_block(mp, lptr->buf_p, XFS_IBT_CRC_MAGIC, -+ xfs_btree_init_block(mp, lptr->buf_p, magic, - level, 0, agno, - XFS_BTREE_CRC_BLOCKS); - else -- xfs_btree_init_block(mp, lptr->buf_p, XFS_IBT_MAGIC, -+ xfs_btree_init_block(mp, lptr->buf_p, magic, - level, 0, agno, 0); - - bt_hdr->bb_u.s.bb_leftsib = cpu_to_be32(lptr->prev_agbno); -@@ -1074,7 +1074,7 @@ prop_ino_cursor(xfs_mount_t *mp, xfs_agn - /* - * propagate extent record for first extent in new block up - */ -- prop_ino_cursor(mp, agno, btree_curs, startino, level); -+ prop_ino_cursor(mp, agno, btree_curs, magic, startino, level); - } - /* - * add inode info to current block -@@ -1236,7 +1236,7 @@ build_ino_tree(xfs_mount_t *mp, xfs_agnu - lptr->modulo--; - - if (lptr->num_recs_pb > 0) -- prop_ino_cursor(mp, agno, btree_curs, -+ prop_ino_cursor(mp, agno, btree_curs, magic, - ino_rec->ino_startnum, 0); - - bt_rec = (xfs_inobt_rec_t *) diff --git a/xfsprogs-4.5.0-change-mkfs-options.patch b/xfsprogs-4.5.0-change-mkfs-options.patch deleted file mode 100644 index 2b03aec2961a340be526382e834646b9e53a333a..0000000000000000000000000000000000000000 --- a/xfsprogs-4.5.0-change-mkfs-options.patch +++ /dev/null @@ -1,93 +0,0 @@ -Disable finobt by default for compatibility w/ old RHEL7 kernels. - -Disable experimental sparse inode support entirely. - -Index: xfsprogs-4.5.0/man/man8/mkfs.xfs.8 -=================================================================== ---- xfsprogs-4.5.0.orig/man/man8/mkfs.xfs.8 -+++ xfsprogs-4.5.0/man/man8/mkfs.xfs.8 -@@ -167,9 +167,10 @@ filesystems age. - .IP - By default, - .B mkfs.xfs --will create free inode btrees for filesystems created with the (default) --.B \-m crc=1 --option set. When the option -+will not create free inode btrees for filesystems. This is for backwards -+compatibility with older RHEL7 kernels. If the free inode btree is enabled, -+older RHEL7 kernels will not be able to mount the created filesystem. -+When the option - .B \-m crc=0 - is used, the free inode btree feature is not supported and is disabled. - .TP -@@ -419,21 +420,8 @@ If the value is omitted, 1 is assumed. - in release version 3.2.0.) - .TP - .BI sparse[= value ] --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 --formatted with --.B \-m crc=1. --.IP --When enabled, sparse inode allocation allows the filesystem to allocate --smaller than the standard 64-inode chunk when free space is severely --limited. This feature is useful for filesystems that might fragment free --space over time such that no free extents are large enough to --accommodate a chunk of 64 inodes. Without this feature enabled, inode --allocations can fail with out of space errors under severe fragmented --free space conditions. -+Enable sparse inode chunk allocation. This experimental option is not -+available in RHEL7. - .RE - .TP - .BI \-l " log_section_options" -Index: xfsprogs-4.5.0/mkfs/xfs_mkfs.c -=================================================================== ---- xfsprogs-4.5.0.orig/mkfs/xfs_mkfs.c -+++ xfsprogs-4.5.0/mkfs/xfs_mkfs.c -@@ -105,8 +105,6 @@ char *iopts[] = { - "attr", - #define I_PROJID32BIT 6 - "projid32bit", --#define I_SPINODES 7 -- "sparse", - NULL - }; - -@@ -1019,7 +1017,7 @@ main( - worst_freelist = 0; - lazy_sb_counters = 1; - crcs_enabled = 1; -- finobt = 1; -+ finobt = 0; - finobtflag = false; - spinodes = 0; - memset(&fsx, 0, sizeof(fsx)); -@@ -1343,6 +1341,7 @@ main( - illegal(value, "i projid32bit"); - projid16bit = c ? 0 : 1; - break; -+#if 0 - case I_SPINODES: - if (!value || *value == '\0') - value = "1"; -@@ -1350,6 +1349,7 @@ main( - if (spinodes < 0 || spinodes > 1) - illegal(value, "i spinodes"); - break; -+#endif - default: - unknown('i', value); - } -@@ -3213,7 +3213,7 @@ usage( void ) - sectlog=n|sectsize=num\n\ - /* force overwrite */ [-f]\n\ - /* inode size */ [-i log=n|perblock=n|size=num,maxpct=n,attr=0|1|2,\n\ -- projid32bit=0|1,sparse=0|1]\n\ -+ projid32bit=0|1]\n\ - /* no discard */ [-K]\n\ - /* log subvol */ [-l agnum=n,internal,size=num,logdev=xxx,version=n\n\ - sunit=value|su=num,sectlog=n|sectsize=num,\n\ diff --git a/xfsprogs-4.5.0-fix-headers.patch b/xfsprogs-4.5.0-fix-headers.patch deleted file mode 100644 index ff795ed7eba17b5e15a1020ca759486982370ced..0000000000000000000000000000000000000000 --- a/xfsprogs-4.5.0-fix-headers.patch +++ /dev/null @@ -1,52 +0,0 @@ -xfs.h: define XFS_IOC_FREEZE even if FIFREEZE is defined - -And the same for XFS_IOC_THAW. Just because we now have a common -version of the ioctl we still need to provide the old name for it -for anyone using those. - -Signed-off-by: Christoph Hellwig - -linux.h: include - -To reliably prevent the redefinition of struct fsxattr. - -Signed-off-by: Christoph Hellwig -Reported-by: Jeffrey Bastian - ---- - libxfs/xfs_fs.h | 8 ++------ - 2 files changed, 3 insertions(+), 6 deletions(-) - - -diff --git a/libxfs/xfs_fs.h b/libxfs/xfs_fs.h -index b9622ba..1f17e1c 100644 ---- a/libxfs/xfs_fs.h -+++ b/libxfs/xfs_fs.h -@@ -542,12 +542,8 @@ typedef struct xfs_swapext - #define XFS_IOC_ERROR_CLEARALL _IOW ('X', 117, struct xfs_error_injection) - /* XFS_IOC_ATTRCTL_BY_HANDLE -- deprecated 118 */ - --/* XFS_IOC_FREEZE -- FIFREEZE 119 */ --/* XFS_IOC_THAW -- FITHAW 120 */ --#ifndef FIFREEZE --#define XFS_IOC_FREEZE _IOWR('X', 119, int) --#define XFS_IOC_THAW _IOWR('X', 120, int) --#endif -+#define XFS_IOC_FREEZE _IOWR('X', 119, int) /* aka FIFREEZE */ -+#define XFS_IOC_THAW _IOWR('X', 120, int) /* aka FITHAW */ - - #define XFS_IOC_FSSETDM_BY_HANDLE _IOW ('X', 121, struct xfs_fsop_setdm_handlereq) - #define XFS_IOC_ATTRLIST_BY_HANDLE _IOW ('X', 122, struct xfs_fsop_attrlist_handlereq) - -diff --git a/include/linux.h b/include/linux.h -index cc0f70c..0c616f4 100644 ---- a/include/linux.h -+++ b/include/linux.h -@@ -32,6 +32,7 @@ - #include - #include - #include -+#include /* fsxattr defintion for new kernels */ - - static __inline__ int xfsctl(const char *path, int fd, int cmd, void *p) - { diff --git a/xfsprogs-4.5.0-revert-AGFL-pack.patch b/xfsprogs-4.5.0-revert-AGFL-pack.patch deleted file mode 100644 index 36afee3d3a358d6f995437c012c77b035ec0f9ac..0000000000000000000000000000000000000000 --- a/xfsprogs-4.5.0-revert-AGFL-pack.patch +++ /dev/null @@ -1,12 +0,0 @@ -reverted: ---- b/libxfs/xfs_format.h -+++ a/libxfs/xfs_format.h -@@ -787,7 +787,7 @@ - __be64 agfl_lsn; - __be32 agfl_crc; - __be32 agfl_bno[]; /* actually XFS_AGFL_SIZE(mp) */ -+} xfs_agfl_t; --} __attribute__((packed)) xfs_agfl_t; - - #define XFS_AGFL_CRC_OFF offsetof(struct xfs_agfl, agfl_crc) - diff --git a/xfsprogs-4.5.0-revert-xfs_db-sparse-inodes.patch b/xfsprogs-4.5.0-revert-xfs_db-sparse-inodes.patch deleted file mode 100644 index 49e0b5aa81f1d70efa5534d7ace9ff9c2480b2c4..0000000000000000000000000000000000000000 --- a/xfsprogs-4.5.0-revert-xfs_db-sparse-inodes.patch +++ /dev/null @@ -1,341 +0,0 @@ -commit 09c93e56b5296a30507cde9c00433eb4ed2d395d -Author: Brian Foster -Date: Tue Jun 21 12:58:57 2016 +1000 - - xfs_db: Revert "xfs_db: make check work for sparse inodes" - - This reverts commit bb2f98b78f20f4abbfbbd442162d9f535c84888a which - introduced support for multi-record inode chunks in - xfs_db/xfs_check. However, it doesn't currently handle filesystems - with multi-record inode chunks correctly. For example, do the - following on a 64k page size arch such as ppc64: - - # mkfs.xfs -f -b size=64k - # xfs_db -c check - bad magic number 0 for inode 1152 - bad magic number 0 for inode 1153 - bad magic number 0 for inode 1154 - bad magic number 0 for inode 1155 - bad magic number 0 for inode 1156 - bad magic number 0 for inode 1157 - ... - - This boils down to a regression in the inode record processing code - (scanfunc_ino()) in db/check.c. Specifically, the cblocks value can - end up being zero after it is shifted by mp->m_sb.sb_inopblog (i.e., - 64 >> 7 == 0 for an -isize=512 -bsize=64k fs). - - Fixing this problem is easier to do from scratch, so revert the - oringial commit first. - - Signed-off-by: Brian Foster - Reviewed-by: Dave Chinner - Signed-off-by: Dave Chinner - -diff --git a/db/check.c b/db/check.c -index 0871ed7..750ecc1 100644 ---- a/db/check.c -+++ b/db/check.c -@@ -4311,51 +4311,6 @@ scanfunc_cnt( - scan_sbtree(agf, be32_to_cpu(pp[i]), level, 0, scanfunc_cnt, TYP_CNTBT); - } - --static bool --ino_issparse( -- struct xfs_inobt_rec *rp, -- int offset) --{ -- if (!xfs_sb_version_hassparseinodes(&mp->m_sb)) -- return false; -- -- return xfs_inobt_is_sparse_disk(rp, offset); --} -- --static int --find_one_ino_bit( -- __u16 mask, -- int startino) --{ -- int n; -- int b; -- -- startino /= XFS_INODES_PER_HOLEMASK_BIT; -- b = startino; -- mask >>= startino; -- for (n = startino; n < sizeof(mask) * NBBY && !(mask & 1); n++, mask >>= 1) -- b++; -- -- return b * XFS_INODES_PER_HOLEMASK_BIT; --} -- --static int --find_zero_ino_bit( -- __u16 mask, -- int startino) --{ -- int n; -- int b; -- -- startino /= XFS_INODES_PER_HOLEMASK_BIT; -- b = startino; -- mask >>= startino; -- for (n = startino; n < sizeof(mask) * NBBY && (mask & 1); n++, mask >>= 1) -- b++; -- -- return b * XFS_INODES_PER_HOLEMASK_BIT; --} -- - static void - scanfunc_ino( - struct xfs_btree_block *block, -@@ -4373,13 +4328,6 @@ scanfunc_ino( - int off; - xfs_inobt_ptr_t *pp; - xfs_inobt_rec_t *rp; -- bool sparse, crc; -- int inodes_per_chunk; -- int freecount; -- int startidx, endidx; -- __u16 holemask; -- xfs_agino_t rino; -- xfs_extlen_t cblocks; - - if (be32_to_cpu(block->bb_magic) != XFS_IBT_MAGIC && - be32_to_cpu(block->bb_magic) != XFS_IBT_CRC_MAGIC) { -@@ -4407,111 +4355,59 @@ scanfunc_ino( - return; - } - rp = XFS_INOBT_REC_ADDR(mp, block, 1); -- sparse = xfs_sb_version_hassparseinodes(&mp->m_sb); -- crc = xfs_sb_version_hascrc(&mp->m_sb); - for (i = 0; i < be16_to_cpu(block->bb_numrecs); i++) { -- nfree = 0; -- -- /* First let's look at the inode chunk alignment */ - agino = be32_to_cpu(rp[i].ir_startino); - off = XFS_INO_TO_OFFSET(mp, agino); -- if (off == 0 && -- (sbversion & XFS_SB_VERSION_ALIGNBIT) && -- mp->m_sb.sb_inoalignmt && -- (XFS_INO_TO_AGBNO(mp, agino) % -- mp->m_sb.sb_inoalignmt)) { -- if (sparse || crc) { -- dbprintf(_("incorrect record %u/%u " -- "alignment in inobt block " -- "%u/%u\n"), -- seqno, agino, seqno, bno); -- error++; -- } else -+ if (off == 0) { -+ if ((sbversion & XFS_SB_VERSION_ALIGNBIT) && -+ mp->m_sb.sb_inoalignmt && -+ (XFS_INO_TO_AGBNO(mp, agino) % -+ mp->m_sb.sb_inoalignmt)) - sbversion &= ~XFS_SB_VERSION_ALIGNBIT; -+ set_dbmap(seqno, XFS_AGINO_TO_AGBNO(mp, agino), -+ (xfs_extlen_t)MAX(1, -+ XFS_INODES_PER_CHUNK >> -+ mp->m_sb.sb_inopblog), -+ DBM_INODE, seqno, bno); - } -- -- /* Move on to examining the inode chunks */ -- if (sparse) { -- inodes_per_chunk = rp[i].ir_u.sp.ir_count; -- freecount = rp[i].ir_u.sp.ir_freecount; -- holemask = be16_to_cpu(rp[i].ir_u.sp.ir_holemask); -- startidx = find_zero_ino_bit(holemask, 0); -- } else { -- inodes_per_chunk = XFS_INODES_PER_CHUNK; -- freecount = be32_to_cpu(rp[i].ir_u.f.ir_freecount); -- holemask = 0; -- startidx = 0; -- } -- -- /* For each allocated chunk, look at each inode. */ -- endidx = find_one_ino_bit(holemask, startidx); -- do { -- rino = agino + startidx; -- cblocks = (endidx - startidx) >> -- mp->m_sb.sb_inopblog; -- -- /* Check the sparse chunk alignment */ -- if (sparse && -- (XFS_INO_TO_AGBNO(mp, rino) % -- mp->m_sb.sb_spino_align)) { -- dbprintf(_("incorrect chunk %u/%u " -- "alignment in inobt block " -+ icount += XFS_INODES_PER_CHUNK; -+ agicount += XFS_INODES_PER_CHUNK; -+ ifree += be32_to_cpu(rp[i].ir_u.f.ir_freecount); -+ agifreecount += be32_to_cpu(rp[i].ir_u.f.ir_freecount); -+ push_cur(); -+ set_cur(&typtab[TYP_INODE], -+ XFS_AGB_TO_DADDR(mp, seqno, -+ XFS_AGINO_TO_AGBNO(mp, agino)), -+ (int)XFS_FSB_TO_BB(mp, mp->m_ialloc_blks), -+ DB_RING_IGN, NULL); -+ if (iocur_top->data == NULL) { -+ if (!sflag) -+ dbprintf(_("can't read inode block " - "%u/%u\n"), -- seqno, rino, seqno, bno); -- error++; -- } -- -- /* Check the block map */ -- set_dbmap(seqno, XFS_AGINO_TO_AGBNO(mp, rino), -- cblocks, DBM_INODE, seqno, bno); -- -- push_cur(); -- set_cur(&typtab[TYP_INODE], -- XFS_AGB_TO_DADDR(mp, seqno, -- XFS_AGINO_TO_AGBNO(mp, rino)), -- (int)XFS_FSB_TO_BB(mp, cblocks), -- DB_RING_IGN, NULL); -- if (iocur_top->data == NULL) { -- if (!sflag) -- dbprintf(_("can't read inode block " -- "%u/%u\n"), -- seqno, -- XFS_AGINO_TO_AGBNO(mp, agino)); -- error++; -- pop_cur(); -- continue; -- } -- -- /* Examine each inode in this chunk */ -- for (j = startidx; j < endidx; j++) { -- if (ino_issparse(&rp[i], j)) -- continue; -- isfree = XFS_INOBT_IS_FREE_DISK(&rp[i], j); -- if (isfree) -- nfree++; -- process_inode(agf, agino + j, -- (xfs_dinode_t *)((char *)iocur_top->data + ((j - startidx) << mp->m_sb.sb_inodelog)), -- isfree); -- } -+ seqno, -+ XFS_AGINO_TO_AGBNO(mp, agino)); -+ error++; - pop_cur(); -- -- startidx = find_zero_ino_bit(holemask, endidx); -- endidx = find_one_ino_bit(holemask, startidx); -- } while (endidx < XFS_INODES_PER_CHUNK); -- icount += inodes_per_chunk; -- agicount += inodes_per_chunk; -- ifree += freecount; -- agifreecount += freecount; -- -- if (nfree != freecount) { -+ continue; -+ } -+ for (j = 0, nfree = 0; j < XFS_INODES_PER_CHUNK; j++) { -+ isfree = XFS_INOBT_IS_FREE_DISK(&rp[i], j); -+ if (isfree) -+ nfree++; -+ process_inode(agf, agino + j, -+ (xfs_dinode_t *)((char *)iocur_top->data + ((off + j) << mp->m_sb.sb_inodelog)), -+ isfree); -+ } -+ if (nfree != be32_to_cpu(rp[i].ir_u.f.ir_freecount)) { - if (!sflag) - dbprintf(_("ir_freecount/free mismatch, " - "inode chunk %u/%u, freecount " - "%d nfree %d\n"), - seqno, agino, -- freecount, nfree); -+ be32_to_cpu(rp[i].ir_u.f.ir_freecount), nfree); - error++; - } -+ pop_cur(); - } - return; - } -@@ -4543,11 +4439,6 @@ scanfunc_fino( - int off; - xfs_inobt_ptr_t *pp; - struct xfs_inobt_rec *rp; -- bool sparse, crc; -- int startidx, endidx; -- __u16 holemask; -- xfs_agino_t rino; -- xfs_extlen_t cblocks; - - if (be32_to_cpu(block->bb_magic) != XFS_FIBT_MAGIC && - be32_to_cpu(block->bb_magic) != XFS_FIBT_CRC_MAGIC) { -@@ -4575,63 +4466,21 @@ scanfunc_fino( - return; - } - rp = XFS_INOBT_REC_ADDR(mp, block, 1); -- sparse = xfs_sb_version_hassparseinodes(&mp->m_sb); -- crc = xfs_sb_version_hascrc(&mp->m_sb); - for (i = 0; i < be16_to_cpu(block->bb_numrecs); i++) { -- /* First let's look at the inode chunk alignment */ - agino = be32_to_cpu(rp[i].ir_startino); - off = XFS_INO_TO_OFFSET(mp, agino); -- if (off == 0 && -- (sbversion & XFS_SB_VERSION_ALIGNBIT) && -- mp->m_sb.sb_inoalignmt && -- (XFS_INO_TO_AGBNO(mp, agino) % -- mp->m_sb.sb_inoalignmt)) { -- if (sparse || crc) { -- dbprintf(_("incorrect record %u/%u " -- "alignment in finobt block " -- "%u/%u\n"), -- seqno, agino, seqno, bno); -- error++; -- } else -+ if (off == 0) { -+ if ((sbversion & XFS_SB_VERSION_ALIGNBIT) && -+ mp->m_sb.sb_inoalignmt && -+ (XFS_INO_TO_AGBNO(mp, agino) % -+ mp->m_sb.sb_inoalignmt)) - sbversion &= ~XFS_SB_VERSION_ALIGNBIT; -+ check_set_dbmap(seqno, XFS_AGINO_TO_AGBNO(mp, agino), -+ (xfs_extlen_t)MAX(1, -+ XFS_INODES_PER_CHUNK >> -+ mp->m_sb.sb_inopblog), -+ DBM_INODE, DBM_INODE, seqno, bno); - } -- -- /* Move on to examining the inode chunks */ -- if (sparse) { -- holemask = be16_to_cpu(rp[i].ir_u.sp.ir_holemask); -- startidx = find_zero_ino_bit(holemask, 0); -- } else { -- holemask = 0; -- startidx = 0; -- } -- -- /* For each allocated chunk... */ -- endidx = find_one_ino_bit(holemask, startidx); -- do { -- rino = agino + startidx; -- cblocks = (endidx - startidx) >> -- mp->m_sb.sb_inopblog; -- -- /* Check the sparse chunk alignment */ -- if (sparse && -- (XFS_INO_TO_AGBNO(mp, rino) % -- mp->m_sb.sb_spino_align)) { -- dbprintf(_("incorrect chunk %u/%u " -- "alignment in finobt block " -- "%u/%u\n"), -- seqno, rino, seqno, bno); -- error++; -- } -- -- /* Check the block map */ -- check_set_dbmap(seqno, -- XFS_AGINO_TO_AGBNO(mp, rino), -- cblocks, DBM_INODE, DBM_INODE, -- seqno, bno); -- -- startidx = find_zero_ino_bit(holemask, endidx); -- endidx = find_one_ino_bit(holemask, startidx); -- } while (endidx < XFS_INODES_PER_CHUNK); - } - return; - } diff --git a/xfsprogs-4.5.0-xfs_repair-exit-value-memory.patch b/xfsprogs-4.5.0-xfs_repair-exit-value-memory.patch deleted file mode 100644 index 9ac9dcefa6ebf8928bb702e6133a1f70ea0a531c..0000000000000000000000000000000000000000 --- a/xfsprogs-4.5.0-xfs_repair-exit-value-memory.patch +++ /dev/null @@ -1,58 +0,0 @@ -xfs_repair: don't mark the fs dirty just because memory possibly be low - - - -When I run "xfs_repair -n" on a 500T device with 16G memory, -xfs_repair print warning as below: - - Memory available for repair (11798MB) may not be sufficient. - At least 64048MB is needed to repair this filesystem efficiently - If repair fails due to lack of memory, please - turn prefetching off (-P) to reduce the memory footprint. - -And it return 1 at last. But xfs_repair didn't hit any error, it -just feel the memory maybe too low(not real), then return error. -There is no reason to mark the fs dirty just because it thinks it -might *possibly* be low on memory. - -do_warn() will set fs_is_dirty=1, if we only want to print warning -message(not real failure), turn to use do_log() will be better. - -Signed-off-by: Zorro Lang ---- - repair/xfs_repair.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/repair/xfs_repair.c b/repair/xfs_repair.c -index 9d91f2d..bbf0edc 100644 ---- a/repair/xfs_repair.c -+++ b/repair/xfs_repair.c -@@ -851,16 +851,16 @@ main(int argc, char **argv) - "with the -m option. Please increase it to at least %lu.\n"), - mem_used / 1024); - } -- do_warn( -+ do_log( - _("Memory available for repair (%luMB) may not be sufficient.\n" - "At least %luMB is needed to repair this filesystem efficiently\n" - "If repair fails due to lack of memory, please\n"), - max_mem / 1024, mem_used / 1024); - if (do_prefetch) -- do_warn( -+ do_log( - _("turn prefetching off (-P) to reduce the memory footprint.\n")); - else -- do_warn( -+ do_log( - _("increase system RAM and/or swap space to at least %luMB.\n"), - mem_used * 2 / 1024); - --- -2.5.5 - -_______________________________________________ -xfs mailing list -xfs@oss.sgi.com -http://oss.sgi.com/mailman/listinfo/xfs - - diff --git a/xfsprogs-4.5.0-xfs_repair-quota-inodes.patch b/xfsprogs-4.5.0-xfs_repair-quota-inodes.patch deleted file mode 100644 index be8e561b7cf84c8168d1d0a149df105a5a08bc67..0000000000000000000000000000000000000000 --- a/xfsprogs-4.5.0-xfs_repair-quota-inodes.patch +++ /dev/null @@ -1,95 +0,0 @@ -[PATCH] xfs_repair: don't call xfs_sb_quota_from_disk twice - -kernel commit 5ef828c4 -xfs: avoid false quotacheck after unclean shutdown - -made xfs_sb_from_disk() also call xfs_sb_quota_from_disk -by default. - -However, when this was merged to libxfs, existing separate -calls to libxfs_sb_quota_from_disk remained, and calling it -twice in a row on a V4 superblock leads to issues, because: - - - if (sbp->sb_qflags & XFS_PQUOTA_ACCT) { -... - sbp->sb_pquotino = sbp->sb_gquotino; - sbp->sb_gquotino = NULLFSINO; - -and after the second call, we have set both pquotino and gquotino -to NULLFSINO. - -Fix this by making it safe to call twice, and also remove the extra -calls to libxfs_sb_quota_from_disk. - -This is only spotted when running xfstests with "-m crc=0" because -the sb_from_disk change came about after V5 became default, and -the above behavior only exists on a V4 superblock. - -Reported-by: Eryu Guan -Signed-off-by: Eric Sandeen ---- - - -diff --git a/libxfs/xfs_sb.c b/libxfs/xfs_sb.c -index 45db6ae..44f3e3e 100644 ---- a/libxfs/xfs_sb.c -+++ b/libxfs/xfs_sb.c -@@ -316,13 +316,16 @@ xfs_sb_quota_from_disk(struct xfs_sb *sbp) - XFS_PQUOTA_CHKD : XFS_GQUOTA_CHKD; - sbp->sb_qflags &= ~(XFS_OQUOTA_ENFD | XFS_OQUOTA_CHKD); - -- if (sbp->sb_qflags & XFS_PQUOTA_ACCT) { -+ if (sbp->sb_qflags & XFS_PQUOTA_ACCT && -+ sbp->sb_gquotino != NULLFSINO) { - /* - * In older version of superblock, on-disk superblock only - * has sb_gquotino, and in-core superblock has both sb_gquotino - * and sb_pquotino. But, only one of them is supported at any - * point of time. So, if PQUOTA is set in disk superblock, -- * copy over sb_gquotino to sb_pquotino. -+ * copy over sb_gquotino to sb_pquotino. The NULLFSINO test -+ * above is to make sure we don't do this twice and wipe them -+ * both out! - */ - sbp->sb_pquotino = sbp->sb_gquotino; - sbp->sb_gquotino = NULLFSINO; -diff --git a/repair/sb.c b/repair/sb.c -index 3965953..8087242 100644 ---- a/repair/sb.c -+++ b/repair/sb.c -@@ -155,7 +155,6 @@ __find_secondary_sb( - for (i = 0; !done && i < bsize; i += BBSIZE) { - c_bufsb = (char *)sb + i; - libxfs_sb_from_disk(&bufsb, (xfs_dsb_t *)c_bufsb); -- libxfs_sb_quota_from_disk(&bufsb); - - if (verify_sb(c_bufsb, &bufsb, 0) != XR_OK) - continue; -@@ -568,7 +567,6 @@ get_sb(xfs_sb_t *sbp, xfs_off_t off, int size, xfs_agnumber_t agno) - do_error("%s\n", strerror(error)); - } - libxfs_sb_from_disk(sbp, buf); -- libxfs_sb_quota_from_disk(sbp); - - rval = verify_sb((char *)buf, sbp, agno == 0); - free(buf); -diff --git a/repair/scan.c b/repair/scan.c -index 964ff06..366ce16 100644 ---- a/repair/scan.c -+++ b/repair/scan.c -@@ -1622,7 +1622,6 @@ scan_ag( - goto out_free_sb; - } - libxfs_sb_from_disk(sb, XFS_BUF_TO_SBP(sbbuf)); -- libxfs_sb_quota_from_disk(sb); - - agfbuf = libxfs_readbuf(mp->m_dev, - XFS_AG_DADDR(mp, agno, XFS_AGF_DADDR(mp)), - -_______________________________________________ -xfs mailing list -xfs@oss.sgi.com -http://oss.sgi.com/mailman/listinfo/xfs - - diff --git a/xfsprogs-4.5.0-xfs_repair-rtino-version.patch b/xfsprogs-4.5.0-xfs_repair-rtino-version.patch deleted file mode 100644 index ec5598415d5e95246c24a96d4dddbd5c5d6f7f27..0000000000000000000000000000000000000000 --- a/xfsprogs-4.5.0-xfs_repair-rtino-version.patch +++ /dev/null @@ -1,52 +0,0 @@ -commit 643f6acc4bb2d799bebd54c973949c1a90eb26a3 -Author: Eric Sandeen -Date: Tue Jun 21 12:55:15 2016 +1000 - - xfs_repair: set rsumino version to 2 - - If we run xfs/033 with "-m crc=0", the test fails with a repair - output difference: - - Phase 7 - verify and correct link counts... - +resetting inode INO nlinks from 0 to 1 - done - - This is because when we zero out the realtime summary inode and - rebuild it, we set its version to 1, then set its ip->i_d.di_nlink - to 1. This is a little odd, because v1 inodes store their link - count in di_onlink... - - Then, later in repair we call xfs_inode_from_disk(), which sees the - version one inode, and converts it to version 2 in part by copying - di_onlink to di_nlink. But we never *set* di_onlink, so di_nlink - gets reset to zero, and this error is discovered later in repair. - - Interestingly, mk_rbmino() was changed in 138659f1 to set version 2; - it looks like mk_rsumino was just missed. - - Signed-off-by: Eric Sandeen - Reviewed-by: Dave Chinner - Signed-off-by: Dave Chinner - -Index: xfsprogs-4.5.0/repair/phase6.c -=================================================================== ---- xfsprogs-4.5.0.orig/repair/phase6.c -+++ xfsprogs-4.5.0/repair/phase6.c -@@ -507,7 +507,7 @@ mk_rbmino(xfs_mount_t *mp) - error); - } - -- vers = xfs_sb_version_hascrc(&mp->m_sb) ? 3 : 1; -+ vers = xfs_sb_version_hascrc(&mp->m_sb) ? 3 : 2; - memset(&ip->i_d, 0, xfs_icdinode_size(vers)); - - ip->i_d.di_magic = XFS_DINODE_MAGIC; -@@ -766,7 +766,7 @@ mk_rsumino(xfs_mount_t *mp) - error); - } - -- vers = xfs_sb_version_hascrc(&mp->m_sb) ? 3 : 1; -+ vers = xfs_sb_version_hascrc(&mp->m_sb) ? 3 : 2; - memset(&ip->i_d, 0, xfs_icdinode_size(vers)); - - ip->i_d.di_magic = XFS_DINODE_MAGIC; diff --git a/xfsprogs-4.5.0.tar.gz b/xfsprogs-4.5.0.tar.gz deleted file mode 100644 index 801eaa7983d0f8566ceb75473c6324f109b427e7..0000000000000000000000000000000000000000 Binary files a/xfsprogs-4.5.0.tar.gz and /dev/null differ diff --git a/xfsprogs-4.7.0-defang-frag.patch b/xfsprogs-4.7.0-defang-frag.patch deleted file mode 100644 index edf75605af9c15dbdaf9d1d64081698d6862a6c0..0000000000000000000000000000000000000000 --- a/xfsprogs-4.7.0-defang-frag.patch +++ /dev/null @@ -1,34 +0,0 @@ -commit 027e6efd2b432232562d726f14702f79792b38cb -Author: Eric Sandeen -Date: Mon May 30 10:35:56 2016 +1000 - - xfs_db: defang frag command - - Too many people freak out about this fictitious "fragmentation - factor." As shown in the fact, it is largely meaningless, because - the number approaches 100% extremely quickly for just a few - extents per file. - - I thought about removing it altogether, but perhaps a note - about its uselessness, and a more soothing metric (avg extents - per file) might be useful. - - Signed-off-by: Eric Sandeen - Reviewed-by: Christoph Hellwig - Signed-off-by: Dave Chinner - -Index: xfsprogs-4.5.0/db/frag.c -=================================================================== ---- xfsprogs-4.5.0.orig/db/frag.c -+++ xfsprogs-4.5.0/db/frag.c -@@ -172,6 +172,10 @@ frag_f( - answer = 0.0; - dbprintf(_("actual %llu, ideal %llu, fragmentation factor %.2f%%\n"), - extcount_actual, extcount_ideal, answer); -+ dbprintf(_("Note, this number is largely meaningless.\n")); -+ answer = (double)extcount_actual / (double)extcount_ideal; -+ dbprintf(_("Files on this filesystem average %.2f extents per file\n"), -+ answer); - return 0; - } - diff --git a/xfsprogs-4.7.0-fix-agf-limit-errors.patch b/xfsprogs-4.7.0-fix-agf-limit-errors.patch deleted file mode 100644 index 1273d56264acd40c1c9aff466b53678bd31037b1..0000000000000000000000000000000000000000 --- a/xfsprogs-4.7.0-fix-agf-limit-errors.patch +++ /dev/null @@ -1,41 +0,0 @@ -commit 6aa32b47197828b6d014a6faf9c7450bbc16e66f -Author: Eric Sandeen -Date: Tue May 10 17:16:06 2016 +1000 - - xfs_repair: fix agf limit error messages - - Today we see errors like: - - "fllast 118 in agf 94 too large (max = 118)" - - which makes no sense. - - If we are erroring on X >= Y, Y is clearly not the maximum allowable - value. - - Signed-off-by: Eric Sandeen - Reviewed-by: Dave Chinner - Signed-off-by: Dave Chinner - -Index: xfsprogs-4.5.0/repair/agheader.c -=================================================================== ---- xfsprogs-4.5.0.orig/repair/agheader.c -+++ xfsprogs-4.5.0/repair/agheader.c -@@ -94,7 +94,7 @@ verify_set_agf(xfs_mount_t *mp, xfs_agf_ - if (be32_to_cpu(agf->agf_flfirst) >= XFS_AGFL_SIZE(mp)) { - do_warn(_("flfirst %d in agf %d too large (max = %zu)\n"), - be32_to_cpu(agf->agf_flfirst), -- i, XFS_AGFL_SIZE(mp)); -+ i, XFS_AGFL_SIZE(mp) - 1); - if (!no_modify) - agf->agf_flfirst = cpu_to_be32(0); - } -@@ -102,7 +102,7 @@ verify_set_agf(xfs_mount_t *mp, xfs_agf_ - if (be32_to_cpu(agf->agf_fllast) >= XFS_AGFL_SIZE(mp)) { - do_warn(_("fllast %d in agf %d too large (max = %zu)\n"), - be32_to_cpu(agf->agf_fllast), -- i, XFS_AGFL_SIZE(mp)); -+ i, XFS_AGFL_SIZE(mp) - 1); - if (!no_modify) - agf->agf_fllast = cpu_to_be32(0); - } diff --git a/xfsprogs-4.7.0-quota-fixes.patch b/xfsprogs-4.7.0-quota-fixes.patch deleted file mode 100644 index f85c6a58577990a353cad5d399e9d360a9adf924..0000000000000000000000000000000000000000 --- a/xfsprogs-4.7.0-quota-fixes.patch +++ /dev/null @@ -1,327 +0,0 @@ -commit 52e81d72272a00c692cb6fdaa49df8b59a539c50 -Author: Zorro Lang -Date: Thu Aug 4 11:29:49 2016 +1000 - - xfs_quota: fall back silently if XFS_GETNEXTQUOTA fails - - After XFS_GETNEXTQUOTA feature has been merged into linux kernel and - xfsprogs, xfs_quota use Q_XGETNEXTQUOTA for report and dump, and - fall back to old XFS_GETQUOTA ioctl if XFS_GETNEXTQUOTA fails. - - But when XFS_GETNEXTQUOTA fails, xfs_quota print a warning as - "XFS_GETQUOTA: Invalid argument". That's due to kernel can't - recognize XFS_GETNEXTQUOTA ioctl and return EINVAL. At this time, - the warning is helpless, xfs_quota just need to fall back. - - Signed-off-by: Zorro Lang - Reviewed-by: Dave Chinner - Signed-off-by: Dave Chinner - -commit f61be1b4401e7653b2bdcd3aac2130a4da10faa5 -Author: Eric Sandeen -Date: Fri Jun 3 11:04:15 2016 +1000 - - xfs_quota: only round up timer reporting > 1 day - - I was too hasty with: - - d1fe6ff xfs_quota: remove extra 30 seconds from time limit reporting - - The point of that extra 30s, turns out, was to allow the user - to set a limit, query it, and get back what they just set, if - it is set to more than a day. - - Without it, if we set a grace period to i.e. 3 days, and query it - 1 second later, the rounding in the time_to_string function returns - "2 days" not "3 days" as it did before, because we are at - 2 days 23:59:59 and it essentially applies a floor() for - brevity. I guess this was confusing. - - (I've run into this same conundrum on my stove digital timer; - if you set it to 10m, it blinks "10" at you twice so that you - know what you set, then quickly flips to 9 as it counts down). - - In some cases, however (and this is the case that prompted the - prior patch), we display a full "XYZ days hh:mm:ss" - we do this - if the verbose flag is set, or if the timer is less than one day. - In these cases, we should not add the 30s, because we are showing - full time resolution to the user. - - Reported-by: Zorro Lang - Signed-off-by: Eric Sandeen - Reviewed-by: Zorro Lang - Reviewed-by: Christoph Hellwig - Signed-off-by: Dave Chinner - -commit a8b6f5274724ea2413d40f452f58874a36b78499 -Author: Eric Sandeen -Date: Mon May 30 12:21:31 2016 +1000 - - xfs_quota: check report_mount return value - - The new call to report_mount doesn't check the return value - like every other caller does... - - Returning 1 means it printed something; if the terse flag - is used and there is no usage, nothing gets printed. - If we set the NO_HEADER_FLAG anyway, then we won't see - the header for subsequent entries as we expect. - - For example, project ID 0 has no usage in this case: - - # xfs_quota -x -c "report -a" /mnt/test - Project quota on /mnt/test (/dev/sdb1) - Blocks - Project ID Used Soft Hard Warn/Grace - ---------- -------------------------------------------------- - #0 0 0 0 00 [--------] - project 2048 4 4 00 [--none--] - - So using the terse flag results in no header when it prints - projects with usage: - - # xfs_quota -x -c "report -t -a" /mnt/test - project 2048 4 4 00 [--none--] - - With this fix it prints the header as expected: - - # xfs_quota -x -c "report -t -a" /mnt/test - Project quota on /mnt/test (/dev/sdb1) - Blocks - Project ID Used Soft Hard Warn/Grace - ---------- -------------------------------------------------- - project 2048 4 4 00 [--none--] - - Addresses-Coverity-Id: 1361552 - Signed-off-by: Eric Sandeen - Reviewed-by: Zorro Lang - Reviewed-by: Christoph Hellwig - Signed-off-by: Dave Chinner - -commit 3d607a1134c55849952412d64e7658fb00312705 -Author: Zorro Lang -Date: Tue May 10 17:16:06 2016 +1000 - - xfs_quota: print quota id number if the name can't be found - - When use GETNEXTQUOTA ioctl to report project quota, it always - report an unexpected quota: - - (null) 0 0 0 00 [--------] - - The ID 0 store the default quota, even if no one set default quota, - it still have quota accounting, but not enforced. So GETNEXTQUOTA - can find and report this undefined quota. - - From this problem, I thought if others' quota name miss, (null) will - be printed too. e.g. - - # xfs_quota -xc "limit -u bsoft=300m bhard=400m test" $mnt - # xfs_quota -xc "report -u" $mnt - User ID Used Soft Hard Warn/Grace - ---------- -------------------------------------------------- - root 0 0 0 00 [--------] - test 0 307200 409600 00 [--------] - # userdel -r test - # xfs_quota -xc "report -u" $mnt - User ID Used Soft Hard Warn/Grace - ---------- -------------------------------------------------- - root 0 0 0 00 [--------] - (null) 0 307200 409600 00 [--------] - - So this problem same with above id 0's problem. To deal with this, - this patch will print id number if the name can't be found. - - However, if we use the old GETQUOTA ioctl, it won't print project id - 0 quota information if it's not defined. That's different with - GETNEXTQUOTA. For keep consistent, this patch also print project id - 0 when use old GETQUOTA. - - Signed-off-by: Zorro Lang - Reviewed-by: Eric Sandeen - Reviewed-by: Christoph Hellwig - Signed-off-by: Dave Chinner - -commit cef37d5a0ef68351ea97518249b0c91746e700e3 -Author: Zorro Lang -Date: Tue May 10 17:16:06 2016 +1000 - - xfs_quota: fully support users and groups beginning with digits - - A normal user or group name allow beginning with digits, but xfs_quota - can't create a limit for that user or group. The reason is 'strtoul' - function only translate digits at the beginning, it will ignore - letters after digits. - - There's a commit fd537fc50eeade63bbd2a66105f39d04a011a7f5, it try to - fix "xfsprogs: xfs_quota allow user or group names beginning with - digits". But it doesn't effect 'limit' command, so a command likes: - - xfs_quota 'limit .... 12345678-user' xxxx - - will try to create limit for username="12345678", not "12345678-user". - - This patch will fix this problem, and a test case xfs/138 in xfstests - is used to reproduce this bug. - - Signed-off-by: Zorro Lang - Reviewed-by: Eric Sandeen - Signed-off-by: Dave Chinner - -commit 43633a39ef424e9e867b34a5dd3ea6c44508a45c -Author: Eric Sandeen -Date: Wed Feb 17 17:03:02 2016 +1100 - - xfs: wire up Q_XGETNEXTQUOTA / get_nextdqblk - - Source kernel commit 296c24e26ee3af2dbfecb482e6bc9560bd34c455 - - Add code to allow the Q_XGETNEXTQUOTA quotactl to quickly find - all active quotas by examining the quota inode, and skipping - over unallocated or uninitialized regions. - - Userspace can then use this interface rather than i.e. a - getpwent() loop when asked to report all active quotas. - - Signed-off-by: Eric Sandeen - Reviewed-by: Dave Chinner - Signed-off-by: Dave Chinner -Index: xfsprogs-4.5.0/quota/report.c -=================================================================== ---- xfsprogs-4.5.0.orig/quota/report.c -+++ xfsprogs-4.5.0/quota/report.c -@@ -90,8 +90,10 @@ dump_file( - else - cmd = XFS_GETQUOTA; - -+ /* Fall back silently if XFS_GETNEXTQUOTA fails, warn on XFS_GETQUOTA */ - if (xfsquotactl(cmd, dev, type, id, (void *)&d) < 0) { -- if (errno != ENOENT && errno != ENOSYS && errno != ESRCH) -+ if (errno != ENOENT && errno != ENOSYS && errno != ESRCH && -+ cmd == XFS_GETQUOTA) - perror("XFS_GETQUOTA"); - return 0; - } -@@ -347,8 +349,10 @@ report_mount( - else - cmd = XFS_GETQUOTA; - -+ /* Fall back silently if XFS_GETNEXTQUOTA fails, warn on XFS_GETQUOTA*/ - if (xfsquotactl(cmd, dev, type, id, (void *)&d) < 0) { -- if (errno != ENOENT && errno != ENOSYS && errno != ESRCH) -+ if (errno != ENOENT && errno != ENOSYS && errno != ESRCH && -+ cmd == XFS_GETQUOTA) - perror("XFS_GETQUOTA"); - return 0; - } -@@ -389,7 +393,11 @@ report_mount( - name = p->pr_name; - } - } -- fprintf(fp, "%-10s", name); -+ /* If no name is found, print the id #num instead of (null) */ -+ if (name != NULL) -+ fprintf(fp, "%-10s", name); -+ else -+ fprintf(fp, "#%-9u", d.d_id); - } - - if (form & XFS_BLOCK_QUOTA) { -@@ -571,6 +579,16 @@ report_project_mount( - id = oid + 1; - } - } else { -+ if (!getprprid(0)) { -+ /* -+ * Print default project quota, even if projid 0 -+ * isn't defined -+ */ -+ if (report_mount(fp, 0, NULL, NULL, -+ form, XFS_PROJ_QUOTA, mount, flags)) -+ flags |= NO_HEADER_FLAG; -+ } -+ - setprent(); - while ((p = getprent()) != NULL) { - if (report_mount(fp, p->pr_prid, p->pr_name, NULL, -Index: xfsprogs-4.5.0/quota/util.c -=================================================================== ---- xfsprogs-4.5.0.orig/quota/util.c -+++ xfsprogs-4.5.0/quota/util.c -@@ -43,6 +43,18 @@ time_to_string( - timer = MAX(origin - now, 0); - } - -+ /* -+ * If we are in verbose mode, or if less than a day remains, we -+ * will show "X days hh:mm:ss" so the user knows the exact timer status. -+ * -+ * Otherwise, we round down to the nearest day - so we add 30s here -+ * such that setting and reporting a limit in rapid succession will -+ * show the limit which was just set, rather than immediately reporting -+ * one day less. -+ */ -+ if ((timer > SECONDS_IN_A_DAY) && !(flags & VERBOSE_FLAG)) -+ timer += 30; /* seconds */ -+ - days = timer / SECONDS_IN_A_DAY; - if (days) - timer %= SECONDS_IN_A_DAY; -Index: xfsprogs-4.5.0/man/man8/xfs_quota.8 -=================================================================== ---- xfsprogs-4.5.0.orig/man/man8/xfs_quota.8 -+++ xfsprogs-4.5.0/man/man8/xfs_quota.8 -@@ -357,7 +357,9 @@ option outputs the report to - .I file - instead of stdout. The - .B \-a --option reports on all filesystems. The -+option reports on all filesystems. By default, outputs the name of -+the user/group/project. If no name is defined for a given ID, outputs -+the numeric ID instead. The - .B \-n - option outputs the numeric ID instead of the name. The - .B \-L -Index: xfsprogs-4.5.0/libxcmd/input.c -=================================================================== ---- xfsprogs-4.5.0.orig/libxcmd/input.c -+++ xfsprogs-4.5.0/libxcmd/input.c -@@ -366,7 +366,7 @@ uid_from_string( - char *sp; - - uid_long = strtoul(user, &sp, 10); -- if (sp != user) { -+ if (sp != user && *sp == '\0') { - if ((uid_long == ULONG_MAX && errno == ERANGE) - || (uid_long > (uid_t)-1)) - return -1; -@@ -387,7 +387,7 @@ gid_from_string( - char *sp; - - gid_long = strtoul(group, &sp, 10); -- if (sp != group) { -+ if (sp != group && *sp == '\0') { - if ((gid_long == ULONG_MAX && errno == ERANGE) - || (gid_long > (gid_t)-1)) - return -1; -Index: xfsprogs-4.5.0/libxfs/xfs_quota_defs.h -=================================================================== ---- xfsprogs-4.5.0.orig/libxfs/xfs_quota_defs.h -+++ xfsprogs-4.5.0/libxfs/xfs_quota_defs.h -@@ -37,7 +37,7 @@ typedef __uint16_t xfs_qwarncnt_t; - #define XFS_DQ_PROJ 0x0002 /* project quota */ - #define XFS_DQ_GROUP 0x0004 /* a group quota */ - #define XFS_DQ_DIRTY 0x0008 /* dquot is dirty */ --#define XFS_DQ_FREEING 0x0010 /* dquot is beeing torn down */ -+#define XFS_DQ_FREEING 0x0010 /* dquot is being torn down */ - - #define XFS_DQ_ALLTYPES (XFS_DQ_USER|XFS_DQ_PROJ|XFS_DQ_GROUP) - -@@ -116,6 +116,7 @@ typedef __uint16_t xfs_qwarncnt_t; - #define XFS_QMOPT_DQREPAIR 0x0001000 /* repair dquot if damaged */ - #define XFS_QMOPT_GQUOTA 0x0002000 /* group dquot requested */ - #define XFS_QMOPT_ENOSPC 0x0004000 /* enospc instead of edquot (prj) */ -+#define XFS_QMOPT_DQNEXT 0x0008000 /* return next dquot >= this ID */ - - /* - * flags to xfs_trans_mod_dquot to indicate which field needs to be diff --git a/xfsprogs-4.8.0-mkfs.xfs-clarify-ftype-defaults-in-manpage.patch b/xfsprogs-4.8.0-mkfs.xfs-clarify-ftype-defaults-in-manpage.patch deleted file mode 100644 index 0a7f2dcadb9934fa4f00b4ae2959c9aa9e19a8fc..0000000000000000000000000000000000000000 --- a/xfsprogs-4.8.0-mkfs.xfs-clarify-ftype-defaults-in-manpage.patch +++ /dev/null @@ -1,40 +0,0 @@ -From f10a5ab0b3a4cb8a7e17a4935fb33d283c3dd31f Mon Sep 17 00:00:00 2001 -From: Eric Sandeen -Date: Tue, 20 Sep 2016 08:48:54 +1000 -Subject: [PATCH] mkfs.xfs: clarify ftype defaults in manpage - -When CRCs were made default, a few leftovers related to its -prior non-default status remained in the manpage, in the ftype -section. Clean those up, stating the correct default for this -feature. - -Reported-by: Chris Murphy -Signed-off-by: Eric Sandeen -Reviewed-by: Dave Chinner -Signed-off-by: Dave Chinner ---- - man/man8/mkfs.xfs.8 | 10 ++++------ - 1 file changed, 4 insertions(+), 6 deletions(-) - -Index: xfsprogs-rhel7.5/man/man8/mkfs.xfs.8 -=================================================================== ---- xfsprogs-rhel7.5.orig/man/man8/mkfs.xfs.8 -+++ xfsprogs-rhel7.5/man/man8/mkfs.xfs.8 -@@ -587,13 +587,11 @@ do not need to look up the inode to dete - - The - .I value --is either 0 or 1, with 1 signifiying that filetype information --will be stored in the directory structure. The default value is 0. -+is either 0 or 1, with 1 signifying that filetype information -+will be stored in the directory structure. The default value is 1. - --When CRCs are enabled via --.B \-m crc=1, --the ftype functionality is always enabled. This feature can not be turned --off for such filesystem configurations. -+When CRCs are enabled (the default), the ftype functionality is always -+enabled, and cannot be turned off. - .IP - .RE - .TP diff --git a/xfsprogs-4.8.0-replace-ustat.patch b/xfsprogs-4.8.0-replace-ustat.patch deleted file mode 100644 index bcecfbc395fd98ab7682f213927a83de78dc3f87..0000000000000000000000000000000000000000 --- a/xfsprogs-4.8.0-replace-ustat.patch +++ /dev/null @@ -1,77 +0,0 @@ -commit 4e7a824f6b34dbe0dd2e2a3870891130b937f327 -Author: Felix Janda -Date: Thu Sep 8 10:22:28 2016 +1000 - - libxfs/linux.c: Replace use of ustat by stat - - ustat has been used to check whether a device file is mounted. - The function is deprecated and not supported by uclibc and musl. - Now do the check using the *mntent functions. - - Based on patch by Natanael Copa . - - Signed-off-by: Felix Janda - Reviewed-by: Eric Sandeen - Signed-off-by: Dave Chinner - -diff --git a/libxfs/linux.c b/libxfs/linux.c -index c9f2baf..44bc1f9 100644 ---- a/libxfs/linux.c -+++ b/libxfs/linux.c -@@ -16,11 +16,8 @@ - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - --#define ustat __kernel_ustat - #include - #include --#undef ustat --#include - #include - #include - #include -@@ -51,9 +48,10 @@ static int max_block_alignment; - int - platform_check_ismounted(char *name, char *block, struct stat64 *s, int verbose) - { -- /* Pad ust; pre-2.6.28 linux copies out too much in 32bit compat mode */ -- struct ustat ust[2]; -- struct stat64 st; -+ FILE *f; -+ struct stat64 st, mst; -+ struct mntent *mnt; -+ char mounts[MAXPATHLEN]; - - if (!s) { - if (stat64(block, &st) < 0) -@@ -63,14 +61,27 @@ platform_check_ismounted(char *name, char *block, struct stat64 *s, int verbose) - s = &st; - } - -- if (ustat(s->st_rdev, ust) >= 0) { -+ strcpy(mounts, (!access(PROC_MOUNTED, R_OK)) ? PROC_MOUNTED : MOUNTED); -+ if ((f = setmntent(mounts, "r")) == NULL) { -+ fprintf(stderr, -+ _("%s: %s possibly contains a mounted filesystem\n"), -+ progname, name); -+ return 1; -+ } -+ while ((mnt = getmntent(f)) != NULL) { -+ if (stat64(mnt->mnt_dir, &mst) < 0) -+ continue; -+ if (mst.st_dev != s->st_rdev) -+ continue; -+ - if (verbose) - fprintf(stderr, - _("%s: %s contains a mounted filesystem\n"), - progname, name); -- return 1; -+ break; - } -- return 0; -+ endmntent(f); -+ return mnt != NULL; - } - - int diff --git a/xfsprogs-4.8.0-xfs_copy-UUID.patch b/xfsprogs-4.8.0-xfs_copy-UUID.patch deleted file mode 100644 index 7c2284304284ce299916c783cfd8623448aa273f..0000000000000000000000000000000000000000 --- a/xfsprogs-4.8.0-xfs_copy-UUID.patch +++ /dev/null @@ -1,79 +0,0 @@ -commit cbca895541facb3a1a00fd0fe6614301a64c0e3a -Author: Eric Sandeen -Date: Fri Sep 23 09:16:52 2016 +1000 - - xfs_copy: Fix meta UUID handling on multiple copies - - Zorro reported that when making multiple copies of a V5 - filesystem with xfs_copy while generating new UUIDs, all - but the first copy were corrupt. - - Upon inspection, the corruption was related to incorrect UUIDs; - the original UUID, as stamped into every metadata structure, - was not preserved in the sb_meta_uuid field of the superblock - on any but the first copy. - - This happened because sb_update_uuid was using the UUID present in - the ag_hdr structure as the unchanging meta-uuid which is to match - existing structures, but it also /updates/ that UUID with the - new identifying UUID present in tcarg. So the newly-generated - UUIDs moved transitively from tcarg->uuid to ag_hdr->xfs_sb->sb_uuid - to ag_hdr->xfs_sb->sb_meta_uuid each time the function got called. - - Fix this by looking instead to the unchanging, original UUID - present in the xfs_sb_t we are given, which reflects the original - filesystem's metadata UUID, and copy /that/ UUID into each target - filesystem's meta_uuid field. - - Most of this patch is changing comments and re-ordering tests - to match; the functional change is to simply use the *sb rather - than the *ag_hdr to identify the proper metadata UUID. - - Reported-and-tested-by: Zorro Lang - Signed-off-by: Eric Sandeen - Reviewed-by: Dave Chinner - Signed-off-by: Dave Chinner - -diff --git a/copy/xfs_copy.c b/copy/xfs_copy.c -index 3c8998c..22ded6b 100644 ---- a/copy/xfs_copy.c -+++ b/copy/xfs_copy.c -@@ -494,27 +494,29 @@ write_wbuf(void) - - void - sb_update_uuid( -- xfs_sb_t *sb, -- ag_header_t *ag_hdr, -- thread_args *tcarg) -+ xfs_sb_t *sb, /* Original fs superblock */ -+ ag_header_t *ag_hdr, /* AG hdr to update for this copy */ -+ thread_args *tcarg) /* Args for this thread, with UUID */ - { - /* - * If this filesystem has CRCs, the original UUID is stamped into -- * all metadata. If we are changing the UUID in the copy, we need -- * to copy the original UUID into the meta_uuid slot and set the -- * set the incompat flag if that hasn't already been done. -+ * all metadata. If we don't have an existing meta_uuid field in the -+ * the original filesystem and we are changing the UUID in this copy, -+ * we must copy the original sb_uuid to the sb_meta_uuid slot and set -+ * the incompat flag for the feature on this copy. - */ -- if (!uuid_equal(&tcarg->uuid, &ag_hdr->xfs_sb->sb_uuid) && -- xfs_sb_version_hascrc(sb) && !xfs_sb_version_hasmetauuid(sb)) { -+ if (xfs_sb_version_hascrc(sb) && !xfs_sb_version_hasmetauuid(sb) && -+ !uuid_equal(&tcarg->uuid, &sb->sb_uuid)) { - __be32 feat; - - feat = be32_to_cpu(ag_hdr->xfs_sb->sb_features_incompat); - feat |= XFS_SB_FEAT_INCOMPAT_META_UUID; - ag_hdr->xfs_sb->sb_features_incompat = cpu_to_be32(feat); - platform_uuid_copy(&ag_hdr->xfs_sb->sb_meta_uuid, -- &ag_hdr->xfs_sb->sb_uuid); -+ &sb->sb_uuid); - } - -+ /* Copy the (possibly new) fs-identifier UUID into sb_uuid */ - platform_uuid_copy(&ag_hdr->xfs_sb->sb_uuid, &tcarg->uuid); - - /* We may have changed the UUID, so update the superblock CRC */ diff --git a/xfsprogs-4.8.0-xfs_repair-exit-with-status-2-if-log-dirtiness-is-un.patch b/xfsprogs-4.8.0-xfs_repair-exit-with-status-2-if-log-dirtiness-is-un.patch deleted file mode 100644 index 26ea8123ebd8636cf1a6b2bcf55e93184386b7fc..0000000000000000000000000000000000000000 --- a/xfsprogs-4.8.0-xfs_repair-exit-with-status-2-if-log-dirtiness-is-un.patch +++ /dev/null @@ -1,35 +0,0 @@ -From b04647edea32dbbce0fc12ea6f54a8da706a2265 Mon Sep 17 00:00:00 2001 -From: Eric Sandeen -Date: Mon, 19 Sep 2016 16:01:14 +1000 -Subject: [PATCH] xfs_repair: exit with status 2 if log dirtiness is unknown - -This new case is mostly like the known dirty log case; the log -is corrupt, dirtiness cannot be determined, and a mount/umount -cycle or an xfs_repair -L is required. - -So exit with status 2 here as well. - -Signed-off-by: Eric Sandeen -Reviewed-by: Zorro Lang -Signed-off-by: Dave Chinner ---- - repair/phase2.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -Index: xfsprogs-4.5.0/repair/phase2.c -=================================================================== ---- xfsprogs-4.5.0.orig/repair/phase2.c -+++ xfsprogs-4.5.0/repair/phase2.c -@@ -79,10 +79,11 @@ zero_log( - _("zero_log: cannot find log head/tail (xlog_find_tail=%d)\n"), - error); - if (!no_modify && !zap_log) -- do_error(_( -+ do_warn(_( - "ERROR: The log head and/or tail cannot be discovered. Attempt to mount the\n" - "filesystem to replay the log or use the -L option to destroy the log and\n" - "attempt a repair.\n")); -+ exit(2); - } else { - if (verbose) { - do_log( diff --git a/xfsprogs-4.9-xfs_io-fix-m-option.patch b/xfsprogs-4.9-xfs_io-fix-m-option.patch deleted file mode 100644 index 10bb517c500ddb39b9f3227c1acbe1792f588677..0000000000000000000000000000000000000000 --- a/xfsprogs-4.9-xfs_io-fix-m-option.patch +++ /dev/null @@ -1,49 +0,0 @@ -commit 41c702ce4b2bbea59e49384a90e17c64e46bd3ae -Author: Andreas Gruenbacher -Date: Tue Nov 1 10:38:40 2016 +1100 - - xfs_io: Fix initial -m option - - Like "open -m mode", the initial -m option requires a mode argument. - - Document these options correctly as well. - - Signed-off-by: Andreas Gruenbacher - Reviewed-by: Dave Chinner - Signed-off-by: Dave Chinner - -Index: xfsprogs-4.5.0/io/init.c -=================================================================== ---- xfsprogs-4.5.0.orig/io/init.c -+++ xfsprogs-4.5.0/io/init.c -@@ -32,7 +32,7 @@ void - usage(void) - { - fprintf(stderr, -- _("Usage: %s [-adfmnrRstVx] [-p prog] [-c cmd]... file\n"), -+ _("Usage: %s [-adfnrRstVx] [-m mode] [-p prog] [-c cmd]... file\n"), - progname); - exit(1); - } -@@ -139,7 +139,7 @@ init( - pagesize = getpagesize(); - gettimeofday(&stopwatch, NULL); - -- while ((c = getopt(argc, argv, "ac:dFfmp:nrRstTVx")) != EOF) { -+ while ((c = getopt(argc, argv, "ac:dFfm:p:nrRstTVx")) != EOF) { - switch (c) { - case 'a': - flags |= IO_APPEND; -Index: xfsprogs-4.5.0/io/open.c -=================================================================== ---- xfsprogs-4.5.0.orig/io/open.c -+++ xfsprogs-4.5.0/io/open.c -@@ -759,7 +759,7 @@ open_init(void) - open_cmd.argmin = 0; - open_cmd.argmax = -1; - open_cmd.flags = CMD_NOMAP_OK | CMD_NOFILE_OK | CMD_FOREIGN_OK; -- open_cmd.args = _("[-acdrstxT] [path]"); -+ open_cmd.args = _("[-acdrstxT] [-m mode] [path]"); - open_cmd.oneline = _("open the file specified by path"); - open_cmd.help = open_help; - diff --git a/xfsprogs-4.9.0-junk-attr-leaf-count-zero.patch b/xfsprogs-4.9.0-junk-attr-leaf-count-zero.patch deleted file mode 100644 index 74f05906d1fb449ce9a45931eb630c774ef1d528..0000000000000000000000000000000000000000 --- a/xfsprogs-4.9.0-junk-attr-leaf-count-zero.patch +++ /dev/null @@ -1,50 +0,0 @@ -xfs_repair: junk leaf attribute if count == 0 - -We have recently seen a case where, during log replay, the -attr3 leaf verifier reported corruption when encountering a -leaf attribute with a count of 0 in the header. - -We chalked this up to a transient state when a shortform leaf -was created, the attribute didn't fit, and we promoted the -(empty) attribute to the larger leaf form. - -I've recently been given a metadump of unknown provenance which actually -contains a leaf attribute with count 0 on disk. This causes the -verifier to fire every time xfs_repair is run: - - Metadata corruption detected at xfs_attr3_leaf block 0x480988/0x1000 - -If this 0-count state is detected, we should just junk the leaf, same -as we would do if the count was too high. With this change, we now -remedy the problem: - - Metadata corruption detected at xfs_attr3_leaf block 0x480988/0x1000 - bad attribute count 0 in attr block 0, inode 12587828 - problem with attribute contents in inode 12587828 - clearing inode 12587828 attributes - correcting nblocks for inode 12587828, was 2 - counted 1 - -Signed-off-by: Eric Sandeen -Reviewed-by: Brian Foster ---- - -diff --git a/repair/attr_repair.c b/repair/attr_repair.c -index 40cb5f7..b855a10 100644 ---- a/repair/attr_repair.c -+++ b/repair/attr_repair.c -@@ -593,7 +593,8 @@ process_leaf_attr_block( - stop = xfs_attr3_leaf_hdr_size(leaf); - - /* does the count look sorta valid? */ -- if (leafhdr.count * sizeof(xfs_attr_leaf_entry_t) + stop > -+ if (!leafhdr.count || -+ leafhdr.count * sizeof(xfs_attr_leaf_entry_t) + stop > - mp->m_sb.sb_blocksize) { - do_warn( - _("bad attribute count %d in attr block %u, inode %" PRIu64 "\n"), --- -To unsubscribe from this list: send the line "unsubscribe linux-xfs" in -the body of a message to majordomo@vger.kernel.org -More majordomo info at http://vger.kernel.org/majordomo-info.html - - diff --git a/xfsprogs-5.0.0-xfs_db-metadump-should-handle-symlinks-properly.patch b/xfsprogs-5.0.0-xfs_db-metadump-should-handle-symlinks-properly.patch deleted file mode 100644 index a753717b3f1233e567fa34046eff136c3fb86657..0000000000000000000000000000000000000000 --- a/xfsprogs-5.0.0-xfs_db-metadump-should-handle-symlinks-properly.patch +++ /dev/null @@ -1,105 +0,0 @@ -From 0e81250e5125dc664e1938288e47ff52b1cacbe4 Mon Sep 17 00:00:00 2001 -From: "Darrick J. Wong" -Date: Fri, 26 Apr 2019 15:40:28 -0500 -Subject: [PATCH] xfs_db: metadump should handle symlinks properly - -Remote symlink target blocks are multi-fsb objects on XFS v5 filesystems -because we only write one rmt header per data fork extent. For fs -blocksize >= 2048 we never have more than one block and therefore nobody -noticed, but for blocksize == 1024 this is definitely not true and leads -to metadump spraying error messages about symlink block crc errors. -Therefore, reformulate the symlink metadump into a multi-fsb dump -function. - -Signed-off-by: Darrick J. Wong -Reviewed-by: Eric Sandeen -[sandeen: shrink the map declaration] -Signed-off-by: Eric Sandeen ---- - db/metadump.c | 43 ++++++++++++++++++++++++++++++++++++------- - 1 file changed, 36 insertions(+), 7 deletions(-) - -Index: xfsprogs-4.5.0/db/metadump.c -=================================================================== ---- xfsprogs-4.5.0.orig/db/metadump.c -+++ xfsprogs-4.5.0/db/metadump.c -@@ -1425,11 +1425,34 @@ process_dir_data_block( - } - } - --static void -+static int - process_symlink_block( -- char *block) -+ xfs_fileoff_t o, -+ xfs_fsblock_t s, -+ xfs_filblks_t c, -+ typnm_t btype, -+ xfs_fileoff_t last) - { -- char *link = block; -+ struct bbmap map; -+ char *link; -+ int ret = 0; -+ -+ push_cur(); -+ map.nmaps = 1; -+ map.b[0].bm_bn = XFS_FSB_TO_DADDR(mp, s); -+ map.b[0].bm_len = XFS_FSB_TO_BB(mp, c); -+ set_cur(&typtab[btype], 0, 0, DB_RING_IGN, &map); -+ if (!iocur_top->data) { -+ xfs_agnumber_t agno = XFS_FSB_TO_AGNO(mp, s); -+ xfs_agblock_t agbno = XFS_FSB_TO_AGBNO(mp, s); -+ -+ print_warning("cannot read %s block %u/%u (%llu)", -+ typtab[btype].name, agno, agbno, s); -+ if (stop_on_read_error) -+ ret = -1; -+ goto out_pop; -+ } -+ link = iocur_top->data; - - if (xfs_sb_version_hascrc(&(mp)->m_sb)) - link += sizeof(struct xfs_dsymlink_hdr); -@@ -1447,6 +1470,12 @@ process_symlink_block( - if (zlen < mp->m_sb.sb_blocksize) - memset(link + linklen, 0, zlen); - } -+ -+ iocur_top->need_crc = 1; -+ ret = write_buf(iocur_top); -+out_pop: -+ pop_cur(); -+ return ret; - } - - #define MAX_REMOTE_VALS 4095 -@@ -1663,10 +1692,6 @@ process_single_fsb_objects( - last == mp->m_dir_geo->fsbcount); - iocur_top->need_crc = 1; - break; -- case TYP_SYMLINK: -- process_symlink_block(dp); -- iocur_top->need_crc = 1; -- break; - case TYP_ATTR: - process_attr_block(dp, o); - iocur_top->need_crc = 1; -@@ -1764,6 +1789,8 @@ is_multi_fsb_object( - { - if (btype == TYP_DIR2 && mp->m_dir_geo->fsbcount > 1) - return true; -+ if (btype == TYP_SYMLINK) -+ return true; - return false; - } - -@@ -1778,6 +1805,8 @@ process_multi_fsb_objects( - switch (btype) { - case TYP_DIR2: - return process_multi_fsb_dir(o, s, c, btype, last); -+ case TYP_SYMLINK: -+ return process_symlink_block(o, s, c, btype, last); - default: - print_warning("bad type for multi-fsb object %d", btype); - return -EINVAL; diff --git a/xfsprogs-5.0.0-xfs_db-refactor-metadump-handling-of-multi-fsb-objec.patch b/xfsprogs-5.0.0-xfs_db-refactor-metadump-handling-of-multi-fsb-objec.patch deleted file mode 100644 index 30d2d97bb92b14f5eb551505acbe86d303f3f140..0000000000000000000000000000000000000000 --- a/xfsprogs-5.0.0-xfs_db-refactor-metadump-handling-of-multi-fsb-objec.patch +++ /dev/null @@ -1,67 +0,0 @@ -From 9e43c34535bb72edc4a3a30e14b7d22b54c468cb Mon Sep 17 00:00:00 2001 -From: "Darrick J. Wong" -Date: Fri, 26 Apr 2019 15:40:19 -0500 -Subject: [PATCH] xfs_db: refactor metadump handling of multi-fsb objects - -Separate the multi-fsb object dispatch from actual dir block processing -so that we can implement symlink handling correctly as a multi-fsb file. - -Signed-off-by: Darrick J. Wong -Reviewed-by: Eric Sandeen -Signed-off-by: Eric Sandeen ---- - db/metadump.c | 27 ++++++++++++++++++--------- - 1 file changed, 18 insertions(+), 9 deletions(-) - -Index: xfsprogs-4.5.0/db/metadump.c -=================================================================== ---- xfsprogs-4.5.0.orig/db/metadump.c -+++ xfsprogs-4.5.0/db/metadump.c -@@ -1695,7 +1695,7 @@ static struct bbmap mfsb_map; - static int mfsb_length; - - static int --process_multi_fsb_objects( -+process_multi_fsb_dir( - xfs_fileoff_t o, - xfs_fsblock_t s, - xfs_filblks_t c, -@@ -1704,14 +1704,6 @@ process_multi_fsb_objects( - { - int ret = 0; - -- switch (btype) { -- case TYP_DIR2: -- break; -- default: -- print_warning("bad type for multi-fsb object %d", btype); -- return -EINVAL; -- } -- - while (c > 0) { - unsigned int bm_len; - -@@ -1765,6 +1757,23 @@ out_pop: - return ret; - } - -+static int -+process_multi_fsb_objects( -+ xfs_fileoff_t o, -+ xfs_fsblock_t s, -+ xfs_filblks_t c, -+ typnm_t btype, -+ xfs_fileoff_t last) -+{ -+ switch (btype) { -+ case TYP_DIR2: -+ return process_multi_fsb_dir(o, s, c, btype, last); -+ default: -+ print_warning("bad type for multi-fsb object %d", btype); -+ return -EINVAL; -+ } -+} -+ - /* inode copy routines */ - static int - process_bmbt_reclist( diff --git a/xfsprogs-5.0.0-xfs_db-refactor-multi-fsb-object-detection-decision-.patch b/xfsprogs-5.0.0-xfs_db-refactor-multi-fsb-object-detection-decision-.patch deleted file mode 100644 index cf5ec2b3775fe55fa77db3ad54f20c93af3c7968..0000000000000000000000000000000000000000 --- a/xfsprogs-5.0.0-xfs_db-refactor-multi-fsb-object-detection-decision-.patch +++ /dev/null @@ -1,64 +0,0 @@ -From 001df390de88731675adae166db5f189924b107f Mon Sep 17 00:00:00 2001 -From: "Darrick J. Wong" -Date: Fri, 26 Apr 2019 15:40:24 -0500 -Subject: [PATCH] xfs_db: refactor multi-fsb object detection decision making - -Pull the "is this a multi-fsb object" decision into a separate function -that we can keep close to the actual multi-fsb object dispatcher. We -will soon make the machinery more complex so we do this to avoid having -a big hairy if statement. - -Signed-off-by: Darrick J. Wong -Reviewed-by: Eric Sandeen -Signed-off-by: Eric Sandeen ---- - db/metadump.c | 22 +++++++++++++++++----- - 1 file changed, 17 insertions(+), 5 deletions(-) - -Index: xfsprogs-4.5.0/db/metadump.c -=================================================================== ---- xfsprogs-4.5.0.orig/db/metadump.c -+++ xfsprogs-4.5.0/db/metadump.c -@@ -1757,6 +1757,16 @@ out_pop: - return ret; - } - -+static bool -+is_multi_fsb_object( -+ struct xfs_mount *mp, -+ typnm_t btype) -+{ -+ if (btype == TYP_DIR2 && mp->m_dir_geo->fsbcount > 1) -+ return true; -+ return false; -+} -+ - static int - process_multi_fsb_objects( - xfs_fileoff_t o, -@@ -1789,6 +1799,7 @@ process_bmbt_reclist( - xfs_fileoff_t last; - xfs_agnumber_t agno; - xfs_agblock_t agbno; -+ bool is_multi_fsb = is_multi_fsb_object(mp, btype); - int error; - - if (btype == TYP_DATA) -@@ -1852,11 +1863,12 @@ process_bmbt_reclist( - } - - /* multi-extent blocks require special handling */ -- if (btype != TYP_DIR2 || mp->m_dir_geo->fsbcount == 1) { -- error = process_single_fsb_objects(o, s, c, btype, last); -- } else { -- error = process_multi_fsb_objects(o, s, c, btype, last); -- } -+ if (is_multi_fsb) -+ error = process_multi_fsb_objects(o, s, c, btype, -+ last); -+ else -+ error = process_single_fsb_objects(o, s, c, btype, -+ last); - if (error) - return 0; - } diff --git a/xfsprogs-5.4.0-mkfs-Break-block-discard-into-chunks-of-2-GB.patch b/xfsprogs-5.4.0-mkfs-Break-block-discard-into-chunks-of-2-GB.patch deleted file mode 100644 index fb63fcb32dc4dfee6d73679ac753546fb7a11590..0000000000000000000000000000000000000000 --- a/xfsprogs-5.4.0-mkfs-Break-block-discard-into-chunks-of-2-GB.patch +++ /dev/null @@ -1,89 +0,0 @@ -From 7e8a6edb4d1ba0079152eb477abbbc1dfb1ebb7e Mon Sep 17 00:00:00 2001 -From: Pavel Reichl -Date: Fri, 13 Dec 2019 16:21:26 -0500 -Subject: [PATCH] mkfs: Break block discard into chunks of 2 GB - -Some users are not happy about the BLKDISCARD taking too long and at the -same time not being informed about that - so they think that the command -actually hung. - -This commit changes code so that progress reporting is possible and also -typing the ^C will cancel the ongoing BLKDISCARD. - -Signed-off-by: Pavel Reichl -Reviewed-by: Darrick J. Wong -Reviewed-by: Dave Chinner -Signed-off-by: Eric Sandeen ---- - mkfs/xfs_mkfs.c | 50 ++++++++++++++++++++++++++++++++++++------------- - 1 file changed, 37 insertions(+), 13 deletions(-) - -Index: xfsprogs-4.5.0/mkfs/xfs_mkfs.c -=================================================================== ---- xfsprogs-4.5.0.orig/mkfs/xfs_mkfs.c -+++ xfsprogs-4.5.0/mkfs/xfs_mkfs.c -@@ -875,17 +875,41 @@ done: - } - - static void --discard_blocks(dev_t dev, __uint64_t nsectors) -+discard_blocks(dev_t dev, __uint64_t nsectors, int quiet) - { -- int fd; -+ int fd; -+ uint64_t offset = 0; -+ /* Discard the device 2G at a time */ -+ const __uint64_t step = 2ULL << 30; -+ const __uint64_t count = BBTOB(nsectors); - -- /* -- * We intentionally ignore errors from the discard ioctl. It is -- * not necessary for the mkfs functionality but just an optimization. -- */ - fd = libxfs_device_to_fd(dev); -- if (fd > 0) -- platform_discard_blocks(fd, 0, nsectors << 9); -+ if (fd <= 0) -+ return; -+ if (!quiet) { -+ printf("Discarding blocks..."); -+ fflush(stdout); -+ } -+ -+ /* The block discarding happens in smaller batches so it can be -+ * interrupted prematurely -+ */ -+ while (offset < count) { -+ __uint64_t tmp_step = min(step, count - offset); -+ -+ /* -+ * We intentionally ignore errors from the discard ioctl. It is -+ * not necessary for the mkfs functionality but just an -+ * optimization. However we should stop on error. -+ */ -+ if (platform_discard_blocks(fd, offset, tmp_step)) -+ return; -+ -+ offset += tmp_step; -+ } -+ if (!quiet) -+ printf("Done.\n"); -+ - } - - int -@@ -2140,11 +2164,11 @@ _("warning: sparse inodes not supported - } - - if (discard && !Nflag) { -- discard_blocks(xi.ddev, xi.dsize); -+ discard_blocks(xi.ddev, xi.dsize, qflag); - if (xi.rtdev) -- discard_blocks(xi.rtdev, xi.rtsize); -+ discard_blocks(xi.rtdev, xi.rtsize, qflag); - if (xi.logdev && xi.logdev != xi.ddev) -- discard_blocks(xi.logdev, xi.logBBsize); -+ discard_blocks(xi.logdev, xi.logBBsize, qflag); - } - - if (!liflag && !ldflag) diff --git a/xfsprogs-5.4.0-mkfs-tidy-up-discard-notifications.patch b/xfsprogs-5.4.0-mkfs-tidy-up-discard-notifications.patch deleted file mode 100644 index 6616df6efb47975562f086111653ccc6d933683a..0000000000000000000000000000000000000000 --- a/xfsprogs-5.4.0-mkfs-tidy-up-discard-notifications.patch +++ /dev/null @@ -1,53 +0,0 @@ -From 2383d7c5cf20efcff75cb29ca3e02cfbe1bf2209 Mon Sep 17 00:00:00 2001 -From: Eric Sandeen -Date: Tue, 17 Dec 2019 16:52:39 -0500 -Subject: [PATCH] mkfs: tidy up discard notifications - -Only notify user of discard operations if the first one succeeds, -and be sure to print a trailing newline if we stop early. - -Signed-off-by: Eric Sandeen -Reviewed-by: Darrick J. Wong -Signed-off-by: Eric Sandeen ---- - mkfs/xfs_mkfs.c | 16 ++++++++++------ - 1 file changed, 10 insertions(+), 6 deletions(-) - -Index: xfsprogs-4.5.0/mkfs/xfs_mkfs.c -=================================================================== ---- xfsprogs-4.5.0.orig/mkfs/xfs_mkfs.c -+++ xfsprogs-4.5.0/mkfs/xfs_mkfs.c -@@ -886,10 +886,6 @@ discard_blocks(dev_t dev, __uint64_t nse - fd = libxfs_device_to_fd(dev); - if (fd <= 0) - return; -- if (!quiet) { -- printf("Discarding blocks..."); -- fflush(stdout); -- } - - /* The block discarding happens in smaller batches so it can be - * interrupted prematurely -@@ -902,12 +898,20 @@ discard_blocks(dev_t dev, __uint64_t nse - * not necessary for the mkfs functionality but just an - * optimization. However we should stop on error. - */ -- if (platform_discard_blocks(fd, offset, tmp_step)) -+ if (platform_discard_blocks(fd, offset, tmp_step) == 0) { -+ if (offset == 0 && !quiet) { -+ printf("Discarding blocks..."); -+ fflush(stdout); -+ } -+ } else { -+ if (offset > 0 && !quiet) -+ printf("\n"); - return; -+ } - - offset += tmp_step; - } -- if (!quiet) -+ if (offset > 0 && !quiet) - printf("Done.\n"); - - } diff --git a/xfsprogs-5.7.0-progress-reporting-fix.patch b/xfsprogs-5.7.0-progress-reporting-fix.patch deleted file mode 100644 index 2bec36521dbcb1ab11eb4c59446768b78f1482d6..0000000000000000000000000000000000000000 --- a/xfsprogs-5.7.0-progress-reporting-fix.patch +++ /dev/null @@ -1,64 +0,0 @@ -xfs_repair: fix progress reporting - -RHEL7 note: this is a simplified version of the upstream patch. - -The Fixes: commit tried to avoid a segfault in case the progress timer -went off before the first message type had been set up, but this -had the net effect of short-circuiting the pthread start routine, -and so the timer didn't get set up at all and we lost all fine-grained -progress reporting. - -The initial problem occurred when log zeroing took more time than the -timer interval. - -[RHEL7: we do not explicitly track log zeroing, and instead lump it into -Phase 2, so the next part of the description is not relevant to this -patch.] - -So, make a new log zeroing progress item and initialize it when we first -set up the timer thread, to be sure that if the timer goes off while we -are still zeroing the log, it will be initialized and correct. - -(We can't offer fine-grained status on log zeroing, so it'll go from -zero to $LOGBLOCKS with nothing in between, but it's unlikely that log -zeroing will take so long that this really matters.) - -Reported-by: Leonardo Vaz -Fixes: 7f2d6b811755 ("xfs_repair: avoid segfault if reporting progre...") -Signed-off-by: Eric Sandeen ---- - -It might be nice to add progress reporting for the log zeroing, but that -requires renumbering all these macros, and we don't/can't actually get -any fine-grained progress at all, so probably not worth it. - -Index: xfsprogs-4.5.0/repair/progress.c -=================================================================== ---- xfsprogs-4.5.0.orig/repair/progress.c -+++ xfsprogs-4.5.0/repair/progress.c -@@ -124,7 +124,13 @@ init_progress_rpt (void) - */ - - pthread_mutex_init(&global_msgs.mutex, NULL); -- global_msgs.format = NULL; -+ /* -+ * Ensure the format string is not NULL in case the first timer -+ * goes off before any stage calls set_progress_msg() to set it. -+ * Choosing PROG_FMT_SCAN_AG lumps log zeroing in with the AG scan -+ * but that is not expected to take inordinately long. -+ */ -+ global_msgs.format = &progress_rpt_reports[PROG_FMT_SCAN_AG]; - global_msgs.count = glob_agcount; - global_msgs.interval = report_interval; - global_msgs.done = prog_rpt_done; -@@ -170,10 +176,6 @@ progress_rpt_thread (void *p) - msg_block_t *msgp = (msg_block_t *)p; - __uint64_t percent; - -- /* It's possible to get here very early w/ no progress msg set */ -- if (!msgp->format) -- return NULL; -- - if ((msgbuf = (char *)malloc(DURATION_BUF_SIZE)) == NULL) - do_error (_("progress_rpt: cannot malloc progress msg buffer\n")); - diff --git a/xfsprogs-RHEL7-remove-chattr-x.patch b/xfsprogs-RHEL7-remove-chattr-x.patch deleted file mode 100644 index 47b8929cf542f6ecda123cdaf7c97cc7385b67f3..0000000000000000000000000000000000000000 --- a/xfsprogs-RHEL7-remove-chattr-x.patch +++ /dev/null @@ -1,32 +0,0 @@ -Index: xfsprogs-4.5.0/io/attr.c -=================================================================== ---- xfsprogs-4.5.0.orig/io/attr.c -+++ xfsprogs-4.5.0/io/attr.c -@@ -47,10 +47,9 @@ static struct xflags { - { FS_XFLAG_EXTSZINHERIT, "E", "extsz-inherit" }, - { FS_XFLAG_NODEFRAG, "f", "no-defrag" }, - { FS_XFLAG_FILESTREAM, "S", "filestream" }, -- { FS_XFLAG_DAX, "x", "dax" }, - { 0, NULL, NULL } - }; --#define CHATTR_XFLAG_LIST "r"/*p*/"iasAdtPneEfSx" -+#define CHATTR_XFLAG_LIST "r"/*p*/"iasAdtPneEfS" - - static void - lsattr_help(void) -@@ -74,7 +73,6 @@ lsattr_help(void) - " E -- children created in this directory inherit the extent size value\n" - " f -- do not include this file when defragmenting the filesystem\n" - " S -- enable filestreams allocator for this directory\n" --" x -- Use direct access (DAX) for data in this file\n" - "\n" - " Options:\n" - " -R -- recursively descend (useful when current file is a directory)\n" -@@ -110,7 +108,6 @@ chattr_help(void) - " +/-E -- set/clear the extent-size inheritance flag\n" - " +/-f -- set/clear the no-defrag flag\n" - " +/-S -- set/clear the filestreams allocator flag\n" --" +/-x -- set/clear the direct access (DAX) flag\n" - " Note1: user must have certain capabilities to modify immutable/append-only.\n" - " Note2: immutable/append-only files cannot be deleted; removing these files\n" - " requires the immutable/append-only flag to be cleared first.\n" diff --git a/xfsprogs-revert-off64_t.patch b/xfsprogs-revert-off64_t.patch deleted file mode 100644 index 277b5df3ea9caa189954f3a0be598a54d38c35d4..0000000000000000000000000000000000000000 --- a/xfsprogs-revert-off64_t.patch +++ /dev/null @@ -1,33 +0,0 @@ -Revert, because off64_t isn't available w/o LFS defines; -upstream this needs to be handled seamlessly but we don't -want to change existing RHEL behavior for code that includes -xfs.h - -commit cb898f157f8410a03cf5f3400baa1df9e5eecd33 -Author: Felix Janda -Date: Fri Feb 5 08:34:06 2016 +1100 - - linux.h: Use off64_t instead of loff_t - - These are equivalent on glibc, while musl does not know loff_t. - - In the long run, it would be preferable to enable transparent LFS so - that off64_t could be replaced by off_t. - - Signed-off-by: Felix Janda - Reviewed-by: Christoph Hellwig - Signed-off-by: Dave Chinner - -diff --git a/include/linux.h b/include/linux.h -index 674717c..a7d2f85 100644 ---- a/include/linux.h -+++ b/include/linux.h -@@ -141,7 +141,7 @@ platform_discard_blocks(int fd, uint64_t start, uint64_t len) - #define EFSCORRUPTED EUCLEAN /* Filesystem is corrupted */ - #define EFSBADCRC EBADMSG /* Bad CRC detected */ - --typedef off64_t xfs_off_t; -+typedef loff_t xfs_off_t; - typedef __uint64_t xfs_ino_t; - typedef __uint32_t xfs_dev_t; - typedef __int64_t xfs_daddr_t; diff --git a/xfsprogs-wrapper.h b/xfsprogs-wrapper.h deleted file mode 100644 index 66cbb2dd4b2d8eff3c7bdfe8507abde3733ad2fd..0000000000000000000000000000000000000000 --- a/xfsprogs-wrapper.h +++ /dev/null @@ -1,24 +0,0 @@ -/* This file is here to prevent a file conflict on multiarch systems. A - * conflict will occur because platform_defs.h has arch-specific definitions. - * - * DO NOT INCLUDE THE NEW FILE DIRECTLY -- ALWAYS INCLUDE THIS ONE INSTEAD. */ - -#if defined(__i386__) -#include "platform_defs-i386.h" -#elif defined(__x86_64__) -#include "platform_defs-x86_64.h" -#elif defined(__powerpc64__) -#include "platform_defs-ppc64.h" -#elif defined(__powerpc__) -#include "platform_defs-ppc.h" -#elif defined(__s390x__) -#include "platform_defs-s390x.h" -#elif defined(__s390__) -#include "platform_defs-s390.h" -#elif defined(__sparc__) && defined(__arch64__) -#include "platform_defs-sparc64.h" -#elif defined(__sparc__) -#include "platform_defs-sparc.h" -#else -#error "This xfsprogs-devel package does not work your architecture?" -#endif diff --git a/xfsprogs.spec b/xfsprogs.spec index 626e7630fc52f95ad7284d351ac92034f1b849c4..0c93139d69a0b433371680a3a7e218c951e2c5f9 100644 --- a/xfsprogs.spec +++ b/xfsprogs.spec @@ -1,73 +1,28 @@ -%define alicloud_base_release 1 +%define anolis_release .0.1 Summary: Utilities for managing the XFS filesystem Name: xfsprogs -Version: 4.5.0 -Release: 22.%{alicloud_base_release}%{?dist} -# Licensing based on generic "GNU GENERAL PUBLIC LICENSE" -# in source, with no mention of version. -# doc/COPYING file specifies what is GPL and what is LGPL -# but no mention of versions in the source. +Version: 4.19.0 +Release: 5%{anolis_release}%{?dist} License: GPL+ and LGPLv2+ -Group: System Environment/Base URL: https://xfs.wiki.kernel.org -Source0: http://kernel.org/pub/linux/utils/fs/xfs/xfsprogs/%{name}-%{version}.tar.gz -Source1: xfsprogs-wrapper.h -BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) +Source0: http://kernel.org/pub/linux/utils/fs/xfs/xfsprogs/%{name}-%{version}.tar.xz +BuildRequires: gcc BuildRequires: libtool, gettext, libattr-devel, libuuid-devel BuildRequires: readline-devel, libblkid-devel >= 2.17-0.1.git5e51568 +Buildrequires: lvm2-devel, libicu-devel >= 4.6 Provides: xfs-cmds Obsoletes: xfs-cmds <= %{version} Provides: xfsprogs-qa-devel Obsoletes: xfsprogs-qa-devel <= %{version} Conflicts: xfsdump < 3.0.1 +#Suggests: xfsprogs-xfs_scrub -Patch0: xfsprogs-4.5.0-revert-AGFL-pack.patch -Patch1: xfsprogs-4.5.0-change-mkfs-options.patch -Patch2: xfsprogs-4.5.0-fix-headers.patch -Patch3: xfsprogs-4.5.0-revert-xfs_db-sparse-inodes.patch -Patch4: xfsprogs-4.5.0-xfs_repair-rtino-version.patch -Patch5: xfsprogs-4.5.0-xfs_repair-quota-inodes.patch -Patch6: xfsprogs-4.5.0-xfs_repair-exit-value-memory.patch -Patch7: xfsprogs-4.7.0-defang-frag.patch -Patch8: xfsprogs-4.7.0-fix-agf-limit-errors.patch -Patch9: xfsprogs-4.7.0-quota-fixes.patch -Patch10: xfsprogs-4.8.0-replace-ustat.patch -Patch11: xfsprogs-revert-off64_t.patch -Patch12: xfsprogs-4.9.0-junk-attr-leaf-count-zero.patch -Patch13: xfsprogs-4.8.0-xfs_copy-UUID.patch -Patch14: xfsprogs-4.10.0-xfs_metadump-ignore-0-entries.patch -Patch15: xfsprogs-4.9-xfs_io-fix-m-option.patch -# RHEL-7.5 -Patch16: xfsprogs-4.8.0-mkfs.xfs-clarify-ftype-defaults-in-manpage.patch -Patch17: xfsprogs-4.12.0-mkfs.xfs-allow-specification-of-0-data-stripe-width-.patch -Patch18: xfsprogs-4.12.0-xfs_db-update-buffer-size-when-new-type-is-set.patch -Patch19: xfsprogs-4.12.0-xfs_db-improve-argument-naming-in-set_cur-and-set_io.patch -Patch20: xfsprogs-4.12.0-xfs_db-properly-set-inode-type.patch -Patch21: xfsprogs-4.13.0-mkfs.xfs-Don-t-stagger-AG-for-a-single-disk.patch -Patch22: xfsprogs-4.13.0-xfs_repair-don-t-use-do_warn-for-normal-log-message.patch -Patch23: xfsprogs-4.11.0-xfs_repair-warn-about-dirty-log-with-n-option.patch -Patch24: xfsprogs-4.8.0-xfs_repair-exit-with-status-2-if-log-dirtiness-is-un.patch -Patch25: xfsprogs-4.16-xfs_repair-handle-corrupt-log.patch -# RHEL-7.6 -Patch26: xfsprogs-4.10.0-xfs_db-fix-the-source-command-when-passed-as-a-c-opt.patch -Patch27: xfsprogs-4.14.0-db-increase-metadump-s-default-overly-long-extent-di.patch -Patch28: xfsprogs-4.15.0-xfs_db-fix-crash-when-field-list-selector-string-has.patch -Patch29: xfsprogs-4.15.0-xfsprogs-update-dead-urls.patch -Patch30: xfsprogs-4.17.0-xfsprogs-be-careful-about-what-we-stat-in-platform_c.patch -Patch31: xfsprogs-4.17.0-xfs_io-add-label-command.patch -Patch32: xfsprogs-4.18-repair-root-parent.patch -# RHEL-7.7 -Patch33: xfsprogs-4.15.0-xfs_copy-accept-CRC-version-of-ABTB_MAGIC-in-ASSERT.patch -Patch34: xfsprogs-4.20-xfs_quota-fix-false-error-reporting-of-project-inhertance-flag.patch -Patch35: xfsprogs-4.20-xfs_repair-initialize-non-leaf-finobt-blocks-with-co.patch -# RHEL-7.9 -Patch36: xfsprogs-RHEL7-remove-chattr-x.patch -Patch37: xfsprogs-5.0.0-xfs_db-refactor-metadump-handling-of-multi-fsb-objec.patch -Patch38: xfsprogs-5.0.0-xfs_db-refactor-multi-fsb-object-detection-decision-.patch -Patch39: xfsprogs-5.0.0-xfs_db-metadump-should-handle-symlinks-properly.patch -Patch40: xfsprogs-5.4.0-mkfs-Break-block-discard-into-chunks-of-2-GB.patch -Patch41: xfsprogs-5.4.0-mkfs-tidy-up-discard-notifications.patch -Patch42: xfsprogs-5.7.0-progress-reporting-fix.patch +# Begin: Anolis customized patches +Patch1000: 1000-5.0.0-mkfs-validate-extent-size-hint-parameters.patch +Patch1001: 1001-4.20.0-xfs_db-fix-finobt-record-decoding-when-sparse-inodes-enabled.patch +Patch1002: 1002-4.20.0-xfs_repair-allow-in-attribute-names.patch +Patch1003: 1003-4.20.0-xfs_repair-fix-incorrect-return-value-in-namecheck.patch +# End: Anolis customized patches %description A set of commands to use the XFS filesystem, including mkfs.xfs. @@ -79,9 +34,11 @@ variable block sizes, is extent based, and makes extensive use of Btrees (directories, extents, free space) to aid both performance and scalability. +This implementation is on-disk compatible with the IRIX version +of XFS. + %package devel Summary: XFS filesystem-specific headers -Group: Development/Libraries Requires: xfsprogs = %{version}-%{release}, libuuid-devel %description devel @@ -92,99 +49,70 @@ You should install xfsprogs-devel if you want to develop XFS filesystem-specific programs, If you install xfsprogs-devel, you'll also want to install xfsprogs. +%package xfs_scrub +Summary: XFS filesystem online scrubbing utilities +Requires: xfsprogs = %{version}-%{release}, python3 + +%description xfs_scrub +xfs_scrub attempts to check and repair all metadata in a mounted XFS filesystem. +WARNING! This program is EXPERIMENTAL, which means that its behavior and +interface could change at any time! + %prep %setup -q -%patch0 -p1 -%patch1 -p1 -%patch2 -p1 -%patch3 -p1 -%patch4 -p1 -%patch5 -p1 -%patch6 -p1 -%patch7 -p1 -%patch8 -p1 -%patch9 -p1 -%patch10 -p1 -%patch11 -p1 -%patch12 -p1 -%patch13 -p1 -%patch14 -p1 -%patch15 -p1 -%patch16 -p1 -%patch17 -p1 -%patch18 -p1 -%patch19 -p1 -%patch20 -p1 -%patch21 -p1 -%patch22 -p1 -%patch23 -p1 -%patch24 -p1 -%patch25 -p1 -%patch26 -p1 -%patch27 -p1 -%patch28 -p1 -%patch29 -p1 -%patch30 -p1 -%patch31 -p1 -%patch32 -p1 -%patch33 -p1 -%patch34 -p1 -%patch35 -p1 -%patch36 -p1 -%patch37 -p1 -%patch38 -p1 -%patch39 -p1 -%patch40 -p1 -%patch41 -p1 -%patch42 -p1 +%patch1000 -p1 +%patch1001 -p1 +%patch1002 -p1 +%patch1003 -p1 %build export tagname=CC + %configure \ --enable-readline=yes \ - --enable-blkid=yes + --enable-blkid=yes \ + --enable-lto=no -# Kill rpaths -sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool -sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool - -make V=1 %{?_smp_mflags} +make %{?_smp_mflags} %install -rm -rf $RPM_BUILD_ROOT -make V=1 DIST_ROOT=$RPM_BUILD_ROOT install install-dev \ +make DIST_ROOT=$RPM_BUILD_ROOT install install-dev \ PKG_ROOT_SBIN_DIR=%{_sbindir} PKG_ROOT_LIB_DIR=%{_libdir} # nuke .la files, etc rm -f $RPM_BUILD_ROOT/{%{_lib}/*.{la,a,so},%{_libdir}/*.{la,a}} -chmod 0755 $RPM_BUILD_ROOT/%{_libdir}/libhandle.so.*.*.* # remove non-versioned docs location rm -rf $RPM_BUILD_ROOT/%{_datadir}/doc/xfsprogs/ -# xfs_check is deprecated; nuke it from orbit for RHEL7 -rm -f $RPM_BUILD_ROOT/%{_sbindir}/xfs_check -rm -f $RPM_BUILD_ROOT/%{_mandir}/man8/xfs_check* - %find_lang %{name} -%clean -rm -rf $RPM_BUILD_ROOT - %post -p /sbin/ldconfig %postun -p /sbin/ldconfig %files -f %{name}.lang -%defattr(-,root,root) -%doc doc/CHANGES doc/COPYING doc/CREDITS README +%doc doc/CHANGES README %{_libdir}/*.so.* -%{_mandir}/man8/* +%dir %{_usr}/%{_lib}/xfsprogs +%{_usr}/%{_lib}/xfsprogs/* %{_mandir}/man5/* +%{_mandir}/man8/* %{_sbindir}/* +%{_unitdir}/* +%exclude %{_sbindir}/xfs_scrub* +%exclude %{_mandir}/man8/xfs_scrub* +%exclude %{_usr}/%{_lib}/xfsprogs/xfs_scrub* +%exclude %{_unitdir}/xfs_scrub* + +%files xfs_scrub +%{_sbindir}/xfs_scrub* +%{_mandir}/man8/xfs_scrub* +%{_usr}/%{_lib}/xfsprogs/xfs_scrub* +%{_unitdir}/xfs_scrub* %files devel -%defattr(-,root,root) +%{_mandir}/man2/* %{_mandir}/man3/* %dir %{_includedir}/xfs %{_includedir}/xfs/handle.h @@ -202,485 +130,124 @@ rm -rf $RPM_BUILD_ROOT %{_libdir}/*.so %changelog -* Thu Nov 26 2020 Wei Liu - 4.5.0-22.1 -- Rebuild for Alibaba Cloud Linux - -* Tue May 26 2020 2020 Eric Sandeen 4.5.0-22 -- xfs_repair: fix progress reporting (#1813557) - -* Mon May 18 2020 Eric Sandeen 4.5.0-21 -- mkfs.xfs: make device discard interruptable, print notice (#1769786) -- xfs_io: remove +/-x flag from chattr, not supported in kernel (#1630112) -- xfs_metadump: fix symlink handling (#1693138) - -* Mon Feb 11 2019 Eric Sandeen 4.5.0-20 -- xfs_quota: fix errors if project flag is not set on regular files (#1663502) -- xfs_repair: initialize non-leaf finobt blocks with correct magic (#1670154) - -* Mon Feb 11 2019 Eric Sandeen 4.5.0-19 -- xfs_copy: accept CRC version of ABTB_MAGIC in ASSERT (#1641023) - -* Wed Jun 20 2018 Eric Sandeen 4.5.0-18 -- xfs_repar: Fix root inode's parent for sf directory (#1590334) - -* Wed Jun 13 2018 Eric Sandeen 4.5.0-17 -- xfs_io: add online label command (#1584912) - -* Thu May 31 2018 Eric Sandeen 4.5.0-16 -- xfs_db: fix the source command when passed as -c option (#1510279) -- xfs_metadump: allow much larger extent counts (#1502927) -- xfs_db: fix crash when field list selector has garbage (#1532271) -- mkfs.xfs, others: don't stat non-block devices on startup (#1573974) -- Update project URLs throughout the pkg, code and docs (#1550798) +* Tue Jan 4 2022 Weitao Zhou - 4.19.0-5.0.1 +- Add 5.0.0-mkfs-validate-extent-size-hint-parameters.patch +- Add 4.20.0-xfs_db-fix-finobt-record-decoding-when-sparse-inodes-enabled.patch +- Add 4.20.0-xfs_repair-allow-in-attribute-names.patch +- Add 4.20.0-xfs_repair-fix-incorrect-return-value-in-namecheck.patch -* Tue Feb 27 2018 Eric Sandeen 4.5.0-15 -- xfs_repair: allow repair of corrupt log (#1549525) - -* Thu Jan 25 2018 Eric Sandeen 4.5.0-14 -- xfs_repair: fix incorrect exit status (#1523008) - -* Fri Oct 06 2017 Eric Sandeen 4.5.0-13 -- mkfs.xfs: clarify ftype defaults in manpage (#1488124) -- mkfs.xfs: allow specification of 0 data stripe width (#1444166) -- mkfs.xfs: Don't stagger AG for a single disk (#1492552) -- xfs_db: xfs_db-update-buffer-size-when-new-type-is-set (#1458670) - -* Tue May 09 2017 Eric Sandeen 4.5.0-12 -- xfs_io: Fix initial -m option (#1447270) - -* Mon Mar 27 2017 Eric Sandeen 4.5.0-11 -- xfs_metadump: ignore attr leaf with 0 entries (#1402944) - -* Wed Mar 01 2017 Eric Sandeen 4.5.0-10 -- xfs_copy: Fix meta UUID handling on multiple copies (#1377931) - -* Fri Dec 16 2016 Eric Sandeen 4.5.0-9 -- xfs_repair: junk leaf attribute if count == 0 (#1402944) - -* Thu Sep 08 2016 Eric Sandeen 4.5.0-8 -- revert loff_t to off64_t change to preserve xfs.h behavior (#1366291) -- accomodate lack of ustat() on some arches (#1373605) - -* Wed Sep 07 2016 Eric Sandeen 4.5.0-7 -- rebuild with libattr-devel dependency to fix xfs_fsr (#1372939) - -* Tue Aug 09 2016 Eric Sandeen 4.5.0-6 -- xfs_quota: misc fixes (#1365256) -- xfs_db: clarify frag command (#1365256) - -* Mon Jul 18 2016 Eric Sandeen 4.5.0-5 -- xfs_repair: Don't let low memory indicate corruption on exit (#1355929) - -* Tue Jun 28 2016 Eric Sandeen 4.5.0-4 -- xfs_db: Fix multi-inode-record chunks in 4.5.0 (#1346927) -- xfs_repair: Fix special inode handling in 4.5.0 (#1347698) -- xfs_repair: Fix quota inode handling in 4.5.0 (#1347719) - -* Mon Jun 13 2016 Eric Sandeen 4.5.0-3 -- mkfs.xfs: disable finobt by default, disable sparse inodes entirely (#1345961) -- Fix header files for compatibility (#1340553) - -* Mon Jun 06 2016 Eric Sandeen 4.5.0-2 -- Revert AGFL header packing (#1336920) - -* Tue Mar 15 2016 Eric Sandeen 4.5.0-1 -- Rebase to upstream v4.5.0 (#1309498) -- mkfs: default to CRC enabled filesystems -- mkfs: default to ftype enabled filesystems -- mkfs.xfs.8: Clarify mkfs vs. mount block size limits. (#1263535) -- xfs_copy: fix copy of hard 4k devices (#1231841) -- xfs_quota: use Q_XGETNEXTQUOTA for faster repquota (#1164652) -- xfs_fsr: more fixes for extent swaps with selinux (#1083833) -- xfs_copy: Allow UUID changes on V5 filesystems (#1072283) +* Thu May 09 2019 Sinny Kumari 4.19.0-5 +- Create new xfs_scrub subpackage (#1666839) -* Fri Aug 07 2015 Eric Sandeen 3.2.2-2 -- Fix xfs_metadump disclosure flaw, CVE-2012-2150 (#1251118) +* Sun Feb 17 2019 Igor Gnatenko - 4.19.0-4 +- Rebuild for readline 8.0 -* Mon Jun 15 2015 Eric Sandeen 3.2.2-1 -- Update to upstream v3.2.2, plus fixes from v3.2.3 (#1223991) -- repair: fix unnecessary secondary scan if only last sb is corrupt (#1201238) -- repair: check ino alignment value to avoid mod by zero (#1223444) +* Sun Feb 03 2019 Fedora Release Engineering - 4.19.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild -* Fri Dec 19 2014 Eric Sandeen 3.2.1-6 -- xfs_repair: fix maximum block offset test (#1173146) -- xfs_copy: fix assert failure on 4k sector devices (#1162414) -- xfs_quota: man page updates (#175133, #1175627) +* Wed Jan 23 2019 Pete Walter - 4.19.0-2 +- Rebuild for ICU 63 -* Fri Oct 24 2014 Eric Sandeen 3.2.1-5 -- xfs_repair: copy stripe geometry from backup supers if needed (#1150857) - -* Wed Sep 17 2014 Eric Sandeen 3.2.1-3 -- Add supported file attributes to xfs.5 manpage (#1142555) - -* Mon Sep 15 2014 Eric Sandeen 3.2.1-2 -- xfs_quota: fix segfault when reporting on nonexistant path (#1077826) -- xfs_quota: fix reporting on symlinked paths (#1077841) - -* Tue Jul 15 2014 Eric Sandeen 3.2.1-1 -- New upstream release (#1119940) -- xfs_copy: fix data corruption of target (#1105170) -- mkfs.xfs: handle mkfs of file on 4k block device (#1101236) -- xfs_copy: don't exit with error code on success (#1100376) - -* Tue Mar 11 2014 Eric Sandeen 3.2.0-0.10.alpha2 -- Fix bug in xfs_repair's inode prefetch (#1083820) - -* Tue Mar 11 2014 Eric Sandeen 3.2.0-0.9.alpha2 -- Sync up with upstream's latest CRC enhancements (#1074037) - -* Fri Feb 28 2014 Eric Sandeen 3.2.0-0.8.alpha2 -- mkfs.xfs fix default log size for small filesystems (#1034003) -- xfs_copy: partial fixups for CRC filesystems (#1043570) -- xfs_logprint: Don't error out after split items lose context (#1043591) - -* Tue Feb 24 2014 Eric Sandeen 3.2.0-0.7.alpha2 -- xfs_metadump: Really add xfs_metadump -F option (#1040921) -- xfs_check: Remove xfs_check manpage, xfs_check is deprecated (#1029458) - -* Mon Feb 24 2014 Eric Sandeen 3.2.0-0.6.alpha2 -- xfs_metadump: Require -F if proper SB magic is not found (#1040921) -- xfs_repair: fix bad block pointer found in large directories (#1034157) -- libxfs: Don't mark single-map blockmaps as discontiguous (#1033480) -- libxfs: Clear stale buffer errors on write (1033480) - -* Fri Jan 24 2014 Daniel Mach - 3.2.0-0.5.alpha2 -- Mass rebuild 2014-01-24 - -* Fri Dec 27 2013 Daniel Mach - 3.2.0-0.4.alpha2 -- Mass rebuild 2013-12-27 - -* Mon Nov 25 2013 Eric Sandeen 3.2.0-0.3.alpha2 -- New upstream alpha release (#1034445) -- Remove xfs_check reference from fsck.xfs output (#1029455) -- Fix xfs_fsr on some files with selinux attributes (#1034013) - -* Fri Nov 15 2013 Eric Sandeen 3.2.0-0.2.alpha1 -- Move xfs_types.h from xfsprogs-qa-devel to xfsprogs-devel (#1024048) -- Remove deprecated xfs_check from package (#1029458) - -* Thu Sep 26 2013 Eric Sandeen 3.2.0-0.1.alpha1 -- New upstream alpha release with preliminary CRC support (#1015632) -- Additional patches beyon 3.2.0-alpha1: -- Fix big endian build -- Handle symlinks in xfs_quota arguments (#1013668) -- Don't report non-regular files as xfsctl-capable (#1012412) -- Fix log recovery on 4k filesystems - -* Thu Aug 15 2013 Eric Sandeen 3.1.11-3 -- mkfs.xfs: fix protofile name create block reservation (#918473) - -* Mon Jul 22 2013 Eric Sandeen 3.1.11-2 -- Update xfs_metadump manpage re: frozen filesystems (#953442) - -* Wed May 08 2013 Eric Sandeen 3.1.11-1 -- New upstream release. - -* Fri Feb 15 2013 Fedora Release Engineering - 3.1.10-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild - -* Thu Dec 13 2012 Eric Sandeen 3.1.10-1 -- New upstream release, with non-broken tarball. - -* Wed Dec 12 2012 Eric Sandeen 3.1.9-1 -- New upstream release. - -* Sun Jul 22 2012 Fedora Release Engineering - 3.1.8-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild - -* Fri Mar 30 2012 Eric Sandeen 3.1.8-4 -- Rebuild against new RPM (RHBZ#808250) - -* Wed Mar 28 2012 Eric Sandeen 3.1.8-3 -- Move files out of /lib64 to /usr/lib64 - -* Wed Mar 28 2012 Eric Sandeen 3.1.8-2 -- Move files out of /sbin to /usr/sbin - -* Fri Mar 23 2012 Eric Sandeen 3.1.8-1 -- New upstream release. - -* Sat Jan 14 2012 Fedora Release Engineering - 3.1.7-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild +* Tue Nov 13 2018 Eric Sandeen 4.19.0-1 +- New upstream release -* Fri Nov 18 2011 Eric Sandeen 3.1.7-1 -- New upstream release. +* Fri Aug 24 2018 Eric Sandeen 4.18.0-1 +- New upstream release -* Mon Oct 17 2011 Eric Sandeen 3.1.6-2 -- Remove mistaken "test" in release string +* Sat Jul 14 2018 Fedora Release Engineering - 4.17.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild -* Fri Oct 14 2011 Eric Sandeen 3.1.6-1.test -- New upstream release. Drop -DNDEBUG build flag. +* Tue Jul 10 2018 Pete Walter - 4.17.0-2 +- Rebuild for ICU 62 -* Thu Mar 31 2011 Eric Sandeen 3.1.5-1 +* Thu Jun 28 2018 Eric Sandeen 4.17.0-1 - New upstream release -* Mon Feb 07 2011 Fedora Release Engineering - 3.1.4-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild +* Mon Apr 30 2018 Pete Walter - 4.16.0-2 +- Rebuild for ICU 61.1 -* Thu Nov 18 2010 Eric Sandeen 3.1.4-1 -- New upstream release; disable DEBUG for now to build - -* Sat Aug 28 2010 Eric Sandeen 3.1.3-1 +* Thu Apr 26 2018 Eric Sandeen 4.16.0-1 - New upstream release +- Clean up specfile -* Fri May 07 2010 Eric Sandeen 3.1.2-1 +* Mon Feb 26 2018 Eric Sandeen 4.15.1-1 - New upstream release +- Update Polish translation -* Thu Apr 01 2010 Eric Sandeen 3.1.1-7 -- make devel pkg require libuuid-devel (#576296) - -* Mon Mar 15 2010 Eric Sandeen 3.1.1-6 -- Fix missing locking for btree manipulation in xfs_repair - -* Fri Feb 12 2010 Eric Sandeen 3.1.1-5 -- --enable-static=no doesn't work; just nuke static libs +* Mon Feb 26 2018 Eric Sandeen 4.15.0-2 +- BuildRequires: gcc -* Fri Feb 12 2010 Eric Sandeen 3.1.1-4 -- Fix up -devel package descriptions +* Sat Feb 24 2018 Eric Sandeen 4.15.0-1 +- New upstream release +- Adds new xfs_scrub utility and services -* Fri Feb 12 2010 Eric Sandeen 3.1.1-3 -- Drop static libs (#556102) +* Fri Feb 09 2018 Fedora Release Engineering - 4.14.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild -* Mon Feb 01 2010 Eric Sandeen 3.1.1-2 -- Fix mkfs of target with nothing blkid can recognize (#561870) - -* Mon Feb 01 2010 Eric Sandeen 3.1.1-1 +* Mon Nov 27 2017 Eric Sandeen 4.14.0-1 - New upstream release -- Fix fd validity test for device-less mkfs invocation - -* Sun Jan 17 2010 Eric Sandeen 3.1.0-2 -- Post-release mkfs fixes (#555847) -* Wed Jan 13 2010 Eric Sandeen 3.1.0-1 +* Wed Sep 27 2017 Eric Sandeen 4.13.1-1 - New upstream release -- Minor fixups for new glibc headers -- Fixes default mkfs.xfs on 4k sector device (#539553) - -* Tue Dec 08 2009 Eric Sandeen 3.0.3-5 -- And finally, BuildRequire libblkid-devel +- Trim ancient changelog -* Mon Dec 07 2009 Eric Sandeen 3.0.3-4 -- Actually patch & run configure script w/ blkid bits... -- Kill rpath in xfs_fsr +* Thu Aug 03 2017 Fedora Release Engineering - 4.12.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild -* Fri Nov 20 2009 Eric Sandeen 3.0.3-3 -- Fix up build issues w.r.t. off64_t +* Sun Jul 30 2017 Florian Weimer - 4.12.0-3 +- Rebuild with binutils fix for ppc64le (#1475636) -* Tue Nov 10 2009 Eric Sandeen 3.0.3-2 -- Add trim/discard & libblkid support +* Thu Jul 27 2017 Fedora Release Engineering - 4.12.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild -* Tue Sep 01 2009 Eric Sandeen 3.0.3-1 +* Mon Jul 24 2017 Eric Sandeen 4.12.0-1 - New upstream release -* Mon Jul 27 2009 Fedora Release Engineering - 3.0.1-10 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild - -* Tue Jun 30 2009 Eric Sandeen 3.0.1-9 -- Fix block overflows in xfs_repair and xfs_metadump - -* Tue Jun 30 2009 Eric Sandeen 3.0.1-8 -- Fix up build-requires after e2fsprogs splitup - -* Thu Jun 18 2009 Dennis Gilmore 3.0.1-7 -- update sparc multilib handling - -* Mon Jun 15 2009 Eric Sandeen 3.0.1-6 -- Make lazy superblock counters the default - -* Mon Jun 15 2009 Eric Sandeen 3.0.1-5 -- Add fallocate command to config script & fix for 32-bit - -* Mon Jun 15 2009 Eric Sandeen 3.0.1-4 -- Add fallocate command to xfs_io - -* Fri May 15 2009 Eric Sandeen 3.0.1-3 -- Fix and re-enable readline - -* Tue May 05 2009 Eric Sandeen 3.0.1-2 -- Conflict with xfsdump < 3.0.1 since files moved between them - -* Tue May 05 2009 Eric Sandeen 3.0.1-1 +* Fri May 05 2017 Eric Sandeen 4.11.0-1 - New upstream release -* Sat Apr 18 2009 Eric Sandeen 3.0.0-4 -- Fix build for non-multilib arches, oops. - -* Sat Apr 18 2009 Eric Sandeen 3.0.0-3 -- Create new xfsprogs-qa-devel subpackage - -* Thu Feb 26 2009 Fedora Release Engineering - 3.0.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild - -* Wed Feb 04 2009 Eric Sandeen 3.0.0-1 +* Sun Feb 26 2017 Eric Sandeen 4.10.0-1 - New upstream release -* Thu Jan 08 2009 Eric Sandeen 2.10.2-3 -- Fix perms of libhandle.so in specfile, not makefile - -* Wed Jan 07 2009 Eric Sandeen 2.10.2-2 -- Fix perms of libhandle.so so that it's properly stripped - -* Sun Dec 07 2008 Eric Sandeen 2.10.2-1 -- New upstream release, bugfix only. - -* Wed Nov 26 2008 Eric Sandeen 2.10.1-4 -- Add protection from borken sys_ustat -- Add final upstream versions of gfs2 & parallel build patches - -* Wed Nov 12 2008 Eric Sandeen 2.10.1-2 -- Recognize gfs/gfs2 in libdisk -- Enable parallel builds - -* Fri Sep 05 2008 Eric Sandeen 2.10.1-1 -- Update to xfsprogs 2.10.1 -- Add ASCII case-insensitive support to xfsprogs. -- xfs_repair fixes - -* Wed Jun 04 2008 Dennis Gilmore 2.9.8-3 -- sparc32 is built using the sparcv9 variant - -* Wed Jun 04 2008 Eric Sandeen 2.9.8-2 -- Tidy up multilib hack for non-multilib arches & add sparc (#448452) - -* Wed Apr 23 2008 Eric Sandeen 2.9.8-1 -- Update to xfsprogs 2.9.8 -- Add support for sb_features2 in wrong location -- Add -c option to xfs_admin to turn lazy-counters on/off -- Added support for mdp in libdisk/mkfs.xfs - -* Sun Mar 02 2008 Eric Sandeen 2.9.7-1 -- Update to xfsprogs 2.9.7 -- Lazy sb counters back off by default; other misc fixes - -* Wed Feb 06 2008 Eric Sandeen 2.9.6-1 -- Update to xfsprogs 2.9.6 - fixes mkfs sizing problem. -- Trim down BuildRequires to what's actually required now - -* Mon Jan 21 2008 Eric Sandeen 2.9.5-1 -- Update to xfsprogs 2.9.5 -- Contains more optimal mkfs defaults -- specfile cleanup, & don't restate config defaults - -* Tue Oct 23 2007 Eric Sandeen 2.9.4-4 -- Add arm to multilib header wrapper - -* Tue Oct 02 2007 Eric Sandeen 2.9.4-3 -- mkfs.xfs: Fix wiping old AG headers and purge whack buffers - -* Mon Oct 01 2007 Eric Sandeen 2.9.4-2 -- Add alpha to the multilib wrapper (#310411) - -* Mon Sep 10 2007 Eric Sandeen 2.9.4-1 -- Update to xfsprogs 2.9.4 - -* Fri Aug 24 2007 Eric Sandeen 2.9.3-3 -- Add gawk to buildrequires +* Sat Feb 11 2017 Fedora Release Engineering - 4.9.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild -* Thu Aug 16 2007 Eric Sandeen 2.9.3-2 -- Update license tag +* Thu Jan 12 2017 Igor Gnatenko - 4.9.0-2 +- Rebuild for readline 7.x -* Thu Jul 26 2007 Eric Sandeen 2.9.3-1 -- Upgrade to xfsprogs 2.9.2, quota, xfs_repair, and filestreams changes - -* Thu Jul 6 2007 Eric Sandeen 2.8.21-1 -- Upgrade to xfsprogs 2.8.21, lazy sb counters enabled, - xfs_quota fix (#236746) - -* Thu May 31 2007 Eric Sandeen 2.8.20-2 -- Fix ppc64 build... again - -* Fri May 25 2007 Eric Sandeen 2.8.20-1 -- Upgrade to xfsprogs 2.8.20, several xfs_repair fixes - -* Tue Mar 06 2007 Miroslav Lichvar 2.8.18-3 -- Remove libtermcap-devel from BuildRequires - -* Wed Feb 14 2007 Miroslav Lichvar 2.8.18-2 -- Disable readline support for now (#223781) - -* Sun Feb 04 2007 Jarod Wilson 2.8.18-1 -- Post-facto changelog addition to note bump to 2.8.18 - -* Wed Sep 27 2006 Russell Cattelan 2.8.11-3 -- bump build version to 3 for a new brew build - -* Tue Sep 26 2006 Russell Cattelan 2.8.11-2 -- add ppc64 build patch - -* Thu Sep 21 2006 Russell Cattelan 2.8.11-1 -- Upgrade to xfsprogs 2.8.11 Need to pick up important repair fixes - -* Tue Jul 18 2006 Jeremy Katz - 2.8.4-3 -- exclude arch ppc64 for now (#199315) - -* Mon Jul 17 2006 Jesse Keating - 2.8.4-2 -- rebuild - -* Tue Jul 04 2006 Robert Scheck 2.8.4-1 -- Upgrade to 2.8.4 (#196599 #c2) - -* Sun Jun 25 2006 Robert Scheck 2.8.3-1 -- Upgrade to 2.8.3 (#196599) -- Applied Russell Coker's suggested patch to improve the - performance for SELinux machines significantly (#120622) - -* Sun Jun 25 2006 Robert Scheck 2.7.11-2 -- Fixed multilib conflict of xfs/platform_defs.h (#192755) - -* Sun Mar 12 2006 Robert Scheck 2.7.11-1 -- Upgrade to 2.7.11 and spec file cleanup (#185234) - -* Fri Feb 10 2006 Jesse Keating - 2.7.3-1.2.1 -- bump again for double-long bug on ppc(64) - -* Tue Feb 07 2006 Jesse Keating - 2.7.3-1.2 -- rebuilt for new gcc4.1 snapshot and glibc changes - -* Fri Dec 09 2005 Jesse Keating -- rebuilt - -* Mon Oct 31 2005 Robert Scheck 2.7.3-1 -- Upgrade to 2.7.3 and enabled termcap support (#154323) - -* Wed Sep 28 2005 Florian La Roche -- fixup building with current rpm - -* Wed Apr 20 2005 Dave Jones -- Disable debug. (#151438) -- Rebuild with gcc4 +* Thu Jan 05 2017 Eric Sandeen 4.9.0-1 +- New upstream release -* Wed Jan 12 2005 Tim Waugh - 2.6.13-3 -- Rebuilt for new readline. +* Tue Oct 18 2016 Eric Sandeen 4.8.0-1 +- New upstream release -* Tue Jun 15 2004 Elliot Lee -- rebuilt +* Tue Sep 06 2016 Eric Sandeen 4.7.0-2 +- Add libattr-devel build dependency to fix xfs_fsr -* Wed May 5 2004 Jeremy Katz - 2.6.13-1 -- update to 2.6.13 per request of upstream -- fixes mount by label of xfs on former raid partition (#122043) +* Sun Sep 04 2016 Eric Sandeen 4.7.0-1 +- New upstream release -* Tue Mar 02 2004 Elliot Lee -- rebuilt +* Tue Mar 15 2016 Eric Sandeen 4.5.0-1 +- New upstream release -* Fri Feb 13 2004 Elliot Lee -- rebuilt +* Thu Mar 10 2016 Eric Sandeen 4.3.0-3 +- Fix build w/ new kernels which have [sg]etxattr promotion -* Thu Jan 8 2004 Jeremy Katz 2.6.0-2 -- add defattr (reported by Matthias) +* Fri Feb 05 2016 Fedora Release Engineering - 4.3.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild -* Tue Dec 23 2003 Elliot Lee 2.6.0-3 -- Fix tyops in dependencies +* Mon Nov 30 2015 Eric Sandeen 4.3.0-1 +- New upstream release -* Mon Dec 22 2003 Jeremy Katz 2.6.0-1 -- build for Fedora Core -- switch to more explicit file lists, nuke .la files +* Wed Sep 09 2015 Eric Sandeen 4.2.0-1 +- New upstream release -* Tue Dec 16 2003 Axel Thimm 2.6.0 -- Update to 2.6.0. +* Thu Jul 30 2015 Eric Sandeen 3.2.4-1 +- New upstream release +- Addresses CVE-2012-2150 for xfs_metadump -* Sat Sep 13 2003 Axel Thimm -- Sync with XFS 1.3.0. -- Update to 2.5.6. +* Fri Jun 19 2015 Fedora Release Engineering - 3.2.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild -* Thu Apr 10 2003 Axel Thimm 2.3.9-0_2.90at -- Rebuilt for Red Hat 9. +* Wed Jun 10 2015 Eric Sandeen 3.2.3-1 +- New upstream release