diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h
index 1e19f2d..fa65fe0 100644
--- a/fs/btrfs/ctree.h
+++ b/fs/btrfs/ctree.h
@@ -1145,7 +1145,7 @@
 int btrfs_page_mkwrite(struct vm_area_struct *vma, struct page *page);
 int btrfs_readpage(struct file *file, struct page *page);
 void btrfs_delete_inode(struct inode *inode);
-void btrfs_drop_inode(struct inode *inode);
+void btrfs_put_inode(struct inode *inode);
 void btrfs_read_locked_inode(struct inode *inode);
 int btrfs_write_inode(struct inode *inode, int wait);
 void btrfs_dirty_inode(struct inode *inode);
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index f83f88c..c1ac0bc 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -601,6 +601,7 @@
 {
 	struct btrfs_root *root;
 	struct btrfs_trans_handle *trans;
+	struct inode *inode = dentry->d_inode;
 	int ret;
 	unsigned long nr = 0;
 
@@ -617,6 +618,18 @@
 	ret = btrfs_unlink_trans(trans, root, dir, dentry);
 	nr = trans->blocks_used;
 
+	if (inode->i_nlink == 0) {
+		int found;
+		/* if the inode isn't linked anywhere,
+		 * we don't need to worry about
+		 * data=ordered
+		 */
+		found = btrfs_del_ordered_inode(inode);
+		if (found == 1) {
+			atomic_dec(&inode->i_count);
+		}
+	}
+
 	btrfs_end_transaction(trans, root);
 fail:
 	mutex_unlock(&root->fs_info->fs_mutex);
@@ -993,15 +1006,22 @@
 	return err;
 }
 
-void btrfs_drop_inode(struct inode *inode)
+void btrfs_put_inode(struct inode *inode)
 {
-	if (!BTRFS_I(inode)->ordered_trans || inode->i_nlink) {
-		generic_drop_inode(inode);
+	int ret;
+
+	if (!BTRFS_I(inode)->ordered_trans) {
 		return;
 	}
-	/* FIXME, make sure this delete actually ends up in the transaction */
-	btrfs_del_ordered_inode(inode);
-	generic_drop_inode(inode);
+
+	if (mapping_tagged(inode->i_mapping, PAGECACHE_TAG_DIRTY) ||
+	    mapping_tagged(inode->i_mapping, PAGECACHE_TAG_WRITEBACK))
+		return;
+
+	ret = btrfs_del_ordered_inode(inode);
+	if (ret == 1) {
+		atomic_dec(&inode->i_count);
+	}
 }
 
 void btrfs_delete_inode(struct inode *inode)
diff --git a/fs/btrfs/ordered-data.c b/fs/btrfs/ordered-data.c
index b56011b..cba2b62 100644
--- a/fs/btrfs/ordered-data.c
+++ b/fs/btrfs/ordered-data.c
@@ -153,6 +153,8 @@
 	write_unlock(&tree->lock);
 	if (node)
 		kfree(entry);
+	else
+		igrab(inode);
 	return 0;
 }
 
@@ -221,6 +223,7 @@
 }
 
 static int __btrfs_del_ordered_inode(struct btrfs_ordered_inode_tree *tree,
+				     struct inode *inode,
 				     u64 root_objectid, u64 objectid)
 {
 	struct tree_entry *entry;
@@ -234,6 +237,7 @@
 		return 0;
 	}
 	rb_erase(node, &tree->tree);
+	BTRFS_I(inode)->ordered_trans = 0;
 	write_unlock(&tree->lock);
 	entry = rb_entry(node, struct tree_entry, rb_node);
 	kfree(entry);
@@ -244,14 +248,16 @@
 {
 	struct btrfs_root *root = BTRFS_I(inode)->root;
 	u64 root_objectid = root->root_key.objectid;
+	int ret = 0;
 
 	spin_lock(&root->fs_info->new_trans_lock);
 	if (root->fs_info->running_transaction) {
 		struct btrfs_ordered_inode_tree *tree;
 		tree = &root->fs_info->running_transaction->ordered_inode_tree;
-		__btrfs_del_ordered_inode(tree, root_objectid, inode->i_ino);
+		ret = __btrfs_del_ordered_inode(tree, inode, root_objectid,
+						inode->i_ino);
 	}
 	spin_unlock(&root->fs_info->new_trans_lock);
-	return 0;
+	return ret;
 }
 
diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c
index 4deea39..e506de3 100644
--- a/fs/btrfs/super.c
+++ b/fs/btrfs/super.c
@@ -425,7 +425,7 @@
 
 static struct super_operations btrfs_super_ops = {
 	.delete_inode	= btrfs_delete_inode,
-	.drop_inode	= btrfs_drop_inode,
+	.put_inode	= btrfs_put_inode,
 	.put_super	= btrfs_put_super,
 	.read_inode	= btrfs_read_locked_inode,
 	.write_super	= btrfs_write_super,
diff --git a/fs/btrfs/transaction.c b/fs/btrfs/transaction.c
index a320580..08f7a18 100644
--- a/fs/btrfs/transaction.c
+++ b/fs/btrfs/transaction.c
@@ -521,6 +521,7 @@
 		if (inode) {
 			if (S_ISREG(inode->i_mode))
 				filemap_write_and_wait(inode->i_mapping);
+			atomic_dec(&inode->i_count);
 			iput(inode);
 		}
 		mutex_lock(&root->fs_info->fs_mutex);
