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.hpp>
16 struct lttng_inode_registry;
17 struct lttng_unlinked_file_directory;
18 struct lttng_directory_handle;
21 * The unlinked file pool is protected by the fd-tracker's lock.
23 * NOTE: the unlinked file pool can use a single file desriptor when unlinked
24 * files are present in the pool. This file descriptor is not accounted-for
25 * by the fd-tracker. Users of the fd-tracker should account for this extra
28 struct lttng_unlinked_file_pool *lttng_unlinked_file_pool_create(const char *path);
30 void lttng_unlinked_file_pool_destroy(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(struct lttng_inode_registry *registry,
36 struct lttng_directory_handle *handle,
39 struct lttng_unlinked_file_pool *pool);
41 void lttng_inode_registry_destroy(struct lttng_inode_registry *registry);
43 void lttng_inode_borrow_location(struct lttng_inode *inode,
44 const struct lttng_directory_handle **out_directory_handle,
45 const char **out_path);
47 /* Returns a new reference to the inode's location directory handle. */
48 struct lttng_directory_handle *lttng_inode_get_location_directory_handle(struct lttng_inode *inode);
50 int lttng_inode_rename(struct lttng_inode *inode,
51 struct lttng_directory_handle *old_directory_handle,
53 struct lttng_directory_handle *new_directory_handle,
57 int lttng_inode_unlink(struct lttng_inode *inode);
59 void lttng_inode_put(struct lttng_inode *inode);
61 #endif /* FD_TRACKER_INODE_H */