From: Andrew Morton Cc: Nick Piggin Signed-off-by: Andrew Morton --- fs/reiser4/as_ops.c | 4 ++-- fs/reiser4/jnode.c | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff -puN fs/reiser4/as_ops.c~reiser4-tree_lock-fixes fs/reiser4/as_ops.c --- a/fs/reiser4/as_ops.c~reiser4-tree_lock-fixes +++ a/fs/reiser4/as_ops.c @@ -77,7 +77,7 @@ int reiser4_set_page_dirty(struct page * struct address_space *mapping = page->mapping; if (mapping) { - write_lock_irq(&mapping->tree_lock); + spin_lock_irq(&mapping->tree_lock); /* check for race with truncate */ if (page->mapping) { @@ -89,7 +89,7 @@ int reiser4_set_page_dirty(struct page * page->index, PAGECACHE_TAG_REISER4_MOVED); } - write_unlock_irq(&mapping->tree_lock); + spin_unlock_irq(&mapping->tree_lock); __mark_inode_dirty(mapping->host, I_DIRTY_PAGES); } } diff -puN fs/reiser4/jnode.c~reiser4-tree_lock-fixes fs/reiser4/jnode.c --- a/fs/reiser4/jnode.c~reiser4-tree_lock-fixes +++ a/fs/reiser4/jnode.c @@ -434,9 +434,9 @@ static void inode_attach_jnode(jnode * n if (rtree->rnode == NULL) { /* prevent inode from being pruned when it has jnodes attached to it */ - write_lock_irq(&inode->i_data.tree_lock); + spin_lock_irq(&inode->i_data.tree_lock); inode->i_data.nrpages++; - write_unlock_irq(&inode->i_data.tree_lock); + spin_unlock_irq(&inode->i_data.tree_lock); } assert("zam-1049", equi(rtree->rnode != NULL, info->nr_jnodes != 0)); check_me("zam-1045", @@ -464,9 +464,9 @@ static void inode_detach_jnode(jnode * n check_me("zam-1046", radix_tree_delete(rtree, node->key.j.index)); if (rtree->rnode == NULL) { /* inode can be pruned now */ - write_lock_irq(&inode->i_data.tree_lock); + spin_lock_irq(&inode->i_data.tree_lock); inode->i_data.nrpages--; - write_unlock_irq(&inode->i_data.tree_lock); + spin_unlock_irq(&inode->i_data.tree_lock); } } _