From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-vs1-f41.google.com (mail-vs1-f41.google.com [209.85.217.41]) by mx.groups.io with SMTP id smtpd.web12.13751.1624049534184126523 for ; Fri, 18 Jun 2021 13:52:14 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@gmail.com header.s=20161025 header.b=RujNWZCK; spf=pass (domain: gmail.com, ip: 209.85.217.41, mailfrom: alex.kanavin@gmail.com) Received: by mail-vs1-f41.google.com with SMTP id 68so5661635vsu.6 for ; Fri, 18 Jun 2021 13:52:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=OPldLBuVQeKukewiUwqJX2ZwYIotPn14uhjjV7VCRD8=; b=RujNWZCKeJJyz6ce6q5/qkowCPuhdYK3gFlb81DQIQJMl8Ydi0Jv1YNOEdd5uelbYP g6AsUZaZge2nyTmYiGv5hcs2SSw56uijM9vFsjOAlExVUOPI4Oo+BB3ccDJsZGVFxCv5 9RLmZdQqAG/7c8GfeCFYukki66TKO+GcWgqhKq5w4E7s/8TKgRq94d6fvMYxQxpdsKGd zprd4gMko0gfr1KAxxMd6LFPA6NOuiSPgFdc5QzmJt2DB76yFkXGEuqlLKx4zppIpywu xcq9mr03zakVI5y+lz3IoXpQtYxlFuOmNno4sRxCP/0mZyntVB1ngNH3PtflcJ0ZRtfk jG9Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=OPldLBuVQeKukewiUwqJX2ZwYIotPn14uhjjV7VCRD8=; b=p1j358EMqpFn/qmf/zxctRyaUyD5/E8qznqXtR5w4RJ0oRNp3Pqh0eUjRyrrpSKQ1i Ih9yE36jWhLxdWXTeI1EjhLeLk4UYyuGUcULvfOav4+8BPeLQGjq+f/XlINzp4MHSNTR nyvgvb6lvb2fBfoVGTM2mv9LqGSDk2dHA8+J5D1EHrxRpBCzVlX1gebES350f1W4t5jB k8YmE1OASxlupknVGMYW5nqc29EEEG5MaS5E8RDc/ZhHCJJTiLEdHg0mfDLaj8DifazL 9vSOYQW1jsi+wPVgOLdj7XXggrSYm3HJcYErnHotU2I5npp6GJXaz+eUmKvB9y1vagDj JGWQ== X-Gm-Message-State: AOAM531xx7oUt4RXJ/efhWD4P1uQBbnmUgcuIoCdOCX2uTNDFIR0bzci 1BBB4XUbZndBTm7hWqTxaWlnpUZeVzuPXpbvRr0XBXRB X-Google-Smtp-Source: ABdhPJwGQEr7N7WYvv8FLMs+hy3pnuh/Ev0O03uQcfkGjkcaQ216+w/98gYq0lwrNZ97+2JrQW9jywJ5ba+leK6x/aM= X-Received: by 2002:a67:1005:: with SMTP id 5mr9312400vsq.51.1624049533343; Fri, 18 Jun 2021 13:52:13 -0700 (PDT) MIME-Version: 1.0 References: <20210618204301.426877-1-anders.wallin@windriver.com> In-Reply-To: <20210618204301.426877-1-anders.wallin@windriver.com> From: "Alexander Kanavin" Date: Fri, 18 Jun 2021 22:52:02 +0200 Message-ID: Subject: Re: [OE-core][PATCH] coreutils: remove NOSTAT_LEAF_OPTIMIZATION To: Anders Wallin Cc: OE-core , Anders Wallin Content-Type: multipart/alternative; boundary="000000000000885bf805c5107f13" --000000000000885bf805c5107f13 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Apologies, but you do need to explain clearly where the patch is coming from, and set Upstream-Status appropriately. Also, it looks like something that has to be accepted by upstream first before oe-core can take it. Alex On Fri, 18 Jun 2021 at 22:43, Anders Wallin wrote: > It caused =E2=80=98find=E2=80=99 and =E2=80=98du=E2=80=99 to dump core, = and it was useful > only for obsolescent Linux filesystems anyway. Problem reported in: > https://lists.gnu.org/r/bug-gnulib/2020-04/msg00068.html > Quite possibly there is still a serious underlying fts bug with > tight-loop-check and mutating file systems, but if so this patch > should cause the bug to be triggered less often. > * lib/fts.c (enum leaf_optimization): Remove > NOSTAT_LEAF_OPTIMIZATION, as it=E2=80=99s problematic. > (S_MAGIC_REISERFS, S_MAGIC_XFS): Remove; no longer needed. > (leaf_optimization): Remove special cases for ReiserFS and XFS. > (fts_read): Remove NOSTAT_LEAF_OPTIMIZATION code. > * lib/fts_.h (struct _ftsent.fts_n_dirs_remaining): > Remove. All uses removed. > > Signed-off-by: Anders Wallin > --- > ...-fts-remove-NOSTAT_LEAF_OPTIMIZATION.patch | 162 ++++++++++++++++++ > meta/recipes-core/coreutils/coreutils_8.32.bb | 1 + > 2 files changed, 163 insertions(+) > create mode 100644 > meta/recipes-core/coreutils/coreutils/0001-fts-remove-NOSTAT_LEAF_OPTIMI= ZATION.patch > > diff --git > a/meta/recipes-core/coreutils/coreutils/0001-fts-remove-NOSTAT_LEAF_OPTI= MIZATION.patch > b/meta/recipes-core/coreutils/coreutils/0001-fts-remove-NOSTAT_LEAF_OPTI= MIZATION.patch > new file mode 100644 > index 0000000000..e3f9e3b502 > --- /dev/null > +++ > b/meta/recipes-core/coreutils/coreutils/0001-fts-remove-NOSTAT_LEAF_OPTI= MIZATION.patch > @@ -0,0 +1,162 @@ > +From 0a0d887e095f97185d25e90b59612b1da8197533 Mon Sep 17 00:00:00 2001 > +Message-Id: < > 0a0d887e095f97185d25e90b59612b1da8197533.1624008099.git.wallinux@gmail.c= om > > > +From: Paul Eggert > +Date: Wed, 15 Apr 2020 20:50:32 -0700 > +Subject: [PATCH] fts: remove NOSTAT_LEAF_OPTIMIZATION > +MIME-Version: 1.0 > +Content-Type: text/plain; charset=3DUTF-8 > +Content-Transfer-Encoding: 8bit > + > +It caused =E2=80=98find=E2=80=99 and =E2=80=98du=E2=80=99 to dump core,= and it was useful > +only for obsolescent Linux filesystems anyway. Problem reported in: > +https://lists.gnu.org/r/bug-gnulib/2020-04/msg00068.html > +Quite possibly there is still a serious underlying fts bug with > +tight-loop-check and mutating file systems, but if so this patch > +should cause the bug to be triggered less often. > +* lib/fts.c (enum leaf_optimization): Remove > +NOSTAT_LEAF_OPTIMIZATION, as it=E2=80=99s problematic. > +(S_MAGIC_REISERFS, S_MAGIC_XFS): Remove; no longer needed. > +(leaf_optimization): Remove special cases for ReiserFS and XFS. > +(fts_read): Remove NOSTAT_LEAF_OPTIMIZATION code. > +* lib/fts_.h (struct _ftsent.fts_n_dirs_remaining): > +Remove. All uses removed. > +--- > + lib/fts.c | 56 ++++++++---------------------------------------------- > + lib/fts_.h | 5 ----- > + 2 files changed, 8 insertions(+), 53 deletions(-) > + > +diff --git a/lib/fts.c b/lib/fts.c > +index d3a0472..ade8c33 100644 > +--- a/lib/fts.c > ++++ b/lib/fts.c > +@@ -445,7 +445,6 @@ fts_open (char * const *argv, > + if ((parent =3D fts_alloc(sp, "", 0)) =3D=3D NULL) > + goto mem2; > + parent->fts_level =3D FTS_ROOTPARENTLEVEL; > +- parent->fts_n_dirs_remaining =3D -1; > + } > + > + /* The classic fts implementation would call fts_stat with > +@@ -634,9 +633,8 @@ fts_close (FTS *sp) > + } > + > + /* Minimum link count of a traditional Unix directory. When leaf > +- optimization is OK and MIN_DIR_NLINK <=3D st_nlink, then st_nlink i= s > +- an upper bound on the number of subdirectories (counting "." and > +- ".."). */ > ++ optimization is OK and a directory's st_nlink =3D=3D MIN_DIR_NLINK, > ++ then the directory has no subdirectories. */ > + enum { MIN_DIR_NLINK =3D 2 }; > + > + /* Whether leaf optimization is OK for a directory. */ > +@@ -645,12 +643,8 @@ enum leaf_optimization > + /* st_nlink is not reliable for this directory's subdirectories. = */ > + NO_LEAF_OPTIMIZATION, > + > +- /* Leaf optimization is OK, but is not useful for avoiding stat > calls. */ > +- OK_LEAF_OPTIMIZATION, > +- > +- /* Leaf optimization is not only OK: it is useful for avoiding > +- stat calls, because dirent.d_type does not work. */ > +- NOSTAT_LEAF_OPTIMIZATION > ++ /* st_nlink =3D=3D 2 means the directory lacks subdirectories. */ > ++ OK_LEAF_OPTIMIZATION > + }; > + > + #if (defined __linux__ || defined __ANDROID__) \ > +@@ -663,9 +657,7 @@ enum leaf_optimization > + # define S_MAGIC_CIFS 0xFF534D42 > + # define S_MAGIC_NFS 0x6969 > + # define S_MAGIC_PROC 0x9FA0 > +-# define S_MAGIC_REISERFS 0x52654973 > + # define S_MAGIC_TMPFS 0x1021994 > +-# define S_MAGIC_XFS 0x58465342 > + > + # ifdef HAVE___FSWORD_T > + typedef __fsword_t fsword; > +@@ -782,23 +774,15 @@ dirent_inode_sort_may_be_useful (FTSENT const *p, > int dir_fd) > + } > + > + /* Given an FTS entry P for a directory with descriptor DIR_FD, > +- return true if it is both useful and valid to apply leaf optimizati= on. > +- The optimization is useful only for file systems that lack usable > +- dirent.d_type info. The optimization is valid if an st_nlink value > +- of at least MIN_DIR_NLINK is an upper bound on the number of > +- subdirectories of D, counting "." and ".." as subdirectories. > ++ return whether it is valid to apply leaf optimization. > ++ The optimization is valid if a directory's st_nlink value equal > ++ to MIN_DIR_NLINK means the directory has no subdirectories. > + DIR_FD is negative if unavailable. */ > + static enum leaf_optimization > + leaf_optimization (FTSENT const *p, int dir_fd) > + { > + switch (filesystem_type (p, dir_fd)) > + { > +- /* List here the file system types that may lack usable > dirent.d_type > +- info, yet for which the optimization does apply. */ > +- case S_MAGIC_REISERFS: > +- case S_MAGIC_XFS: /* XFS lacked it until 2013-08-22 commit. */ > +- return NOSTAT_LEAF_OPTIMIZATION; > +- > + case 0: > + /* Leaf optimization is unsafe if the file system type is > unknown. */ > + FALLTHROUGH; > +@@ -1023,26 +1007,7 @@ check_for_dir: > + if (p->fts_info =3D=3D FTS_NSOK) > + { > + if (p->fts_statp->st_size =3D=3D FTS_STAT_REQUIRED= ) > +- { > +- FTSENT *parent =3D p->fts_parent; > +- if (parent->fts_n_dirs_remaining =3D=3D 0 > +- && ISSET(FTS_NOSTAT) > +- && ISSET(FTS_PHYSICAL) > +- && (leaf_optimization (parent, > sp->fts_cwd_fd) > +- =3D=3D NOSTAT_LEAF_OPTIMIZATION)) > +- { > +- /* nothing more needed */ > +- } > +- else > +- { > +- p->fts_info =3D fts_stat(sp, p, false); > +- if (S_ISDIR(p->fts_statp->st_mode) > +- && p->fts_level !=3D FTS_ROOTLEVEL > +- && 0 < parent->fts_n_dirs_remaining > +- && parent->fts_n_dirs_remaining !=3D > (nlink_t) -1) > +- parent->fts_n_dirs_remaining--; > +- } > +- } > ++ p->fts_info =3D fts_stat(sp, p, false); > + else > + fts_assert (p->fts_statp->st_size =3D=3D > FTS_NO_STAT_REQUIRED); > + } > +@@ -1826,11 +1791,6 @@ err: memset(sbp, 0, sizeof(struct > stat)); > + } > + > + if (S_ISDIR(sbp->st_mode)) { > +- p->fts_n_dirs_remaining > +- =3D ((sbp->st_nlink < MIN_DIR_NLINK > +- || p->fts_level <=3D FTS_ROOTLEVEL) > +- ? -1 > +- : sbp->st_nlink - (ISSET (FTS_SEEDOT) ? 0 : > MIN_DIR_NLINK)); > + if (ISDOT(p->fts_name)) { > + /* Command-line "." and ".." are real > directories. */ > + return (p->fts_level =3D=3D FTS_ROOTLEVEL ? FT= S_D : > FTS_DOT); > +diff --git a/lib/fts_.h b/lib/fts_.h > +index 6c7d0ce..15c248c 100644 > +--- a/lib/fts_.h > ++++ b/lib/fts_.h > +@@ -219,11 +219,6 @@ typedef struct _ftsent { > + > + size_t fts_namelen; /* strlen(fts_name) */ > + > +- /* If not (nlink_t) -1, an upper bound on the number of > +- remaining subdirectories of interest. If this becomes > +- zero, some work can be avoided. */ > +- nlink_t fts_n_dirs_remaining; > +- > + # define FTS_D 1 /* preorder directory */ > + # define FTS_DC 2 /* directory that causes cycle= s > */ > + # define FTS_DEFAULT 3 /* none of the above */ > +-- > +2.29.2 > + > diff --git a/meta/recipes-core/coreutils/coreutils_8.32.bb > b/meta/recipes-core/coreutils/coreutils_8.32.bb > index f3fe31fd3b..dd271d4968 100644 > --- a/meta/recipes-core/coreutils/coreutils_8.32.bb > +++ b/meta/recipes-core/coreutils/coreutils_8.32.bb > @@ -21,6 +21,7 @@ SRC_URI =3D "${GNU_MIRROR}/coreutils/${BP}.tar.xz \ > file://0001-local.mk-fix-cross-compiling-problem.patch \ > file://run-ptest \ > > file://0001-ls-restore-8.31-behavior-on-removed-directories.patch \ > + file://0001-fts-remove-NOSTAT_LEAF_OPTIMIZATION.patch \ > " > > SRC_URI[md5sum] =3D "022042695b7d5bcf1a93559a9735e668" > -- > 2.32.0 > > >=20 > > --000000000000885bf805c5107f13 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Apologies, but you do need to explain clearly where t= he patch is coming from, and set Upstream-Status appropriately.
<= br>
Also, it looks like something that has to be accepted by upst= ream first before oe-core can take it.

