linux-btrfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2] btrfs: improve error handling of btrfs_add_link()
@ 2018-11-23  8:42 Johannes Thumshirn
  2018-11-26 18:37 ` David Sterba
  0 siblings, 1 reply; 4+ messages in thread
From: Johannes Thumshirn @ 2018-11-23  8:42 UTC (permalink / raw)
  To: David Sterba; +Cc: Linux BTRFS Mailinglist, Johannes Thumshirn

err holds the return value of either btrfs_del_root_ref() or
btrfs_del_inode_ref() but it hasn't been checked since it's
introduction with commit fe66a05a0679 (Btrfs: improve error handling
for btrfs_insert_dir_item callers) in 2012.

Instead of silently ignoring the return values, print a message so the user
knows what kind of error has encountered.

Link: https://lore.kernel.org/linux-btrfs/20181119141323.GC24115@twin.jikos.cz
Signed-off-by: Johannes Thumshirn <jthumshirn@suse.de>
---

Changes to v1:
* Only print an error message and let the callers abort the transaction (Dave)
---
 fs/btrfs/inode.c | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 9becf8543489..8ca2f82b35a3 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -6351,6 +6351,7 @@ int btrfs_add_link(struct btrfs_trans_handle *trans,
 	struct btrfs_root *root = parent_inode->root;
 	u64 ino = btrfs_ino(inode);
 	u64 parent_ino = btrfs_ino(parent_inode);
+	int err;
 
 	if (unlikely(ino == BTRFS_FIRST_FREE_OBJECTID)) {
 		memcpy(&key, &inode->root->root_key, sizeof(key));
@@ -6395,17 +6396,25 @@ int btrfs_add_link(struct btrfs_trans_handle *trans,
 fail_dir_item:
 	if (unlikely(ino == BTRFS_FIRST_FREE_OBJECTID)) {
 		u64 local_index;
-		int err;
+
 		err = btrfs_del_root_ref(trans, key.objectid,
 					 root->root_key.objectid, parent_ino,
 					 &local_index, name, name_len);
+		if (err)
+			btrfs_info(trans->fs_info,
+		   "failed to delete reference to %.*s, root %llu ref %llu",
+				   name_len, name, key.objectid,
+				   root->root_key.objectid);
 
 	} else if (add_backref) {
 		u64 local_index;
-		int err;
 
 		err = btrfs_del_inode_ref(trans, root, name, name_len,
 					  ino, parent_ino, &local_index);
+		if (err)
+			btrfs_info(trans->fs_info,
+	   "failed to delete reference to %.*s, inode %llu parent %llu",
+				   name_len, name, ino, parent_ino);
 	}
 	return ret;
 }
-- 
2.16.4


^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2018-11-28 18:10 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-11-23  8:42 [PATCH v2] btrfs: improve error handling of btrfs_add_link() Johannes Thumshirn
2018-11-26 18:37 ` David Sterba
2018-11-27  8:56   ` Johannes Thumshirn
2018-11-28 18:10     ` David Sterba

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).