mirror of
https://github.com/versity/scoutfs.git
synced 2026-01-06 04:04:59 +00:00
ae6cc83d0185373ab771882992f9a2e5964fb6ba
A few xfstests tests were failing because they tried to create a decent number of hard links to a file. We had a small nlink limit because the inode-paths ioctl copied all the paths for all the hard links to a userspace buffer which could be enormous if there was a larger nlink limit. The hard link backref disk format already has a natural counter that could be used as a cursor to iterate over all the hard links that point to a given inode. This refactors the inode_paths ioctl into a ino_path ioctl that returns a single path for the given counter and returns the counter for the next path that links to the inode. Happily this lets us get rid of all the weird path component lists and allocations. Now there's just the kernel path buffer that gets null terminated path components and the userspace buffer that those are copied to. We don't fully relax the nlink limit. stat(2) returns the link count as a u32. We go a step further and limit it to S32_MAX so that apps might avoid sign bugs. That still gives us a more generous limit than ext4 and btrfs which are around U16_MAX. Signed-off-by: Zach Brown <zab@versity.com> Reviewed-by: Mark Fasheh <mfasheh@versity.com>
Description
No description provided
Languages
C
87.2%
Shell
9.1%
Roff
2.5%
TeX
0.9%
Makefile
0.3%