Skip to content

Commit

Permalink
btrfs: reada_extent doesn't need kref for refcount
Browse files Browse the repository at this point in the history
All increments and decrements are under the same spinlock - have to be,
since they need to protect the radix_tree it's found in.  Just use
int, no need to wank with kref...

Signed-off-by: Al Viro <[email protected]>
  • Loading branch information
Al Viro committed Oct 3, 2012
1 parent 10c28d9 commit 99621b4
Showing 1 changed file with 7 additions and 11 deletions.
18 changes: 7 additions & 11 deletions fs/btrfs/reada.c
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ struct reada_extent {
u32 blocksize;
int err;
struct list_head extctl;
struct kref refcnt;
int refcnt;
spinlock_t lock;
struct reada_zone *zones[BTRFS_MAX_MIRRORS];
int nzones;
Expand Down Expand Up @@ -126,7 +126,7 @@ static int __readahead_hook(struct btrfs_root *root, struct extent_buffer *eb,
spin_lock(&fs_info->reada_lock);
re = radix_tree_lookup(&fs_info->reada_tree, index);
if (re)
kref_get(&re->refcnt);
re->refcnt++;
spin_unlock(&fs_info->reada_lock);

if (!re)
Expand Down Expand Up @@ -336,7 +336,7 @@ static struct reada_extent *reada_find_extent(struct btrfs_root *root,
spin_lock(&fs_info->reada_lock);
re = radix_tree_lookup(&fs_info->reada_tree, index);
if (re)
kref_get(&re->refcnt);
re->refcnt++;
spin_unlock(&fs_info->reada_lock);

if (re)
Expand All @@ -352,7 +352,7 @@ static struct reada_extent *reada_find_extent(struct btrfs_root *root,
re->top = *top;
INIT_LIST_HEAD(&re->extctl);
spin_lock_init(&re->lock);
kref_init(&re->refcnt);
re->refcnt = 1;

/*
* map block
Expand Down Expand Up @@ -398,7 +398,7 @@ static struct reada_extent *reada_find_extent(struct btrfs_root *root,
if (ret == -EEXIST) {
re_exist = radix_tree_lookup(&fs_info->reada_tree, index);
BUG_ON(!re_exist);
kref_get(&re_exist->refcnt);
re_exist->refcnt++;
spin_unlock(&fs_info->reada_lock);
goto error;
}
Expand Down Expand Up @@ -465,18 +465,14 @@ static struct reada_extent *reada_find_extent(struct btrfs_root *root,
return re_exist;
}

static void reada_kref_dummy(struct kref *kr)
{
}

static void reada_extent_put(struct btrfs_fs_info *fs_info,
struct reada_extent *re)
{
int i;
unsigned long index = re->logical >> PAGE_CACHE_SHIFT;

spin_lock(&fs_info->reada_lock);
if (!kref_put(&re->refcnt, reada_kref_dummy)) {
if (--re->refcnt) {
spin_unlock(&fs_info->reada_lock);
return;
}
Expand Down Expand Up @@ -671,7 +667,7 @@ static int reada_start_machine_dev(struct btrfs_fs_info *fs_info,
return 0;
}
dev->reada_next = re->logical + re->blocksize;
kref_get(&re->refcnt);
re->refcnt++;

spin_unlock(&fs_info->reada_lock);

Expand Down

0 comments on commit 99621b4

Please sign in to comment.