Hello Udo,

Udo Giacomozzi:
> Problem: When the tmpfs fills up (eg. `cat /dev/zero > /DUMMY`), then 
> the system consistently becomes pratically unusable, meaning that simple 
> commands like `find` or `reboot` can't be run anymore ("command not found").
>
> I've also noticed some kernel errors (at least when running for some 
> hours in such a state), but they don't come up immediately:
>
> |Oct 31 15:31:01 intermodul kernel: [87752.031289] aufs 
> au_xino_do_write:433:ioget[14146]: I/O Error, write failed (-28) Oct 31 
> 15:31:01 intermodul kernel: [87752.031301] aufs 
> au_xino_write:469:ioget[14146]: I/O Error, write failed (-5) Oct 31 
> 15:31:01 intermodul kernel: [87752.050390] aufs 
> au_xino_do_write:433:ioget[14148]: I/O Error, write failed (-28) Oct 31 
> 15:31:01 intermodul kernel: [87752.050402] aufs 
> au_xino_write:469:ioget[14148]: I/O Error, write failed (-5) # df 
        :::

This situation is something similar to creating a new file where the
filesystem is full. I know you are not creating a file, but for aufs,
accessing a new file means assigning a new inode number, hence expanding
the XINO file. The number '-28' means ENOSPC (No space left on device),
and aufs can do nothing but returning '-5' EIO (Input/output error).

You might not know about XINO files, then I'd suggest you to read aufs
manual especially "External Inode Number Bitmap, Translation Table and
Generation Table (xino)" section.

I guess the most appropriate solution for you will be...
- specify xino=/dev/shm/aufs.xino when mounting aufs
- your df shows /dev/shm has 256MB free, I guess it will be enough

The long story (if you are interested)
- you can confirm the current XINO file path via
  <sysfs>/fs/aufs/si_<id>/xi_path.
- also, for the current size of XINO files, see
  <debugfs>/aufs/si_<id>/{xib,xino[0-9]*,xigen}
- I guess the path is /root-rw/.aufs.xino, and the consumed blocks is
  very large (most of your /root-rw (65MB))

In order to suppres the growing size of XINO files, aufs provides a few
mount options such as
- trunc_xib
- trunc_xino_path=BRANCH | itrunc_xino=INDEX
- trunc_xino

But they are not so effective in some cases. the better solution to
suppres XINO files is to apply tmpfs-idr.patch and vfs-ino.patch against
your kernel. but I am afraid you don't want to do that. So specifying
xino= is a good and effective solution for you I hope.


J. R. Okajima

------------------------------------------------------------------------------

Reply via email to