fd-tracker: add the unlink operation to fs handles
authorJérémie Galarneau <jeremie.galarneau@efficios.com>
Fri, 6 Jul 2018 02:29:59 +0000 (22:29 -0400)
committerJonathan Rajotte <jonathan.rajotte-julien@efficios.com>
Fri, 21 Sep 2018 04:00:52 +0000 (00:00 -0400)
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
src/common/fd-tracker/fd-tracker.c
src/common/fd-tracker/fd-tracker.h

index cdc1691f61da4c124032d0fe56384a7efdfeff7d..3720e075cba9ef7e6a4dc56cf92b23f6e8dafa72 100644 (file)
@@ -796,6 +796,18 @@ void fs_handle_put_fd(struct fs_handle *handle)
        pthread_mutex_unlock(&handle->lock);
 }
 
+int fs_handle_unlink(struct fs_handle *handle)
+{
+       int ret;
+
+       pthread_mutex_lock(&handle->tracker->lock);
+       pthread_mutex_lock(&handle->lock);
+       ret = lttng_inode_defer_unlink(handle->inode);
+       pthread_mutex_unlock(&handle->lock);
+       pthread_mutex_unlock(&handle->tracker->lock);
+       return ret;
+}
+
 int fs_handle_close(struct fs_handle *handle)
 {
        int ret = 0;
index ff5f49a1b8d2afc62e731e04e2ce66ab36457b78..b8082c9a7697f51eb9b2c7d30e3ef94610f6d450 100644 (file)
@@ -156,6 +156,20 @@ int fs_handle_get_fd(struct fs_handle *handle);
  */
 void fs_handle_put_fd(struct fs_handle *handle);
 
+/*
+ * Unlink the file associated to an fs_handle. Note that the unlink
+ * operation will not be performed immediately. It will only be performed
+ * once all references to the underlying file (through other fs_handle objects)
+ * have been released.
+ *
+ * However, note that the file will be renamed so as to provide the observable
+ * effect of an unlink(), that is removing a name from the filesystem.
+ *
+ * Returns 0 on success, otherwise a negative value will be returned
+ * if the operation failed.
+ */
+int fs_handle_unlink(struct fs_handle *handle);
+
 /*
  * Frees the handle and discards the underlying fd.
  */
This page took 0.027946 seconds and 5 git commands to generate.