On NFS, an unlinked file that is still mmaped or unclosed is kept
around by creating a .nfsXXXX file since it may still be in use. [1]
This prevents 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 ensures that
the cleanup is done when the files are 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@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
}
}
}
- /* 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)
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);
}