If we just don't have the root dirid stuff go ahead and re-create it, since it
is easily recreated.  Thanks,

Signed-off-by: Josef Bacik <[email protected]>
---
 cmds-check.c | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/cmds-check.c b/cmds-check.c
index a30db8d..5fbf08f 100644
--- a/cmds-check.c
+++ b/cmds-check.c
@@ -1987,6 +1987,26 @@ static int check_inode_recs(struct btrfs_root *root,
                        error++;
                }
        } else {
+               if (repair) {
+                       struct btrfs_trans_handle *trans;
+
+                       trans = btrfs_start_transaction(root, 1);
+                       if (IS_ERR(trans)) {
+                               err = PTR_ERR(trans);
+                               return err;
+                       }
+
+                       fprintf(stderr, "root %llu missing its root dir, "
+                               "recreating\n",
+                               (unsigned long long)root->objectid);
+
+                       ret = btrfs_make_root_dir(trans, root, root_dirid);
+                       BUG_ON(ret);
+
+                       btrfs_commit_transaction(trans, root);
+                       return -EAGAIN;
+               }
+
                fprintf(stderr, "root %llu root dir %llu not found\n",
                        (unsigned long long)root->root_key.objectid,
                        (unsigned long long)root_dirid);
-- 
1.8.3.1

--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to