Closed jblumsch closed 8 years ago
In op_symlink()
a wrong value is written into inode.i_blocks
("blocks actually held", should be 0 on a "short" symlink). This inconsistency leads to I/O errors on subsequent operations.
fuse-ufs code internally uses inconsistent name length limits for "short" symlinks (here 15*4
, there 15*8
bytes). As this parameter depends on the UFS variant, the superblock field fs->fs_maxsymlinklen
should be taken into account (we might check at mount time that it holds a reasonable value).
Commit 0229f27ac2d05d2caba5490db77c2cd400e94210 Fixed symlinks and make readonly default (mkatiyar 2013-04-13) added a function ufs_follow_link()
that had never been actually called. In the light of the commit message that code change looks like a failed attempt to fix some unspecified issue with symlinks – Dropped that in 5d5d99a7f08f50846de5908af30e0ea5f34196fe; for details see #8.
Apart from the "short symlink" creation I do not see any issue with symlinks that would need fixing.
The creation of "short" symlinks (those where the target name of <120 chars is stored in the inode itself) is broken: