On Thursday, 13 July 2017 09:54:09 CEST Richard W.M. Jones wrote:
The ext2 filesystem on disk format has two ways to store symlinks. For symlinks >= 60 bytes in length, they are stored as files (so-called "slow symlinks"). For shorter symlinks the symlink is stored in the inode ("fast symlinks").
Previously we only created slow symlinks even if they are shorter than 60 bytes. This didn't matter until recently, when a change went into the upstream kernel which assumes that symlinks shorter than 60 bytes are always stored in the inode, thus breaking the filesystems that we created before:
https://bugzilla.redhat.com/show_bug.cgi?id=1470157#c4
This changes the code to use the ext2fs_symlink function instead which creates fast and slow symlinks properly. It also removes use of PATH_MAX so this should work with symbolic link targets of any length.
This fix is required if you use supermin with any Linux kernel >= 4.13.
Thanks: Eric Sandeen ---
LGTM. Thanks, -- Pino Toscano