[Gluster-devel] regarding inode_link/unlink

Raghavendra Bhat rabhat at redhat.com
Fri Jul 4 12:51:58 UTC 2014


On Friday 04 July 2014 05:39 PM, Pranith Kumar Karampuri wrote:
>
> On 07/04/2014 04:28 PM, Raghavendra Gowdappa wrote:
>>
>> ----- Original Message -----
>>> From: "Pranith Kumar Karampuri" <pkarampu at redhat.com>
>>> To: "Gluster Devel" <gluster-devel at gluster.org>, "Anand Avati" 
>>> <avati at gluster.org>, "Brian Foster"
>>> <bfoster at redhat.com>, "Raghavendra Gowdappa" <rgowdapp at redhat.com>, 
>>> "Raghavendra Bhat" <rabhat at redhat.com>
>>> Sent: Friday, July 4, 2014 3:44:29 PM
>>> Subject: regarding inode_link/unlink
>>>
>>> hi,
>>>        I have a doubt about when a particular dentry_unset thus
>>> inode_unref on parent dir happens on fuse-bridge in gluster.
>>> When a file is looked up for the first time fuse_entry_cbk does
>>> 'inode_link' with parent-gfid/bname. Whenever an unlink/rmdir/(lookup
>>> gives ENOENT) happens then corresponding inode unlink happens. The
>>> question is, will the present set of operations lead to leaks:
>>> 1) Mount 'M0' creates a file 'a'
>>> 2) Mount 'M1' of same volume deletes file 'a'
>>>
>>> M0 never touches 'a' anymore. When will inode_unlink happen for such
>>> cases? Will it lead to memory leaks?
>> Kernel will eventually send forget (a) on M0 and that will cleanup 
>> the dentries and inode. Its equivalent to a file being looked up and 
>> never used again (deleting doesn't matter in this case).
> Do you know the trigger points for that? When I do 'touch a' on the 
> mount point and leave the system like that, forget is not coming.
> If I do unlink on the file then forget is coming.
>
> Pranith

As per my understanding forgets can come in one of these below situations:
1) File/directory is removed
2) As per the above example where there are 2 mounts. In this case, say 
one of the mounts removes the file/directory. The other client will get 
forget if it tries to access the removed file/directory.
3) In glusterfs fuse client the lru limit for the inodes is infinity. If 
the lru-limit is finite, then forgets can come once the lru-limit is 
crossed.
4) When drop caches is done, the kernel will send forgets.

Please let me know if I have missed anything.

Regards,
Raghavendra Bhat

>>
>>
>>> Pranith
>>>
>



More information about the Gluster-devel mailing list