Alex

On Fri, 18 Jun 2021 at 22:43, Anders Wallin <wallinux@gmail.com> wrote:
It caused =E2=80=98find=E2=80=99 and =E2= =80=98du=E2=80=99 to dump core, and it was useful
only for obsolescent Linux filesystems anyway.=C2=A0 Problem reported in:<= br> https://lists.gnu.org/r/bug-gnulib/2020-= 04/msg00068.html
Quite possibly there is still a serious underlying fts bug with
tight-loop-check and mutating file systems, but if so this patch
should cause the bug to be triggered less often.
* lib/fts.c (enum leaf_optimization): Remove
NOSTAT_LEAF_OPTIMIZATION, as it=E2=80=99s problematic.
(S_MAGIC_REISERFS, S_MAGIC_XFS): Remove; no longer needed.
(leaf_optimization): Remove special cases for ReiserFS and XFS.
(fts_read): Remove NOSTAT_LEAF_OPTIMIZATION code.
* lib/fts_.h (struct _ftsent.fts_n_dirs_remaining):
Remove.=C2=A0 All uses removed.

Signed-off-by: Anders Wallin <anders.wallin@windriver.com>
---
=C2=A0...-fts-remove-NOSTAT_LEAF_OPTIMIZATION.patch | 162 ++++++++++++++++= ++
=C2=A0meta/recipes-core/coreutils/coreutils_8.32.bb |=C2=A0 =C2=A01 +<= br> =C2=A02 files changed, 163 insertions(+)
=C2=A0create mode 100644 meta/recipes-core/coreutils/coreutils/0001-fts-re= move-NOSTAT_LEAF_OPTIMIZATION.patch

