Add 2017Q2 ino64 entry from mkcusick

This commit is contained in:
Benjamin Kaduk 2017-06-22 17:54:49 +00:00
parent baf3c1d09e
commit 49deadcb87
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=50394

View file

@ -83,4 +83,97 @@
<description>Miscellaneous</description>
</category>
<project cat='proj'>
<title>64-bit Inode Numbers</title>
<contact>
<person>
<name>
<given>Gleb</given>
<common>Kurtsou</common>
</name>
<email>gleb@FreeBSD.org</email>
</person>
<person>
<name>
<given>Konstantin</given>
<common>Belousov</common>
</name>
<email>kib@FreeBSD.org</email>
</person>
<person>
<name>
<given>Kirk</given>
<common>McKusick</common>
</name>
<email>mckusick@FreeBSD.org</email>
</person>
</contact>
<links>
<url href="https://reviews.FreeBSD.org/D10439">Phabricator Review</url>
</links>
<body>
<p>The 64-bit inode project was completed and merged into
&os;&nbsp; 12 on May 23, 2017. It extends the <tt>ino_t</tt>,
<tt>dev_t</tt>, and <tt>nlink_t</tt> types to be 64-bit
integers. It modifies the <tt>struct dirent</tt> layout to
add a <tt>d_off</tt> field, increases the size of
<tt>d_fileno</tt> to 64 bits, increases the size of
<tt>d_namlen</tt> to 16 bits, and changes the required
alignment of the structure. It increases the <tt>struct
statfs</tt> <tt>f_mntfromname[]</tt> and
<tt>f_mntonname[]</tt> array lengths from MNAMELEN to
1024.</p>
<p>ABI breakage is mitigated by providing compatibility using
versioned symbols, ingenious use of the existing padding in
structures, and employing various other tricks.
Unfortunately, not everything can be fixed, especially outside
the base system. For instance, third-party APIs which pass
<tt>struct stat</tt> as parameters are broken in backward- and
forward-incompatible ways.</p>
<p>The ABI for <tt>kinfo</tt> sysctl MIBs is changed in a
backward-compatible way, but there is no general mechanism to
handle other sysctl MIBS which return structures where the
layout has changed. It was considered that the breakage is
either in management interfaces, where we usually allow ABI
slippage, or is not important.</p>
<p>The layout of <tt>struct xvnode</tt> changed, and no
compatibility shims are provided.</p>
<p>For <tt>struct xtty</tt>, the <tt>dev_t tty</tt> device
member was reduced to be just <tt>uint32_t</tt>. It was
decided that maintaining ABI compatability in this case is
more useful than reporting a 64-bit <tt>dev_t</tt> value, for
the sake of <tt>pstat</tt>.</p>
<p>Updating note: strictly follow the instructions in
<tt>UPDATING</tt>. Build and install the new kernel with the
<tt>COMPAT_FREEBSD11</tt> option enabled, then reboot, and
only then install the new world.</p>
<p>Credits: The 64-bit inode project, also known as ino64,
started life many years ago as a project by Gleb Kurtsou
(gleb). Kirk McKusick (mckusick) then picked up and updated
the patch, and acted as a flag-waver. Feedback, suggestions,
and discussions were carried by Ed Maste (emaste), John
Baldwin (jhb), Jilles Tjoelker (jilles), and Rick Macklem
(rmacklem). Kris Moore (kris) performed an initial ports
investigation followed by an exp-run by Antoine Brodin
(antoine). Essential and all-embracing testing was done by
Peter Holm (pho). The heavy lifting of coordinating all these
efforts and bringing the project to completion were done by
Konstantin Belousov (kib). </p>
</body>
<sponsor>
The FreeBSD Foundation (emaste, kib)
</sponsor>
</project>
</report>