From b3b6ef83d0f4218640c635f572c2b29d63e8e023 Mon Sep 17 00:00:00 2001 From: Eric Biggers Date: Mon, 28 Apr 2014 00:51:10 -0500 Subject: [PATCH] rename_wim_path(): Fix journaling of name change --- src/update_image.c | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/src/update_image.c b/src/update_image.c index 3e7613fc..06a6ad30 100644 --- a/src/update_image.c +++ b/src/update_image.c @@ -1022,28 +1022,23 @@ rename_wim_path(WIMStruct *wim, const tchar *from, const tchar *to, return -EBUSY; if (j) { + if (dst) + if (journaled_unlink(j, dst)) + return -ENOMEM; + if (journaled_unlink(j, src)) + return -ENOMEM; if (journaled_change_name(j, src, path_basename(to))) return -ENOMEM; + if (journaled_link(j, src, parent_of_dst)) + return -ENOMEM; } else { ret = dentry_set_name(src, path_basename(to)); if (ret) return -ENOMEM; - } - if (dst) { - if (j) { - if (journaled_unlink(j, dst)) - return -ENOMEM; - } else { + if (dst) { unlink_dentry(dst); free_dentry_tree(dst, wim->lookup_table); } - } - if (j) { - if (journaled_unlink(j, src)) - return -ENOMEM; - if (journaled_link(j, src, parent_of_dst)) - return -ENOMEM; - } else { unlink_dentry(src); dentry_add_child(parent_of_dst, src); } -- 2.43.0