From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from phobos.denx.de (phobos.denx.de [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) by sourceware.org (Postfix) with ESMTPS id 753E13857431 for ; Thu, 17 Jun 2021 14:20:36 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 753E13857431 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=denx.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=denx.de Received: from ktm (85-222-111-42.dynamic.chello.pl [85.222.111.42]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) (Authenticated sender: lukma@denx.de) by phobos.denx.de (Postfix) with ESMTPSA id 3F62A82A15; Thu, 17 Jun 2021 16:20:34 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=denx.de; s=phobos-20191101; t=1623939634; bh=QRfUNlU8HbbIfHRsmo6yc4TOtzBgY9BLOsJ/yUZ5ixk=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=I7cefH1V795zuu8NI3E4HfMBZZKtS3jmkxeK1k5T3X0eyv7IXSm9yTDQyuwzKynu7 Vo3poUPJPwqETfAMJjOcVeGksHEpLc2yVDbvAtCn063J45RrV04s73nBNLdk3ezCAx YYbATqzU2KsYoZ0lhmVU4L3ni3+cj7mlTai4cnrkFTHwyqroGz9mZvwnjvRjI8l6E6 KH1LQ99G1y30tMU7p/iMLNywLVpAc4BQBu211yhNVm2GeCO5g9zTkXH91z+xgS3EGu HC2wLN3TLOlsHxmjeww0AdsTE/2zYWnIAaOcWIsF/yJz+0AUiFmV3qJL8fBsfmxIht ukGFKr0Gnvg6g== Date: Thu, 17 Jun 2021 16:20:21 +0200 From: Lukasz Majewski To: Adhemerval Zanella Cc: libc-alpha@sourceware.org, Carlos O'Donell Subject: Re: [PATCH 00/18] More y2038 fixes Message-ID: <20210617162021.52a63a3e@ktm> In-Reply-To: <20210617115104.1359598-1-adhemerval.zanella@linaro.org> References: <20210617115104.1359598-1-adhemerval.zanella@linaro.org> Organization: denx.de X-Mailer: Claws Mail 3.17.8 (GTK+ 2.24.32; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; boundary="Sig_/VMV6hvQI/UTLBpLeY1sx+dL"; protocol="application/pgp-signature" X-Virus-Scanned: clamav-milter 0.103.2 at phobos.denx.de X-Virus-Status: Clean X-Spam-Status: No, score=-3.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, RCVD_IN_BARRACUDACENTRAL, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=no autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Jun 2021 14:20:38 -0000 --Sig_/VMV6hvQI/UTLBpLeY1sx+dL Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Hi Adhemerval, > Hi Carlos and Lukasz, >=20 > This patchset adds more y2038 fixes that I would like to push for > 2.34. The first two patches enable more internal y2038 usage on glibc > and also for the installed programs. Making glibc the first consumer > of these newer interfaces should improve coverage. >=20 Those two patches were already available for review for some time. Indeed, by using 64-bit time internally we may have more testing (sooner). > The next 6 patches removes an optimization I added on some specific > syscall, where a global variable it atomically set once glibc detects > that kernel supports 64-bit time. The problem with this approach > breaks the usage case of live migration like CRIU or similar. I do recall that this optimization was to avoid performance regression on legacy systems - to avoid issuing two syscalls (64 bit one and then 32 bit one). > Also > for some interfaces that do not query information from kernel, most > usages can be optimized away by either building glibc with a minimum > 5.1 kernel or by using the 32-bit syscall for the common case. I do think that this approach (with classification of use cases based on specified kernel version) aligns with how people will build setups for those systems (at least I do it in this way for OE/Yocto). >=20 > So the following patch implement this optimization for the interfaces > that allows it. If the provided timeout can be fit in old 32-bit > time_t, the old syscall is used instead. This optimization is only > used for !__ASSUME_TIME64_SYSCALLS, otherwise the newer 64-bit > syscall are used. Ok. >=20 > I checked this with 3 different configation which should cover most > usages: >=20 > - i686-linux-gnu on a 4.15 kernel and default --enable-kernel=3D3.2. > This uses the 32-bit optimization to avoid calling the newer > 64-bit syscall when possible. It also triggers and EOVERFLOW > when 64-bit inputs are used without proper kernel support. Ok. > - i686-linux-gnu on a 5.11 kernel and default --enable-kernel=3D3.2. > This will also use the 32-bit optimization, but it will always > succeded due proper kernel support. Ok. > - i686-linux-gnu on a 5.11 kernel and with --enable-kernel=3D5.1. > This enables __ASSUME_TIME64_SYSCALLS and only uses 64-bit > time_t syscalls. Ok. BTW: I'm wondering when the minimal, supported Linux kernel version is going to be moved forward? >=20 > Adhemerval Zanella (18): > Use 64 bit time_t stat internally > Use LFS and 64 bit time for installed programs > support: Add support_create_timer > linux: Only use 64-bit syscall if required for ppoll > linux: Only use 64-bit syscall if required for pselect > linux: Only use 64-bit syscall if required for select > linux: Remove supports_time64 () from clock_getres > linux: Remove supports_time64 () from clock_gettime > linux: Remove time64-support > linux: timerfd_gettime minor cleanup > linux: Only use 64-bit syscall if required for semtimedop > linux: Only use 64-bit syscall if required for timerfd_settime > linux: Only use 64-bit syscall if required for mq_timedreceive > linux: Only use 64-bit syscall if required for mq_timedsend > linux: Only use 64-bit syscall if required for sigtimedwait > linux: Only use 64-bit syscall if required for utimensat family > linux: Only use 64-bit syscall if required for internal futex > linux: Only use 64-bit syscall if required for clock_nanosleep >=20 > Makeconfig | 8 +- > Makerules | 12 +- > csu/check_fds.c | 8 +- > elf/dl-load.c | 8 +- > elf/dl-misc.c | 4 +- > elf/dl-profile.c | 4 +- > iconv/gconv_cache.c | 4 +- > include/dirent.h | 2 +- > include/file_change_detection.h | 6 +- > include/sys/select.h | 5 + > inet/rcmd.c | 6 +- > intl/loadmsgcat.c | 4 +- > io/Makefile | 4 +- > io/file_change_detection.c | 16 ++- > io/getdirname.c | 6 +- > libio/filedoalloc.c | 2 +- > libio/fileops.c | 8 +- > libio/oldfileops.c | 2 +- > libio/wfileops.c | 2 +- > locale/loadarchive.c | 8 +- > locale/loadlocale.c | 6 +- > locale/localeinfo.h | 2 +- > misc/Makefile | 11 ++ > misc/tst-pselect.c | 120 > ++++++++---------- misc/tst-select.c | > 39 +++--- nptl/futex-internal.c | 52 +++++--- > nscd/nscd_helper.c | 4 +- > nss/nss_database.c | 4 +- > rt/Makefile | 4 +- > rt/tst-mqueue10-time64.c | 1 + > rt/tst-mqueue10.c | 72 +++++++++++ > support/Makefile | 1 + > support/support.h | 11 ++ > support/support_create_timer.c | 69 ++++++++++ > sysdeps/nptl/futex-internal.h | 24 ++-- > sysdeps/posix/dl-fileid.h | 4 +- > sysdeps/posix/euidaccess.c | 4 +- > sysdeps/posix/getaddrinfo.c | 21 +-- > sysdeps/posix/getcwd.c | 15 ++- > sysdeps/posix/pathconf.c | 4 +- > sysdeps/posix/sysconf.c | 4 +- > sysdeps/posix/tempname.c | 8 +- > sysdeps/unix/sysv/linux/Makefile | 15 ++- > sysdeps/unix/sysv/linux/clock_getres.c | 16 +-- > sysdeps/unix/sysv/linux/clock_gettime.c | 14 +- > sysdeps/unix/sysv/linux/clock_nanosleep.c | 47 ++++--- > sysdeps/unix/sysv/linux/fdopendir.c | 4 +- > sysdeps/unix/sysv/linux/fexecve.c | 4 +- > .../unix/sysv/linux/microblaze/pselect32.c | 3 +- > sysdeps/unix/sysv/linux/mq_timedreceive.c | 35 ++--- > sysdeps/unix/sysv/linux/mq_timedsend.c | 35 ++--- > sysdeps/unix/sysv/linux/opendir.c | 7 +- > sysdeps/unix/sysv/linux/pathconf.c | 5 +- > sysdeps/unix/sysv/linux/ppoll.c | 41 +++--- > sysdeps/unix/sysv/linux/pselect.c | 47 ++++--- > sysdeps/unix/sysv/linux/pselect32.c | 6 - > sysdeps/unix/sysv/linux/select.c | 60 +++------ > sysdeps/unix/sysv/linux/select32.c | 58 +++++++++ > sysdeps/unix/sysv/linux/semtimedop.c | 54 ++++---- > sysdeps/unix/sysv/linux/sigtimedwait.c | 26 ++-- > sysdeps/unix/sysv/linux/time64-support.c | 23 ---- > sysdeps/unix/sysv/linux/time64-support.h | 70 ---------- > sysdeps/unix/sysv/linux/timerfd_gettime.c | 10 +- > sysdeps/unix/sysv/linux/timerfd_settime.c | 25 ++-- > sysdeps/unix/sysv/linux/tst-ppoll.c | 15 +++ > sysdeps/unix/sysv/linux/tst-sigtimedwait.c | 18 +++ > sysdeps/unix/sysv/linux/tst-timerfd.c | 29 ++++- > sysdeps/unix/sysv/linux/ttyname.h | 10 +- > sysdeps/unix/sysv/linux/ttyname_r.c | 16 +-- > sysdeps/unix/sysv/linux/utimensat.c | 35 +++-- > sysvipc/Makefile | 9 ++ > sysvipc/ftok.c | 4 +- > sysvipc/test-sysvsem.c | 22 +++- > time/Makefile | 9 ++ > time/tst-clock_nanosleep.c | 40 +++--- > time/tzfile.c | 6 +- > 76 files changed, 851 insertions(+), 566 deletions(-) > create mode 100644 rt/tst-mqueue10-time64.c > create mode 100644 rt/tst-mqueue10.c > create mode 100644 support/support_create_timer.c > create mode 100644 sysdeps/unix/sysv/linux/select32.c > delete mode 100644 sysdeps/unix/sysv/linux/time64-support.c > delete mode 100644 sysdeps/unix/sysv/linux/time64-support.h >=20 Best regards, Lukasz Majewski -- DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de --Sig_/VMV6hvQI/UTLBpLeY1sx+dL Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQEzBAEBCgAdFiEEgAyFJ+N6uu6+XupJAR8vZIA0zr0FAmDLWiUACgkQAR8vZIA0 zr0FYAf/Q0ZmxxKc528sMxgZLPJ8QgBmbKTMFHV7TvXhZlpMHVeqzsHeCChb2ZPO KOGeTmvw9uqSF780z5APzd74nMQNQvmZiFIU36TC1hHWhUSn4WAW3gVngJa3pttF vsDJEkFbPm11T4qqw/COeu0OzihPvYjTxf/kMbwRu3m9K/mR5yKlautwbLS/L5Ib JH2hO5AwkpAm0amNm13uHhDuR/TYRs4NX4r3R5uUoXnye8HeTNEPR99R4c+usKbG /luHMhQZuQbCAHIhak9qN4yIwTzYJDAxoKWBBA7W9AzxPvY2gQ3OLSkAwX4i+3cd hiGjwYWK9GoR1NMdbEF1L2HUP9UNEA== =5E3I -----END PGP SIGNATURE----- --Sig_/VMV6hvQI/UTLBpLeY1sx+dL--