summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosef Bacik <josef@redhat.com>2011-12-13 12:55:58 -0500
committerJosef Bacik <josef@redhat.com>2011-12-15 11:04:24 -0500
commitee4d89f0c4967c624c92516fcc37b41069bfdc23 (patch)
treebec733b7d6f2794a86622ad76948c0be2c152170
parent7041ee97281c30a78658904140c7bd9373a36142 (diff)
downloadkernel-common-ee4d89f0c4967c624c92516fcc37b41069bfdc23.tar.gz
kernel-common-ee4d89f0c4967c624c92516fcc37b41069bfdc23.tar.bz2
kernel-common-ee4d89f0c4967c624c92516fcc37b41069bfdc23.zip
Btrfs: don't panic if orphan item already exists
I've been hitting this BUG_ON() in btrfs_orphan_add when running xfstest 269 in a loop. This is because we will add an orphan item, do the truncate, the truncate will fail for whatever reason (*cough*ENOSPC*cough*) and then we're left with an orphan item still in the fs. Then we come back later to do another truncate and it blows up because we already have an orphan item. This is ok so just fix the BUG_ON() to only BUG() if ret is not EEXIST. Thanks, Signed-off-by: Josef Bacik <josef@redhat.com>
-rw-r--r--fs/btrfs/inode.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 6349c63a4b37..b212f391ceab 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -2032,7 +2032,7 @@ int btrfs_orphan_add(struct btrfs_trans_handle *trans, struct inode *inode)
/* insert an orphan item to track this unlinked/truncated file */
if (insert >= 1) {
ret = btrfs_insert_orphan_item(trans, root, btrfs_ino(inode));
- BUG_ON(ret);
+ BUG_ON(ret && ret != -EEXIST);
}
/* insert an orphan item to track subvolume contains orphan files */