From: Goswin v. B. <gos...@we...> - 2010-07-01 07:58:13
|
Paul Schutte <pa...@up...> writes: > Hi > > I should actually rename this thread now to "Lookup reference count > broken when hardlinks are not implemented". > > I believe I stumbled onto a bug while playing with the forget callback. > I noticed that the "lookup count" should increase when you hardlink a > file. > > I then removed the (.link) callback from struct fuse_lowlevel_ops in my > fs (as I was chasing a bug). Hardlinks are now not implemented. > I then tried to hardlink files anyway and got the error as expected. > > I noticed that the forget callback was then called with the same amount > of (nlookups - forget references) as if the hardlink operations had > succeeded. That left my with a negative reference count. > > I think hardlink is sort of a special case because a filesystem could > function without hardlink, but not without the other functions that > should increase the "lookup count". > > So, if you use forget to manage inode/file lifetimes, you better > implement hardlinks or you could have haywire reference counts and > possible double freeing of memory. > > Regards > Paul That sounds like a bug in fuse. Could you give debug log? MfG Goswin |