diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index 4822b3132784e4c7c338e870d9a555234ee030fd..04babaf31a335ef295806af0cc3968be438e7cbb 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c @@ -4837,6 +4837,9 @@ static int btrfs_link(struct dentry *old_dentry, struct inode *dir, if (root->objectid != BTRFS_I(inode)->root->objectid) return -EXDEV; + if (inode->i_nlink == ~0U) + return -EMLINK; + btrfs_inc_nlink(inode); inode->i_ctime = CURRENT_TIME;