Skip to content

Commit

Permalink
FS-Cache: Increase reference of parent after registering, netfs success
Browse files Browse the repository at this point in the history
If netfs exist, fscache should not increase the reference of parent's
usage and n_children, otherwise, never be decreased.

v2: thanks David's suggest,
 move increasing reference of parent if success
 use kmem_cache_free() freeing primary_index directly

v3: don't move "netfs->primary_index->parent = &fscache_fsdef_index;"

Cc: [email protected] # v2.6.30+
Signed-off-by: Kinglong Mee <[email protected]>
Signed-off-by: David Howells <[email protected]>
Signed-off-by: Al Viro <[email protected]>
  • Loading branch information
kinglongmee authored and Al Viro committed Nov 11, 2015
1 parent 0ee9608 commit 86108c2
Showing 1 changed file with 4 additions and 5 deletions.
9 changes: 4 additions & 5 deletions fs/fscache/netfs.c
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,6 @@ int __fscache_register_netfs(struct fscache_netfs *netfs)
netfs->primary_index->netfs_data = netfs;
netfs->primary_index->flags = 1 << FSCACHE_COOKIE_ENABLED;

atomic_inc(&netfs->primary_index->parent->usage);
atomic_inc(&netfs->primary_index->parent->n_children);

spin_lock_init(&netfs->primary_index->lock);
INIT_HLIST_HEAD(&netfs->primary_index->backing_objects);

Expand All @@ -62,6 +59,9 @@ int __fscache_register_netfs(struct fscache_netfs *netfs)
goto already_registered;
}

atomic_inc(&netfs->primary_index->parent->usage);
atomic_inc(&netfs->primary_index->parent->n_children);

list_add(&netfs->link, &fscache_netfs_list);
ret = 0;

Expand All @@ -71,8 +71,7 @@ int __fscache_register_netfs(struct fscache_netfs *netfs)
up_write(&fscache_addremove_sem);

if (ret < 0) {
netfs->primary_index->parent = NULL;
__fscache_cookie_put(netfs->primary_index);
kmem_cache_free(fscache_cookie_jar, netfs->primary_index);
netfs->primary_index = NULL;
}

Expand Down

0 comments on commit 86108c2

Please sign in to comment.