Fix: possible null dereference
[lttng-tools.git] / src / common / fd-tracker / inode.h
... / ...
CommitLineData
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
14struct lttng_inode;
15struct lttng_inode_registry;
16struct lttng_unlinked_file_directory;
17struct lttng_directory_handle;
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 */
27struct lttng_unlinked_file_pool *lttng_unlinked_file_pool_create(
28 const char *path);
29
30void lttng_unlinked_file_pool_destroy(
31 struct lttng_unlinked_file_pool *pool);
32
33/* The inode registry is protected by the fd-tracker's lock. */
34struct lttng_inode_registry *lttng_inode_registry_create(void);
35
36struct lttng_inode *lttng_inode_registry_get_inode(
37 struct lttng_inode_registry *registry,
38 struct lttng_directory_handle *handle,
39 const char *path,
40 int fd,
41 struct lttng_unlinked_file_pool *pool);
42
43void lttng_inode_registry_destroy(struct lttng_inode_registry *registry);
44
45void lttng_inode_borrow_location(struct lttng_inode *inode,
46 const struct lttng_directory_handle **out_directory_handle,
47 const char **out_path);
48
49/* Returns a new reference to the inode's location directory handle. */
50struct lttng_directory_handle *lttng_inode_get_location_directory_handle(
51 struct lttng_inode *inode);
52
53int lttng_inode_rename(struct lttng_inode *inode,
54 struct lttng_directory_handle *old_directory_handle,
55 const char *old_path,
56 struct lttng_directory_handle *new_directory_handle,
57 const char *new_path,
58 bool overwrite);
59
60int lttng_inode_unlink(struct lttng_inode *inode);
61
62void lttng_inode_put(struct lttng_inode *inode);
63
64#endif /* FD_TRACKER_INODE_H */
This page took 0.023196 seconds and 4 git commands to generate.