Hello Ruda,

rsyk...@disroot.org wrote on Fri, May 09, 2025 at 04:10:46PM +0200:
> On 2025-05-09 12:53, Janne Johansson wrote:
>> Ruda wrote:

>>>> I had that with systems where /var/www is a symlink into
>>>> another (small) slice/partition like "/".

>>> Thanks. I had /var/www symlinked to /home/www, and that
>>> was, for some reason, enough to cause the trouble. I removed
>>> the symlink and the upgrade went fine. What is not understood,
>>> however, is the fact that the symlink went *not* to a small partition;
>>> my /home was

>> You have to consider how the filesystem looks during the upgrade,
>> especially if this is while you run inside bsd.rd. A symlink that goes
>> from /var/www to literally "/home/www" will not work during upgrades
>> when all the partitions are mounted under /mnt, whereas if the link
>> was in /var and made using:
>> ln -s ../home/www www then it will point to the right place from
>> /mnt/var/www to /mnt/home/www during bsd.rd also. Same goes for if you
>> must place /home/_sysupgrade somewhere else for space reasons, make
>> sure the softlink is relative and it will keep on working during
>> upgrades also.

> ok. That seems to be it. (So the error message then says something
> that seems a bit misleading: 'No space left on the device')
> Thanks.

An experienced user is supposed to recognize the message "No space
left on device" as a rendering of the error number ENOSPC documented
in the errno(2) manual page, described like this:

  28 ENOSPC No space left on device. A write(2) to an ordinary file,
            the creation of a directory or symbolic link, or the creation
            of a directory entry failed because no more disk blocks were
            available on the file system, or the allocation of an inode
            for a newly created file failed because no more inodes were
            available on the file system.

Error numbers are in part standardized by POSIX, such that they work
in similar ways on different operating systems.  While operating systems
are free to add additional error numbers, discretion is limited for
operating systems to make the standardized ones more specific.

OpenBSD already provides 95 different error numbers.  Increasing the
number of error numbers also has downsides, for example making the
documentation longer, forcing users to memorize more messages and
their meanings, sometimes making the code more complicated, and
sometimes breaking inspection of an error number, in case that code
expects a common error number and finds a more specific one it does
not know about, subsequently mishandling the error.

In case of doubt, users are expected to consult the errno(2) manual
and think hard what the program issuing the message did, and how that
action might have caused the message.

Admittedly, understanding what exactly is going on can sometimes
feel non-trivial, and for new users in particular.

In this case, i see no reasonable way of making the message more
specific.  Besides, when you do something highly unusual, in this
case moving directories from /var to /home, some disruption and
an occasional need for debugging is expected, and again, may not
always feel trivial.

Specifically, moving stuff from one default partition to another
default partition is not really recommended.  As long as the stuff
is small, there is no need for moving anyway.  If the stuff is
large, then making a dedicated partition for it (rather than
symlinking) is less fragile.  Had you created a dedicated partition
for /var/www, which can make sense on a webserver serving very large
amounts of data, i would not have expected problems.

Yours,
  Ingo

Reply via email to