From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [63.128.21.124]) by sourceware.org (Postfix) with ESMTP id 0D8913850419 for ; Thu, 11 Feb 2021 00:37:45 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 0D8913850419 Received: from mail-qt1-f199.google.com (mail-qt1-f199.google.com [209.85.160.199]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-454-znuuIXO-PaeF-hVRyehXbA-1; Wed, 10 Feb 2021 19:37:43 -0500 X-MC-Unique: znuuIXO-PaeF-hVRyehXbA-1 Received: by mail-qt1-f199.google.com with SMTP id e3so1236268qtc.1 for ; Wed, 10 Feb 2021 16:37:43 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:from:organization :message-id:date:user-agent:mime-version:in-reply-to :content-language:content-transfer-encoding; bh=UIQBD9Qva3W9t/9j3yQ/sGtqj/7Ppe8Ytzow6uUAz7Q=; b=eKJhL8Ur8reLbfd3DOwZgkW2F68ZYHkzfAwHsBaqIyLJMQwUPLlVEsE523KOBadZRU wVHOjCP4EojcMYMjgKBBKSRtf0ZnO7FPSA+aGFg8XXA0iUPVbPo9JlX+m9P7hQ+4bmuP ItMAMeKkup0hfL5RL/n+M9vhCpg+ckHqm0UtHVsoJG+UvyHda4q//r+V5jRObGiVTRW6 TJXy70lBl4YKOobpr8lIcDsm/mUiSFf+UeBdmtR1ek5kdV7AobzRn5RPMxf0nRmycqN7 sceJhRBWacBfRwMGUu9xxiqi4GKoNOlKlvoewAX7ANycsH4w9EhtaCh2s627ltHULD4M pgVA== X-Gm-Message-State: AOAM5326CAcRirmWk6oT7no6TXTZRopaQ5BPWWDb/STc1ir4OKj3on2K wiWYXzxs9UWKaspelIg1Zpx7hpUbl+XHsVMQL929m47ejscvGnqWW0+ujfnCMJS7JePbKV/fLLa 3SvPjV1cxa6yZdraJKWx5jo9TPTKT3VEw13tPCHK9s7uuCjVcqoozFY7gQgozhtfnmFLBWQ== X-Received: by 2002:a0c:b65c:: with SMTP id q28mr5310065qvf.49.1613003862564; Wed, 10 Feb 2021 16:37:42 -0800 (PST) X-Google-Smtp-Source: ABdhPJzQBPNpqqUTD14xfimqpJTa7oTpKOceLSJyyc7wMzIBB3rDEzqK4VmPQBsLJx+PkvAbJF79vg== X-Received: by 2002:a0c:b65c:: with SMTP id q28mr5310051qvf.49.1613003862322; Wed, 10 Feb 2021 16:37:42 -0800 (PST) Received: from [192.168.1.16] (198-84-214-74.cpe.teksavvy.com. [198.84.214.74]) by smtp.gmail.com with ESMTPSA id s9sm2814043qke.67.2021.02.10.16.37.41 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 10 Feb 2021 16:37:41 -0800 (PST) Subject: Re: [PATCH 03/10] linux: Set LFS statfs as default To: Adhemerval Zanella , libc-alpha@sourceware.org References: <20210208214936.1502047-1-adhemerval.zanella@linaro.org> <20210208214936.1502047-4-adhemerval.zanella@linaro.org> From: Carlos O'Donell Organization: Red Hat Message-ID: <67353dc5-9500-2b69-a54b-0168e4c251d3@redhat.com> Date: Wed, 10 Feb 2021 19:37:41 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.6.0 MIME-Version: 1.0 In-Reply-To: <20210208214936.1502047-4-adhemerval.zanella@linaro.org> X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-11.8 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, NICE_REPLY_A, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham 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, 11 Feb 2021 00:37:46 -0000 On 2/8/21 4:49 PM, Adhemerval Zanella via Libc-alpha wrote: > Currently glibc has three different struct statfs{64} definitions: > > 1. Non-LFS support where non-LFS and LFS struct have different > size: alpha, arm, hppa, i686, m68k, microblaze, mips (all abis), > powerpc32, s390, sh4, and sparc. Correct, generally 32-bit targets. > > 2. Non-LFS support where non-LFS and LFS struct have the same > size: csky and nios2. Usually newer ports. > > 3. Only LFS support (where both struct have the same size): arc, > ia64, powerpc64 (including LE), riscv (both 32 and 64 bits), > s390x, sparc64, and x86 (including x32). Usually 64-bit ports or very new 32-bit ports aligned with LFS. > The STATFS_IS_STATFS64/__STATFS_MATCHES_STATFS64 does not tell apart > between 1. and 2.; since for both the only difference is the struct > size (for 2. both non-LFS and LFS uses the same syscall, where for > 1. the old non-LFS is used for {f}statfs). > > This patch move the generic statfs.h for both csky and nios2, and > make the default definitions for newer ABIs to assume that only > LFS will be support (so there is no need to keep no-LFS and LFS > struct statfs with the same size, it will be implicit). Good cleanup. Reviewed-by: Carlos O'Donell > > This patch does not change the code generation. > --- > .../linux/{generic => csky}/bits/statfs.h | 11 --- > sysdeps/unix/sysv/linux/nios2/bits/statfs.h | 75 +++++++++++++++++++ > 2 files changed, 75 insertions(+), 11 deletions(-) > rename sysdeps/unix/sysv/linux/{generic => csky}/bits/statfs.h (79%) > create mode 100644 sysdeps/unix/sysv/linux/nios2/bits/statfs.h > > diff --git a/sysdeps/unix/sysv/linux/generic/bits/statfs.h b/sysdeps/unix/sysv/linux/csky/bits/statfs.h > similarity index 79% > rename from sysdeps/unix/sysv/linux/generic/bits/statfs.h > rename to sysdeps/unix/sysv/linux/csky/bits/statfs.h > index bef18a3696..131b6adfba 100644 > --- a/sysdeps/unix/sysv/linux/generic/bits/statfs.h > +++ b/sysdeps/unix/sysv/linux/csky/bits/statfs.h > @@ -1,6 +1,5 @@ > /* Copyright (C) 2011-2021 Free Software Foundation, Inc. > This file is part of the GNU C Library. > - Contributed by Chris Metcalf , 2011. > > The GNU C Library is free software; you can redistribute it and/or > modify it under the terms of the GNU Lesser General Public > @@ -24,18 +23,8 @@ > #include > #include > > -/* 64-bit libc uses the kernel's 'struct statfs', accessed via the > - statfs() syscall; 32-bit libc uses the kernel's 'struct statfs64' > - and accesses it via the statfs64() syscall. All the various > - APIs offered by libc use the kernel shape for their struct statfs > - structure; the only difference is that 32-bit programs not > - using __USE_FILE_OFFSET64 only see the low 32 bits of some > - of the fields (the __fsblkcnt_t and __fsfilcnt_t fields). */ > - > #if defined __USE_FILE_OFFSET64 > # define __field64(type, type64, name) type64 name > -#elif __WORDSIZE == 64 || __STATFS_MATCHES_STATFS64 > -# define __field64(type, type64, name) type name > #elif __BYTE_ORDER == __LITTLE_ENDIAN > # define __field64(type, type64, name) \ > type name __attribute__((__aligned__ (__alignof__ (type64)))); int __##name##_pad > diff --git a/sysdeps/unix/sysv/linux/nios2/bits/statfs.h b/sysdeps/unix/sysv/linux/nios2/bits/statfs.h > new file mode 100644 > index 0000000000..131b6adfba > --- /dev/null > +++ b/sysdeps/unix/sysv/linux/nios2/bits/statfs.h > @@ -0,0 +1,75 @@ > +/* Copyright (C) 2011-2021 Free Software Foundation, Inc. > + This file is part of the GNU C Library. > + > + The GNU C Library is free software; you can redistribute it and/or > + modify it under the terms of the GNU Lesser General Public > + License as published by the Free Software Foundation; either > + version 2.1 of the License, or (at your option) any later version. > + > + The GNU C Library is distributed in the hope that it will be useful, > + but WITHOUT ANY WARRANTY; without even the implied warranty of > + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > + Lesser General Public License for more details. > + > + You should have received a copy of the GNU Lesser General Public > + License along with the GNU C Library. If not, see > + . */ > + > +#ifndef _SYS_STATFS_H > +# error "Never include directly; use instead." > +#endif > + > +#include > +#include > +#include > + > +#if defined __USE_FILE_OFFSET64 > +# define __field64(type, type64, name) type64 name > +#elif __BYTE_ORDER == __LITTLE_ENDIAN > +# define __field64(type, type64, name) \ > + type name __attribute__((__aligned__ (__alignof__ (type64)))); int __##name##_pad > +#else > +# define __field64(type, type64, name) \ > + int __##name##_pad __attribute__((__aligned__ (__alignof__ (type64)))); type name > +#endif > + > +struct statfs > + { > + __SWORD_TYPE f_type; > + __SWORD_TYPE f_bsize; > + __field64(__fsblkcnt_t, __fsblkcnt64_t, f_blocks); > + __field64(__fsblkcnt_t, __fsblkcnt64_t, f_bfree); > + __field64(__fsblkcnt_t, __fsblkcnt64_t, f_bavail); > + __field64(__fsfilcnt_t, __fsfilcnt64_t, f_files); > + __field64(__fsfilcnt_t, __fsfilcnt64_t, f_ffree); > + __fsid_t f_fsid; > + __SWORD_TYPE f_namelen; > + __SWORD_TYPE f_frsize; > + __SWORD_TYPE f_flags; > + __SWORD_TYPE f_spare[4]; > + }; > + > +#undef __field64 > + > +#ifdef __USE_LARGEFILE64 > +struct statfs64 > + { > + __SWORD_TYPE f_type; > + __SWORD_TYPE f_bsize; > + __fsblkcnt64_t f_blocks; > + __fsblkcnt64_t f_bfree; > + __fsblkcnt64_t f_bavail; > + __fsfilcnt64_t f_files; > + __fsfilcnt64_t f_ffree; > + __fsid_t f_fsid; > + __SWORD_TYPE f_namelen; > + __SWORD_TYPE f_frsize; > + __SWORD_TYPE f_flags; > + __SWORD_TYPE f_spare[4]; > + }; > +#endif > + > +/* Tell code we have these members. */ > +#define _STATFS_F_NAMELEN > +#define _STATFS_F_FRSIZE > +#define _STATFS_F_FLAGS > -- Cheers, Carlos.