[lttng-dev] [PATCH lttng-tools 2/2] Clean-up shm directory tree after freeing the channel

Jonathan Rajotte jonathan.rajotte-julien at efficios.com
Fri Mar 18 17:20:49 UTC 2016


On NFS an unlinked file that is still mmaped or unclosed is kept around
by creating a .nfsXXXX file since an unlinked file can still be used.[1]

This prevent the effective cleanup of the shm tree directory because it happens
before the userspace consumer shm handles table cleanup [2].

Moving the tree removal to lttng_ustconsumer_free_channel ensure that the
cleanup is done when the files are considered completely closed/unmapped.

[1] http://nfs.sourceforge.net/ Look for "silly rename"
[2] See channel_free subcall to shm_object_table_destroy

Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien at efficios.com>
---
 src/common/ust-consumer/ust-consumer.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/src/common/ust-consumer/ust-consumer.c b/src/common/ust-consumer/ust-consumer.c
index fe7445b..a113ef1 100644
--- a/src/common/ust-consumer/ust-consumer.c
+++ b/src/common/ust-consumer/ust-consumer.c
@@ -1985,11 +1985,6 @@ void lttng_ustconsumer_del_channel(struct lttng_consumer_channel *chan)
 			}
 		}
 	}
-	/* Try to rmdir all directories under shm_path root. */
-	if (chan->root_shm_path[0]) {
-		(void) run_as_recursive_rmdir(chan->root_shm_path,
-				chan->uid, chan->gid);
-	}
 }
 
 void lttng_ustconsumer_free_channel(struct lttng_consumer_channel *chan)
@@ -1999,6 +1994,11 @@ void lttng_ustconsumer_free_channel(struct lttng_consumer_channel *chan)
 
 	consumer_metadata_cache_destroy(chan);
 	ustctl_destroy_channel(chan->uchan);
+	/* Try to rmdir all directories under shm_path root. */
+	if (chan->root_shm_path[0]) {
+		(void) run_as_recursive_rmdir(chan->root_shm_path,
+				chan->uid, chan->gid);
+	}
 	free(chan->stream_fds);
 }
 
-- 
2.7.0



More information about the lttng-dev mailing list