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

Jonathan Rajotte Julien Jonathan.rajotte-julien at efficios.com
Fri Mar 18 19:46:12 UTC 2016


Should be there.

On 2016-03-18 01:27 PM, Jérémie Galarneau wrote:
> Is a first patch missing? I'm only seeing 2/2.
>
> Thanks,
> Jérémie
>
> On Fri, Mar 18, 2016 at 1:20 PM, Jonathan Rajotte
> <jonathan.rajotte-julien at efficios.com> wrote:
>> 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
>>
>
>

-- 
Jonathan R. Julien
Efficios



More information about the lttng-dev mailing list