From owner-freebsd-hackers@freebsd.org Sat Jun 17 01:59:15 2017 Return-Path: Delivered-To: freebsd-hackers@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id F3DB1D8F0AC for ; Sat, 17 Jun 2017 01:59:14 +0000 (UTC) (envelope-from markmi@dsl-only.net) Received: from asp.reflexion.net (outbound-mail-210-16.reflexion.net [208.70.210.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id A270378B77 for ; Sat, 17 Jun 2017 01:59:13 +0000 (UTC) (envelope-from markmi@dsl-only.net) Received: (qmail 29556 invoked from network); 17 Jun 2017 02:03:08 -0000 Received: from unknown (HELO rtc-sm-01.app.dca.reflexion.local) (10.81.150.1) by 0 (rfx-qmail) with SMTP; 17 Jun 2017 02:03:08 -0000 Received: by rtc-sm-01.app.dca.reflexion.local (Reflexion email security v8.40.0) with SMTP; Fri, 16 Jun 2017 21:59:06 -0400 (EDT) Received: (qmail 30288 invoked from network); 17 Jun 2017 01:59:06 -0000 Received: from unknown (HELO iron2.pdx.net) (69.64.224.71) by 0 (rfx-qmail) with (AES256-SHA encrypted) SMTP; 17 Jun 2017 01:59:06 -0000 Received: from [192.168.1.114] (c-76-115-7-162.hsd1.or.comcast.net [76.115.7.162]) by iron2.pdx.net (Postfix) with ESMTPSA id 180B7EC8714; Fri, 16 Jun 2017 18:59:06 -0700 (PDT) From: Mark Millard Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Mime-Version: 1.0 (Mac OS X Mail 10.3 \(3273\)) Subject: Re: INO64 in head: Does sys/boot/common/ufsread.c need its "typedef uint32_t ufs_ino_t;" replaced? Date: Fri, 16 Jun 2017 18:59:05 -0700 References: <3AF2C2DB-1A61-4EC3-BCB7-B05D99273561@dsl-only.net> To: kib@FreeBSD.org, FreeBSD Current , freebsd-hackers@freebsd.org, FreeBSD PowerPC ML In-Reply-To: <3AF2C2DB-1A61-4EC3-BCB7-B05D99273561@dsl-only.net> Message-Id: <700CC284-8750-448D-83DB-19C6F5CB6AE8@dsl-only.net> X-Mailer: Apple Mail (2.3273) X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Jun 2017 01:59:15 -0000 Top post of context note: I should have noted up front that: /usr/src/sys/boot/powerpc/boot1.chrp/boot1.c does: #include "ufsread.c" and that is the context of the __udivdi3 use that is rejected at link time when clang is used to buildworld for powerpc or pwoerpc64. My original note might really trace back to boot1.c needing to be different even if ufsread.c stays the same. === Mark Millard markmi at dsl-only.net On 2017-Jun-16, at 5:01 PM, Mark Millard wrote: buildworld via clang for powerpc64 and powerpc fails for lack of `__udivdi3' referenced in sys/boot/common/ufsread.c fsread_size code. But this lead to me looking around and I found a conceptually separate possible issue. . . sys/sys/_types.h : typedef __uint64_t __ino_t; /* inode number */ # find /usr/src/sys/ -exec grep __ino_t {} \; -print | more typedef __ino_t ino_t; /usr/src/sys/sys/stat.h typedef __ino_t ino_t; /* inode number */ /usr/src/sys/sys/types.h typedef __uint64_t __ino_t; /* inode number */ /usr/src/sys/sys/_types.h typedef __ino_t ino_t; /usr/src/sys/sys/dirent.h sys/boot/common/ufsread.c : . . . #include #include #include . . . typedef uint32_t ufs_ino_t; . . . Note the 32-bit type above. The headers included have use of the 64-bit ino_t type as well, for example: sys/ufs/ufs/diniode.h : . . . #define UFS_ROOTINO ((ino_t)2) . . . #define UFS_WINO ((ino_t)1) . . . sys/ufs/ffs/fs.h : . . . #define ino_to_cg(fs, x) (((ino_t)(x)) / (fs)->fs_ipg) #define ino_to_fsba(fs, x) \ ((ufs2_daddr_t)(cgimin(fs, ino_to_cg(fs, (ino_t)(x))) + \ (blkstofrags((fs), ((((ino_t)(x)) % (fs)->fs_ipg) / INOPB(fs)))))) #define ino_to_fsbo(fs, x) (((ino_t)(x)) % INOPB(fs)) . . . I believe the powerpc64/powerpc issue gives evidence of ino_t being used in addition ot ufs_ino_t in sys/boot/common/ufsread.c 's fsread_size . Other things that look 32-bit inode-ish: (I do not claim to know that any of this matters.) sys/ufs/ufs/dir.h has: struct direct { u_int32_t d_ino; /* inode number of entry */ . . . struct dirtemplate { u_int32_t dot_ino; . . . u_int32_t dotdot_ino; . . . struct odirtemplate { u_int32_t dot_ino; . . . u_int32_t dotdot_ino; . . . sys/ufs/ffs/fs.h has: struct jrefrec { . . . uint32_t jr_ino; struct jmvrec { . . . uint32_t jm_ino; struct jblkrec { . . . uint32_t jb_ino; struct jtrncrec { . . . uint32_t jt_ino; === Mark Millard markmi at dsl-only.net