From: Paul S. <pa...@up...> - 2010-06-30 15:12:15
|
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 |