fix: successful file/directory removal may reported "Input/Output error"
parent
5d7af2f653
commit
4ab5ed8a49
|
@ -1488,7 +1488,7 @@ search:
|
|||
*/
|
||||
if (ni->mrec->link_count) {
|
||||
ntfs_inode_update_times(ni, NTFS_UPDATE_CTIME);
|
||||
goto out;
|
||||
goto ok;
|
||||
}
|
||||
ntfs_attr_reinit_search_ctx(actx);
|
||||
while (!ntfs_attrs_walk(actx)) {
|
||||
|
@ -1530,12 +1530,16 @@ search:
|
|||
"Leaving inconsistent metadata.\n");
|
||||
}
|
||||
ni = NULL;
|
||||
ok:
|
||||
ntfs_inode_update_times(dir_ni, NTFS_UPDATE_MCTIME);
|
||||
out:
|
||||
if (actx)
|
||||
ntfs_attr_put_search_ctx(actx);
|
||||
if (ictx)
|
||||
ntfs_index_ctx_put(ictx);
|
||||
if (ni && ntfs_inode_close(ni) && !err)
|
||||
if (ntfs_inode_close(dir_ni) && !err)
|
||||
err = errno;
|
||||
if (ntfs_inode_close(ni) && !err)
|
||||
err = errno;
|
||||
if (err) {
|
||||
errno = err;
|
||||
|
|
|
@ -1020,21 +1020,17 @@ static int ntfs_fuse_rm(const char *org_path)
|
|||
res = -errno;
|
||||
goto exit;
|
||||
}
|
||||
/* Delete object. */
|
||||
if (ntfs_delete(ni, dir_ni, uname, uname_len)) {
|
||||
|
||||
if (ntfs_delete(ni, dir_ni, uname, uname_len))
|
||||
res = -errno;
|
||||
} else {
|
||||
/* Inode ctime is updated in ntfs_delete() for hard links. */
|
||||
ntfs_fuse_update_times(dir_ni, NTFS_UPDATE_MCTIME);
|
||||
}
|
||||
/* ntfs_delete() always closes ni */
|
||||
ni = NULL;
|
||||
/* ntfs_delete() always closes ni and dir_ni */
|
||||
ni = dir_ni = NULL;
|
||||
exit:
|
||||
if (ntfs_inode_close(dir_ni))
|
||||
set_fuse_error(&res);
|
||||
if (ntfs_inode_close(ni))
|
||||
set_fuse_error(&res);
|
||||
free(uname);
|
||||
if (ntfs_inode_close(dir_ni))
|
||||
set_fuse_error(&res);
|
||||
free(path);
|
||||
return res;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue