Re: Finally working on cachefs and found first bug.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Here is what I found out with more study:

Within cachefs, "kmem_cache_alloc(cachefs_object_jar, ...)" is called in three places: tree-scan.c:"cachefs_scan_scanning_node()", interface.c:"cachefs_alloc_object()", and super.c:"cachefs_fill_super()".

In "cachefs_scan_scanning_node()", "fscache_object_init()" is called shortly after "kmem_cache_alloc(cachefs_object_jar, ...)" is called.
In "cachefs_alloc_object()", "fscache_object_init()" is called shortly after "kmem_cache_alloc(cachefs_object_jar, ...)" is called.
Only in "cachefs_fill_super() is "fscache_object_init() not called.

If I had just not done the "atomic inc" if the fcache_cache pointer was NULL, there would have been some other problem later because the other two places the kmem_cache_alloc is done would have caused the "atomic inc" to be done twice, sense "fscache_object_init()" was being called twice.

So what I did was move the "fscache_object_init()" out of "cache_object_init_once()" and into "cache_fill_super()", the only place it wasn't being called already.

So, that fixed that.

Now on to the next problem :)

-=# Paul #=-


--
Linux-cachefs mailing list
Linux-cachefs@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/linux-cachefs


[Index of Archives]     [LARTC]     [Bugtraq]     [Yosemite Forum]
  Powered by Linux