On Mon, Mar 23, 2020 at 03:11:50PM +0100, Johannes Schindelin wrote: > Hi, > > On Sun, 22 Mar 2020, Đoàn Trần Công Danh wrote: > > > Since commit 6b7728db81, (t7063: work around FreeBSD's lazy mtime > > update feature, 2016-08-03), we started to use ls as a trick to update > > directory's mtime. > > > > However, `-ls` flag isn't required by POSIX's find(1), and > > busybox(1) doesn't implement it. > > > > >From the original conversation, it seems like find(1) with "-type d" > > could trigger enough "lstat(2)" to ask FreeBSD update mtime. > > This rationale makes me uneasy: why did Duy add _both_ `-type d` *and* > `-ls` if the former would have been enough? man readdir on my Linux gives: [] DESCRIPTION The readdir() function returns a pointer to a dirent structure representing the next directory entry in the directory stream pointed to by dirp. It returns NULL on reaching the end of the directory stream or if an error occurred. In the glibc implementation, the dirent structure is defined as follows: struct dirent { ino_t d_ino; /* Inode number */ off_t d_off; /* Not an offset; see below */ unsigned short d_reclen; /* Length of this record */ unsigned char d_type; /* Type of file; not supported by all filesystem types */ char d_name[256]; /* Null-terminated filename */ }; So we could imagine that `find` is clever enough to extract "-type d" already when calling readdir(), and the "good old" following stat() is not needed here. So I would strongly agree with Dscho to keep the `ls` [snip]