mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
Although directory entry and parent pointer recordsets look very similar (name -> ino), there's one major difference between them: a file can be hardlinked from multiple parent directories with the same filename. This is common in shared container environments where a base directory tree might be hardlink-copied multiple times. IOWs the same 'ls' program might be hardlinked to multiple /srv/*/bin/ls paths. We don't want parent pointer operations to bog down on hash collisions between the same dirent name, so create a special hash function that mixes in the parent directory inode number. Signed-off-by: Darrick J. Wong <djwong@kernel.org> Reviewed-by: Christoph Hellwig <hch@lst.de>
21 lines
624 B
C
21 lines
624 B
C
// SPDX-License-Identifier: GPL-2.0
|
|
/*
|
|
* Copyright (c) 2022-2024 Oracle.
|
|
* All Rights Reserved.
|
|
*/
|
|
#ifndef __XFS_PARENT_H__
|
|
#define __XFS_PARENT_H__
|
|
|
|
/* Metadata validators */
|
|
bool xfs_parent_namecheck(unsigned int attr_flags, const void *name,
|
|
size_t length);
|
|
bool xfs_parent_valuecheck(struct xfs_mount *mp, const void *value,
|
|
size_t valuelen);
|
|
|
|
xfs_dahash_t xfs_parent_hashval(struct xfs_mount *mp, const uint8_t *name,
|
|
int namelen, xfs_ino_t parent_ino);
|
|
xfs_dahash_t xfs_parent_hashattr(struct xfs_mount *mp, const uint8_t *name,
|
|
int namelen, const void *value, int valuelen);
|
|
|
|
#endif /* __XFS_PARENT_H__ */
|