struct extent_tree *et;
        nid_t ino = inode->i_ino;
 
-       down_write(&sbi->extent_tree_lock);
+       mutex_lock(&sbi->extent_tree_lock);
        et = radix_tree_lookup(&sbi->extent_tree_root, ino);
        if (!et) {
                et = f2fs_kmem_cache_alloc(extent_tree_slab, GFP_NOFS);
                atomic_dec(&sbi->total_zombie_tree);
                list_del_init(&et->list);
        }
-       up_write(&sbi->extent_tree_lock);
+       mutex_unlock(&sbi->extent_tree_lock);
 
        /* never died until evict_inode */
        F2FS_I(inode)->extent_tree = et;
        if (!atomic_read(&sbi->total_zombie_tree))
                goto free_node;
 
-       if (!down_write_trylock(&sbi->extent_tree_lock))
+       if (!mutex_trylock(&sbi->extent_tree_lock))
                goto out;
 
        /* 1. remove unreferenced extent tree */
                        goto unlock_out;
                cond_resched();
        }
-       up_write(&sbi->extent_tree_lock);
+       mutex_unlock(&sbi->extent_tree_lock);
 
 free_node:
        /* 2. remove LRU extent entries */
-       if (!down_write_trylock(&sbi->extent_tree_lock))
+       if (!mutex_trylock(&sbi->extent_tree_lock))
                goto out;
 
        remained = nr_shrink - (node_cnt + tree_cnt);
        spin_unlock(&sbi->extent_lock);
 
 unlock_out:
-       up_write(&sbi->extent_tree_lock);
+       mutex_unlock(&sbi->extent_tree_lock);
 out:
        trace_f2fs_shrink_extent_tree(sbi, node_cnt, tree_cnt);
 
 
        if (inode->i_nlink && !is_bad_inode(inode) &&
                                        atomic_read(&et->node_cnt)) {
-               down_write(&sbi->extent_tree_lock);
+               mutex_lock(&sbi->extent_tree_lock);
                list_add_tail(&et->list, &sbi->zombie_list);
                atomic_inc(&sbi->total_zombie_tree);
-               up_write(&sbi->extent_tree_lock);
+               mutex_unlock(&sbi->extent_tree_lock);
                return;
        }
 
        node_cnt = f2fs_destroy_extent_node(inode);
 
        /* delete extent tree entry in radix tree */
-       down_write(&sbi->extent_tree_lock);
+       mutex_lock(&sbi->extent_tree_lock);
        f2fs_bug_on(sbi, atomic_read(&et->node_cnt));
        radix_tree_delete(&sbi->extent_tree_root, inode->i_ino);
        kmem_cache_free(extent_tree_slab, et);
        atomic_dec(&sbi->total_ext_tree);
-       up_write(&sbi->extent_tree_lock);
+       mutex_unlock(&sbi->extent_tree_lock);
 
        F2FS_I(inode)->extent_tree = NULL;
 
 void init_extent_cache_info(struct f2fs_sb_info *sbi)
 {
        INIT_RADIX_TREE(&sbi->extent_tree_root, GFP_NOIO);
-       init_rwsem(&sbi->extent_tree_lock);
+       mutex_init(&sbi->extent_tree_lock);
        INIT_LIST_HEAD(&sbi->extent_list);
        spin_lock_init(&sbi->extent_lock);
        atomic_set(&sbi->total_ext_tree, 0);