d69f354ea7d12c78c147a61b5c9b31b5b77f20ea
[lttng-tools.git] / src / common / fd-tracker / inode.h
1 /*
2 * Copyright (C) 2020 Jérémie Galarneau <jeremie.galarneau@efficios.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-only
5 *
6 */
7
8 #ifndef FD_TRACKER_INODE_H
9 #define FD_TRACKER_INODE_H
10
11 #include <common/compat/directory-handle.h>
12 #include <stdbool.h>
13
14 struct lttng_inode;
15 struct lttng_inode_registry;
16 struct lttng_unlinked_file_directory;
17
18 /*
19 * The unlinked file pool is protected by the fd-tracker's lock.
20 *
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
24 * file descriptor.
25 */
26 struct lttng_unlinked_file_pool *lttng_unlinked_file_pool_create(
27 const char *path);
28
29 void lttng_unlinked_file_pool_destroy(
30 struct lttng_unlinked_file_pool *pool);
31
32 /* The inode registry is protected by the fd-tracker's lock. */
33 struct lttng_inode_registry *lttng_inode_registry_create(void);
34
35 struct lttng_inode *lttng_inode_registry_get_inode(
36 struct lttng_inode_registry *registry,
37 struct lttng_directory_handle *handle,
38 const char *path,
39 int fd,
40 struct lttng_unlinked_file_pool *pool);
41
42 void lttng_inode_registry_destroy(struct lttng_inode_registry *registry);
43
44 void lttng_inode_get_location(struct lttng_inode *inode,
45 const struct lttng_directory_handle **out_directory_handle,
46 const char **out_path);
47
48 int lttng_inode_rename(struct lttng_inode *inode,
49 struct lttng_directory_handle *old_directory_handle,
50 const char *old_path,
51 struct lttng_directory_handle *new_directory_handle,
52 const char *new_path,
53 bool overwrite);
54
55 int lttng_inode_unlink(struct lttng_inode *inode);
56
57 void lttng_inode_put(struct lttng_inode *inode);
58
59 #endif /* FD_TRACKER_INODE_H */
This page took 0.032042 seconds and 4 git commands to generate.