diff options
Diffstat (limited to 'fs/bcachefs/fs.c')
-rw-r--r-- | fs/bcachefs/fs.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/fs/bcachefs/fs.c b/fs/bcachefs/fs.c index 3b0783f117ae..00172b7be889 100644 --- a/fs/bcachefs/fs.c +++ b/fs/bcachefs/fs.c @@ -1010,9 +1010,17 @@ err_tx_restart: goto err; } - BUG_ON(src_inode->v.i_ino != src_inode_u.bi_inum); - BUG_ON(dst_inode && - dst_inode->v.i_ino != dst_inode_u.bi_inum); + if ((src_inode->v.i_ino != src_inode_u.bi_inum) || + (dst_inode && + dst_inode->v.i_ino != dst_inode_u.bi_inum)) + bch2_fs_inconsistent(c, "bad rename: src inum %llu:%llu != %llu or dst %llu:%llu != %llu", + src_inode->ei_inum.subvol, + src_inode->ei_inum.inum, + src_inode_u.bi_inum, + + dst_inode ? dst_inode->ei_inum.subvol : 0, + dst_inode ? dst_inode->ei_inum.inum : 0, + dst_inode ? dst_inode_u.bi_inum : 0); bch2_inode_update_after_write(trans, src_dir, &src_dir_u, ATTR_MTIME|ATTR_CTIME|ATTR_SIZE); |