diff --git a/meta/recipes-core/coreutils/coreutils/0001-fts-remove-NOSTAT_= LEAF_OPTIMIZATION.patch b/meta/recipes-core/coreutils/coreutils/0001-fts-re= move-NOSTAT_LEAF_OPTIMIZATION.patch
new file mode 100644
index 0000000000..e3f9e3b502
--- /dev/null
+++ b/meta/recipes-core/coreutils/coreutils/0001-fts-remove-NOSTAT_LEAF_OP= TIMIZATION.patch
@@ -0,0 +1,162 @@
+From 0a0d887e095f97185d25e90b59612b1da8197533 Mon Sep 17 00:00:00 2001 +Message-Id: <0a0d887e095f97185d25= e90b59612b1da8197533.1624008099.git.wallinux@gmail.com>
+From: Paul Eggert <eggert@cs.ucla.edu>
+Date: Wed, 15 Apr 2020 20:50:32 -0700
+Subject: [PATCH] fts: remove NOSTAT_LEAF_OPTIMIZATION
+MIME-Version: 1.0
+Content-Type: text/plain; charset=3DUTF-8
+Content-Transfer-Encoding: 8bit
+
+It caused =E2=80=98find=E2=80=99 and =E2=80=98du=E2=80=99 to dump core, a= nd it was useful
+only for obsolescent Linux filesystems anyway.=C2=A0 Problem reported in:=
+https://lists.gnu.org/r/bug-gnulib/2020-= 04/msg00068.html
+Quite possibly there is still a serious underlying fts bug with
+tight-loop-check and mutating file systems, but if so this patch
+should cause the bug to be triggered less often.
+* lib/fts.c (enum leaf_optimization): Remove
+NOSTAT_LEAF_OPTIMIZATION, as it=E2=80=99s problematic.
+(S_MAGIC_REISERFS, S_MAGIC_XFS): Remove; no longer needed.
+(leaf_optimization): Remove special cases for ReiserFS and XFS.
+(fts_read): Remove NOSTAT_LEAF_OPTIMIZATION code.
+* lib/fts_.h (struct _ftsent.fts_n_dirs_remaining):
+Remove.=C2=A0 All uses removed.
+---
+ lib/fts.c=C2=A0 | 56 ++++++++-------------------------------------------= ---
+ lib/fts_.h |=C2=A0 5 -----
+ 2 files changed, 8 insertions(+), 53 deletions(-)
+
+diff --git a/lib/fts.c b/lib/fts.c
+index d3a0472..ade8c33 100644
+--- a/lib/fts.c
++++ b/lib/fts.c
+@@ -445,7 +445,6 @@ fts_open (char * const *argv,
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if ((parent= =3D fts_alloc(sp, "", 0)) =3D=3D NULL)
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= = =A0 =C2=A0 =C2=A0goto mem2;
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0parent->= fts_level =3D FTS_ROOTPARENTLEVEL;
+-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 parent->fts_n= _dirs_remaining =3D -1;
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}
+
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* The classic fts implementation would= call fts_stat with
+@@ -634,9 +633,8 @@ fts_close (FTS *sp)
+ }
+
+ /* Minimum link count of a traditional Unix directory.=C2=A0 When leaf +-=C2=A0 =C2=A0optimization is OK and MIN_DIR_NLINK <=3D st_nlink, then= st_nlink is
+-=C2=A0 =C2=A0an upper bound on the number of subdirectories (counting &q= uot;." and
+-=C2=A0 =C2=A0"..").=C2=A0 */
++=C2=A0 =C2=A0optimization is OK and a directory's st_nlink =3D=3D MI= N_DIR_NLINK,
++=C2=A0 =C2=A0then the directory has no subdirectories.=C2=A0 */
+ enum { MIN_DIR_NLINK =3D 2 };
+
+ /* Whether leaf optimization is OK for a directory.=C2=A0 */
+@@ -645,12 +643,8 @@ enum leaf_optimization
+=C2=A0 =C2=A0 =C2=A0/* st_nlink is not reliable for this directory's = subdirectories.=C2=A0 */
+=C2=A0 =C2=A0 =C2=A0NO_LEAF_OPTIMIZATION,
+
+-=C2=A0 =C2=A0 /* Leaf optimization is OK, but is not useful for avoiding= stat calls.=C2=A0 */
+-=C2=A0 =C2=A0 OK_LEAF_OPTIMIZATION,
+-
+-=C2=A0 =C2=A0 /* Leaf optimization is not only OK: it is useful for avoi= ding
+-=C2=A0 =C2=A0 =C2=A0 =C2=A0stat calls, because dirent.d_type does not wo= rk.=C2=A0 */
+-=C2=A0 =C2=A0 NOSTAT_LEAF_OPTIMIZATION
++=C2=A0 =C2=A0 /* st_nlink =3D=3D 2 means the directory lacks subdirector= ies.=C2=A0 */
++=C2=A0 =C2=A0 OK_LEAF_OPTIMIZATION
+=C2=A0 =C2=A0};
+
+ #if (defined __linux__ || defined __ANDROID__) \
+@@ -663,9 +657,7 @@ enum leaf_optimization
+ # define S_MAGIC_CIFS 0xFF534D42
+ # define S_MAGIC_NFS 0x6969
+ # define S_MAGIC_PROC 0x9FA0
+-# define S_MAGIC_REISERFS 0x52654973
+ # define S_MAGIC_TMPFS 0x1021994
+-# define S_MAGIC_XFS 0x58465342
+
+ # ifdef HAVE___FSWORD_T
+ typedef __fsword_t fsword;
+@@ -782,23 +774,15 @@ dirent_inode_sort_may_be_useful (FTSENT const *p, i= nt dir_fd)
+ }
+
+ /* Given an FTS entry P for a directory with descriptor DIR_FD,
+-=C2=A0 =C2=A0return true if it is both useful and valid to apply leaf op= timization.
+-=C2=A0 =C2=A0The optimization is useful only for file systems that lack = usable
+-=C2=A0 =C2=A0dirent.d_type info.=C2=A0 The optimization is valid if an s= t_nlink value
+-=C2=A0 =C2=A0of at least MIN_DIR_NLINK is an upper bound on the number o= f
+-=C2=A0 =C2=A0subdirectories of D, counting "." and "..&qu= ot;=C2=A0 as subdirectories.
++=C2=A0 =C2=A0return whether it is valid to apply leaf optimization.
++=C2=A0 =C2=A0The optimization is valid if a directory's st_nlink val= ue equal
++=C2=A0 =C2=A0to MIN_DIR_NLINK means the directory has no subdirectories.=
+=C2=A0 =C2=A0 DIR_FD is negative if unavailable.=C2=A0 */
+ static enum leaf_optimization
+ leaf_optimization (FTSENT const *p, int dir_fd)
+ {
+=C2=A0 =C2=A0switch (filesystem_type (p, dir_fd))
+=C2=A0 =C2=A0 =C2=A0{
+-=C2=A0 =C2=A0 =C2=A0 /* List here the file system types that may lack us= able dirent.d_type
+-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0info, yet for which the optimization d= oes apply.=C2=A0 */
+-=C2=A0 =C2=A0 case S_MAGIC_REISERFS:
+-=C2=A0 =C2=A0 case S_MAGIC_XFS: /* XFS lacked it until 2013-08-22 commit= .=C2=A0 */
+-=C2=A0 =C2=A0 =C2=A0 return NOSTAT_LEAF_OPTIMIZATION;
+-
+=C2=A0 =C2=A0 =C2=A0case 0:
+=C2=A0 =C2=A0 =C2=A0 =C2=A0/* Leaf optimization is unsafe if the file sys= tem type is unknown.=C2=A0 */
+=C2=A0 =C2=A0 =C2=A0 =C2=A0FALLTHROUGH;
+@@ -1023,26 +1007,7 @@ check_for_dir:
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (p->f= ts_info =3D=3D FTS_NSOK)
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0{ +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= = =A0if (p->fts_statp->st_size =3D=3D FTS_STAT_REQUIRED)
+-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 {
+-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 FTSENT *parent =3D p->fts_parent;
+-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 if (parent->fts_n_dirs_remaining =3D=3D 0
+-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 && ISSET(FTS_NOSTAT)
+-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 && ISSET(FTS_PHYSICAL)
+-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 && (leaf_optimization (parent, sp->= fts_cwd_fd)
+-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =3D=3D NOSTAT_LEAF_OPTIMIZATION)= )
+-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 {
+-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* nothing more needed */
+-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 }
+-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 else
+-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 {
+-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 p->fts_info =3D fts_stat(sp, p, false);
+-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (S_ISDIR(p->fts_statp->st_mode)
+-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 && p->fts_level !=3D = FTS_ROOTLEVEL
+-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 && 0 < parent->fts= _n_dirs_remaining
+-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 && parent->fts_n_dirs= _remaining !=3D (nlink_t) -1)
+-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 parent->fts_n_dirs_rem= aining--;
+-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 }
+-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 }
++=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 p->fts_info =3D fts_stat(sp, p, false);
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= = =A0else
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= = =A0 =C2=A0fts_assert (p->fts_statp->st_size =3D=3D FTS_NO_STAT_REQUI= RED);
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0} +@@ -1826,11 +1791,6 @@ err:=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 mems= et(sbp, 0, sizeof(struct stat));
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}
+
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (S_ISDIR(sbp->st_mode)) {
+-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 p->fts_n_dirs= _remaining
+-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =3D ((sbp= ->st_nlink < MIN_DIR_NLINK
+-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 || p->fts_level <=3D FTS_ROOTLEVEL)
+-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0? -1
+-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0: sbp->st_nlink - (ISSET (FTS_SEEDOT) ? 0 : MIN_DIR_NLINK));
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (ISDOT(p= ->fts_name)) {
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= = =A0 =C2=A0 =C2=A0/* Command-line "." and ".." are real= directories. */
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= = =A0 =C2=A0 =C2=A0return (p->fts_level =3D=3D FTS_ROOTLEVEL ? FTS_D : FT= S_DOT);
+diff --git a/lib/fts_.h b/lib/fts_.h
+index 6c7d0ce..15c248c 100644
+--- a/lib/fts_.h
++++ b/lib/fts_.h
+@@ -219,11 +219,6 @@ typedef struct _ftsent {
+
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0size_t fts_namelen;=C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0/* strlen(fts_name) */
+
+-=C2=A0 =C2=A0 =C2=A0 =C2=A0 /* If not (nlink_t) -1, an upper bound on th= e number of
+-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0remaining subdirectories of int= erest.=C2=A0 If this becomes
+-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0zero, some work can be avoided.= = =C2=A0 */
+-=C2=A0 =C2=A0 =C2=A0 =C2=A0 nlink_t fts_n_dirs_remaining;
+-
+ # define FTS_D=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A01=C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* preorder directory */
+ # define FTS_DC=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 2=C2=A0 =C2=A0 =C2=A0 = = =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* directory that causes cycles */
+ # define FTS_DEFAULT=C2=A0 =C2=A0 =C2=A03=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= = =A0 =C2=A0 =C2=A0 /* none of the above */
+--
+2.29.2
+
diff --git a/meta/recipes-core/coreutils/coreutils_8.32.bb b/meta/recip= es-core/coreutils/coreutils_8.32.bb
index f3fe31fd3b..dd271d4968 100644
--- a/meta/recipes-core/coreutils/coreutils_8.32.bb
+++ b/meta/recipes-core/coreutils/coreutils_8.32.bb
@@ -21,6 +21,7 @@ SRC_URI =3D "${GNU_MIRROR}/coreutils/${BP}.tar.xz \=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 file://0001-local.mk-fix-cross-c= ompiling-problem.patch \
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 file://run-ptest \
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 file://0001-ls-restore-8.31-beha= vior-on-removed-directories.patch \
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0file://0001-fts-remove-NOSTAT_LE= AF_OPTIMIZATION.patch \
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 "

=C2=A0SRC_URI[md5sum] =3D "022042695b7d5bcf1a93559a9735e668"
--
2.32.0




--000000000000885bf805c5107f13--