X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fcommon%2Ffd-tracker%2Finode.h;h=d69f354ea7d12c78c147a61b5c9b31b5b77f20ea;hp=41e947011f2a0c189658ebf8da106c4facde718a;hb=ab5be9fa2eb5ba9600a82cd18fd3cfcbac69169a;hpb=5c1f54d1d586f61a92704753411bd82c5c928218 diff --git a/src/common/fd-tracker/inode.h b/src/common/fd-tracker/inode.h index 41e947011..d69f354ea 100644 --- a/src/common/fd-tracker/inode.h +++ b/src/common/fd-tracker/inode.h @@ -1,43 +1,59 @@ /* - * Copyright (C) 2018 - Jérémie Galarneau + * Copyright (C) 2020 Jérémie Galarneau * - * 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 #define FD_TRACKER_INODE_H +#include #include struct lttng_inode; struct lttng_inode_registry; +struct lttng_unlinked_file_directory; + +/* + * The unlinked file pool is protected by the fd-tracker's lock. + * + * NOTE: the unlinked file pool can use a single file desriptor when unlinked + * files are present in the pool. This file descriptor is not accounted-for + * by the fd-tracker. Users of the fd-tracker should account for this extra + * file descriptor. + */ +struct lttng_unlinked_file_pool *lttng_unlinked_file_pool_create( + const char *path); + +void lttng_unlinked_file_pool_destroy( + struct lttng_unlinked_file_pool *pool); /* The inode registry is protected by the fd-tracker's lock. */ struct lttng_inode_registry *lttng_inode_registry_create(void); struct lttng_inode *lttng_inode_registry_get_inode( struct lttng_inode_registry *registry, + struct lttng_directory_handle *handle, + const char *path, int fd, - const char *path); + struct lttng_unlinked_file_pool *pool); void lttng_inode_registry_destroy(struct lttng_inode_registry *registry); -const char *lttng_inode_get_path(const struct lttng_inode *inode); +void lttng_inode_get_location(struct lttng_inode *inode, + const struct lttng_directory_handle **out_directory_handle, + const char **out_path); + int lttng_inode_rename(struct lttng_inode *inode, + struct lttng_directory_handle *old_directory_handle, + const char *old_path, + struct lttng_directory_handle *new_directory_handle, const char *new_path, bool overwrite); -int lttng_inode_defer_unlink(struct lttng_inode *inode); + +int lttng_inode_unlink(struct lttng_inode *inode); + void lttng_inode_put(struct lttng_inode *inode); #endif /* FD_TRACKER_INODE_H */