mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-23 20:51:03 +02:00
fscache: Add tracepoints
Add some tracepoints to fscache: (*) fscache_cookie - Tracks a cookie's usage count. (*) fscache_netfs - Logs registration of a network filesystem, including the pointer to the cookie allocated. (*) fscache_acquire - Logs cookie acquisition. (*) fscache_relinquish - Logs cookie relinquishment. (*) fscache_enable - Logs enablement of a cookie. (*) fscache_disable - Logs disablement of a cookie. (*) fscache_osm - Tracks execution of states in the object state machine. and cachefiles: (*) cachefiles_ref - Tracks a cachefiles object's usage count. (*) cachefiles_lookup - Logs result of lookup_one_len(). (*) cachefiles_mkdir - Logs result of vfs_mkdir(). (*) cachefiles_create - Logs result of vfs_create(). (*) cachefiles_unlink - Logs calls to vfs_unlink(). (*) cachefiles_rename - Logs calls to vfs_rename(). (*) cachefiles_mark_active - Logs an object becoming active. (*) cachefiles_wait_active - Logs a wait for an old object to be destroyed. (*) cachefiles_mark_inactive - Logs an object becoming inactive. (*) cachefiles_mark_buried - Logs the burial of an object. Signed-off-by: David Howells <dhowells@redhat.com>
This commit is contained in:
@@ -177,10 +177,12 @@ static void cachefiles_lookup_complete(struct fscache_object *_object)
|
||||
* increment the usage count on an inode object (may fail if unmounting)
|
||||
*/
|
||||
static
|
||||
struct fscache_object *cachefiles_grab_object(struct fscache_object *_object)
|
||||
struct fscache_object *cachefiles_grab_object(struct fscache_object *_object,
|
||||
enum fscache_obj_ref_trace why)
|
||||
{
|
||||
struct cachefiles_object *object =
|
||||
container_of(_object, struct cachefiles_object, fscache);
|
||||
int u;
|
||||
|
||||
_enter("{OBJ%x,%d}", _object->debug_id, atomic_read(&object->usage));
|
||||
|
||||
@@ -188,7 +190,9 @@ struct fscache_object *cachefiles_grab_object(struct fscache_object *_object)
|
||||
ASSERT((atomic_read(&object->usage) & 0xffff0000) != 0x6b6b0000);
|
||||
#endif
|
||||
|
||||
atomic_inc(&object->usage);
|
||||
u = atomic_inc_return(&object->usage);
|
||||
trace_cachefiles_ref(object, _object->cookie,
|
||||
(enum cachefiles_obj_ref_trace)why, u);
|
||||
return &object->fscache;
|
||||
}
|
||||
|
||||
@@ -309,10 +313,12 @@ static void cachefiles_drop_object(struct fscache_object *_object)
|
||||
/*
|
||||
* dispose of a reference to an object
|
||||
*/
|
||||
static void cachefiles_put_object(struct fscache_object *_object)
|
||||
static void cachefiles_put_object(struct fscache_object *_object,
|
||||
enum fscache_obj_ref_trace why)
|
||||
{
|
||||
struct cachefiles_object *object;
|
||||
struct fscache_cache *cache;
|
||||
int u;
|
||||
|
||||
ASSERT(_object);
|
||||
|
||||
@@ -328,7 +334,11 @@ static void cachefiles_put_object(struct fscache_object *_object)
|
||||
ASSERTIFCMP(object->fscache.parent,
|
||||
object->fscache.parent->n_children, >, 0);
|
||||
|
||||
if (atomic_dec_and_test(&object->usage)) {
|
||||
u = atomic_dec_return(&object->usage);
|
||||
trace_cachefiles_ref(object, _object->cookie,
|
||||
(enum cachefiles_obj_ref_trace)why, u);
|
||||
ASSERTCMP(u, !=, -1);
|
||||
if (u == 0) {
|
||||
_debug("- kill object OBJ%x", object->fscache.debug_id);
|
||||
|
||||
ASSERT(!test_bit(CACHEFILES_OBJECT_ACTIVE, &object->flags));
|
||||
|
Reference in New Issue
Block a user