2 * Copyright (C) 2020 Jérémie Galarneau <jeremie.galarneau@efficios.com>
4 * SPDX-License-Identifier: GPL-2.0-only
8 #ifndef FD_TRACKER_INODE_H
9 #define FD_TRACKER_INODE_H
11 #include <common/compat/directory-handle.h>
15 struct lttng_inode_registry
;
16 struct lttng_unlinked_file_directory
;
19 * The unlinked file pool is protected by the fd-tracker's lock.
21 * NOTE: the unlinked file pool can use a single file desriptor when unlinked
22 * files are present in the pool. This file descriptor is not accounted-for
23 * by the fd-tracker. Users of the fd-tracker should account for this extra
26 struct lttng_unlinked_file_pool
*lttng_unlinked_file_pool_create(
29 void lttng_unlinked_file_pool_destroy(
30 struct lttng_unlinked_file_pool
*pool
);
32 /* The inode registry is protected by the fd-tracker's lock. */
33 struct lttng_inode_registry
*lttng_inode_registry_create(void);
35 struct lttng_inode
*lttng_inode_registry_get_inode(
36 struct lttng_inode_registry
*registry
,
37 struct lttng_directory_handle
*handle
,
40 struct lttng_unlinked_file_pool
*pool
);
42 void lttng_inode_registry_destroy(struct lttng_inode_registry
*registry
);
44 void lttng_inode_get_location(struct lttng_inode
*inode
,
45 const struct lttng_directory_handle
**out_directory_handle
,
46 const char **out_path
);
48 int lttng_inode_rename(struct lttng_inode
*inode
,
49 struct lttng_directory_handle
*old_directory_handle
,
51 struct lttng_directory_handle
*new_directory_handle
,
55 int lttng_inode_unlink(struct lttng_inode
*inode
);
57 void lttng_inode_put(struct lttng_inode
*inode
);
59 #endif /* FD_TRACKER_INODE_H */