[COFF] [TUHS] Re: History of cal(1)?

Steffen Nurpmeso via COFF coff at tuhs.org
Sat Sep 27 08:04:49 AEST 2025


Arnold Robbins via COFF wrote in
 <202509261451.58QEpK5e025554 at freefriends.org>:
 |Dan Cross via TUHS <tuhs at tuhs.org> wrote:
 ...
 |> [.] recall that the `inode` contains some space for disk
 |> block addresses (60 bytes in UFS on 4.1C, but this got bigger in later
 |> versions).  The idea with fast symlinks is that, if the target file
 |> name of a symlink is short enough, the system can just store it in the
 |> space that would normally be used for block addresses; there's no need
 |> to allocate a separate fragment from a disk block, let alone bear the
 |> cost of allocating a buffer and fetching a block from disk, if a short
 |> name can be written directly into the inode.
 |>
 |> I don't think anyone ever gave serious thought to generalizing this
 |> facility for very small files, but in principle, one could store their
 |> contents in a similar manner (think of all those random little files
 |> that just have a pid in them or something).
 |
 |I recall hearing that Amdahl did this for UTS, their System V port.
 |I think it was a little more general, in that if there were, say 2
 |inodes in a 512-byte block, a file of size (256 - sizeof(struct inode))
 |could be stored in the same block as the inode itself.

Now you got me in my user space comfort.  But, from readings here
and there from about 25 years ago, wasn't this one of the things
the people liked so much about ReiserFS?  And likewise i would
think BTRFS also does this.  "man 5 btrfs" says

 max_inline=<bytes>
        (default: min(2048, page size) )

        Specify  the  maximum  amount  of space, that can be inlined in a
        metadata b-tree leaf.  The value is specified in  bytes,  option‐
        ally with a K suffix (case insensitive).  In practice, this value
        is limited by the filesystem block size (named sectorsize at mkfs
        time),  and memory page size of the system. In case of sectorsize
        limit, there's some space unavailable due to b-tree leaf headers.
        For example, a 4KiB sectorsize, maximum size of  inline  data  is
        about 3900 bytes.

        Inlining  can be completely turned off by specifying 0. This will
        increase data block slack if file sizes  are  much  smaller  than
        block size but will reduce metadata consumption in return.

        NOTE:
           The default value has changed to 2048 in kernel 4.6.

Monty Python would now possibly go and say "hey, let's design
a tiny house with the core design principle of inlining small
subjects, like elephant or giraff".  (And ah, the luxury of heigh
ceilings..)

--steffen
|
|Der Kragenbaer,                The moon bear,
|der holt sich munter           he cheerfully and one by one
|einen nach dem anderen runter  wa.ks himself off
|(By Robert Gernhardt)


More information about the COFF mailing list