Commit | Line | Data |
---|---|---|
e0e72660 | 1 | /* |
ab5be9fa | 2 | * Copyright (C) 2020 Jérémie Galarneau <jeremie.galarneau@efficios.com> |
e0e72660 | 3 | * |
ab5be9fa | 4 | * SPDX-License-Identifier: GPL-2.0-only |
e0e72660 | 5 | * |
e0e72660 JG |
6 | */ |
7 | ||
8 | #ifndef FD_TRACKER_INODE_H | |
9 | #define FD_TRACKER_INODE_H | |
10 | ||
f7c3ffd7 | 11 | #include <common/compat/directory-handle.h> |
e0e72660 JG |
12 | #include <stdbool.h> |
13 | ||
14 | struct lttng_inode; | |
15 | struct lttng_inode_registry; | |
f7c3ffd7 | 16 | struct lttng_unlinked_file_directory; |
dd95933f | 17 | struct lttng_directory_handle; |
f7c3ffd7 JG |
18 | |
19 | /* | |
20 | * The unlinked file pool is protected by the fd-tracker's lock. | |
21 | * | |
22 | * NOTE: the unlinked file pool can use a single file desriptor when unlinked | |
23 | * files are present in the pool. This file descriptor is not accounted-for | |
24 | * by the fd-tracker. Users of the fd-tracker should account for this extra | |
25 | * file descriptor. | |
26 | */ | |
27 | struct lttng_unlinked_file_pool *lttng_unlinked_file_pool_create( | |
28 | const char *path); | |
29 | ||
30 | void lttng_unlinked_file_pool_destroy( | |
31 | struct lttng_unlinked_file_pool *pool); | |
e0e72660 JG |
32 | |
33 | /* The inode registry is protected by the fd-tracker's lock. */ | |
34 | struct lttng_inode_registry *lttng_inode_registry_create(void); | |
35 | ||
36 | struct lttng_inode *lttng_inode_registry_get_inode( | |
5c1f54d1 | 37 | struct lttng_inode_registry *registry, |
f7c3ffd7 JG |
38 | struct lttng_directory_handle *handle, |
39 | const char *path, | |
5c1f54d1 | 40 | int fd, |
f7c3ffd7 | 41 | struct lttng_unlinked_file_pool *pool); |
e0e72660 JG |
42 | |
43 | void lttng_inode_registry_destroy(struct lttng_inode_registry *registry); | |
44 | ||
dd95933f | 45 | void lttng_inode_borrow_location(struct lttng_inode *inode, |
f7c3ffd7 JG |
46 | const struct lttng_directory_handle **out_directory_handle, |
47 | const char **out_path); | |
48 | ||
dd95933f JG |
49 | /* Returns a new reference to the inode's location directory handle. */ |
50 | struct lttng_directory_handle *lttng_inode_get_location_directory_handle( | |
51 | struct lttng_inode *inode); | |
52 | ||
5c1f54d1 | 53 | int lttng_inode_rename(struct lttng_inode *inode, |
f7c3ffd7 JG |
54 | struct lttng_directory_handle *old_directory_handle, |
55 | const char *old_path, | |
56 | struct lttng_directory_handle *new_directory_handle, | |
5c1f54d1 | 57 | const char *new_path, |
e0e72660 | 58 | bool overwrite); |
f7c3ffd7 JG |
59 | |
60 | int lttng_inode_unlink(struct lttng_inode *inode); | |
61 | ||
e0e72660 JG |
62 | void lttng_inode_put(struct lttng_inode *inode); |
63 | ||
64 | #endif /* FD_TRACKER_INODE_H */ |