/*
- * Copyright (C) 2020 - Jérémie Galarneau <jeremie.galarneau@efficios.com>
+ * Copyright (C) 2020 Jérémie Galarneau <jeremie.galarneau@efficios.com>
*
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License, version 2 only, as
- * published by the Free Software Foundation.
+ * SPDX-License-Identifier: GPL-2.0-only
*
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program; if not, write to the Free Software Foundation, Inc., 51
- * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#ifndef FD_TRACKER_INODE_H
struct lttng_inode;
struct lttng_inode_registry;
struct lttng_unlinked_file_directory;
+struct lttng_directory_handle;
/*
* The unlinked file pool is protected by the fd-tracker's lock.
* by the fd-tracker. Users of the fd-tracker should account for this extra
* file descriptor.
*/
+LTTNG_HIDDEN
struct lttng_unlinked_file_pool *lttng_unlinked_file_pool_create(
const char *path);
+LTTNG_HIDDEN
void lttng_unlinked_file_pool_destroy(
struct lttng_unlinked_file_pool *pool);
/* The inode registry is protected by the fd-tracker's lock. */
+LTTNG_HIDDEN
struct lttng_inode_registry *lttng_inode_registry_create(void);
+LTTNG_HIDDEN
struct lttng_inode *lttng_inode_registry_get_inode(
struct lttng_inode_registry *registry,
struct lttng_directory_handle *handle,
int fd,
struct lttng_unlinked_file_pool *pool);
+LTTNG_HIDDEN
void lttng_inode_registry_destroy(struct lttng_inode_registry *registry);
-void lttng_inode_get_location(struct lttng_inode *inode,
+LTTNG_HIDDEN
+void lttng_inode_borrow_location(struct lttng_inode *inode,
const struct lttng_directory_handle **out_directory_handle,
const char **out_path);
+/* Returns a new reference to the inode's location directory handle. */
+LTTNG_HIDDEN
+struct lttng_directory_handle *lttng_inode_get_location_directory_handle(
+ struct lttng_inode *inode);
+
+LTTNG_HIDDEN
int lttng_inode_rename(struct lttng_inode *inode,
struct lttng_directory_handle *old_directory_handle,
const char *old_path,
const char *new_path,
bool overwrite);
+LTTNG_HIDDEN
int lttng_inode_unlink(struct lttng_inode *inode);
+LTTNG_HIDDEN
void lttng_inode_put(struct lttng_inode *inode);
#endif /* FD_TRACKER_INODE_H */