* syscalls.cc (rename): ONly start transaction if FS supports them.

This commit is contained in:
Corinna Vinschen 2008-05-15 17:23:29 +00:00
parent 13b9bb6221
commit b61251603a
2 changed files with 8 additions and 1 deletions

View File

@ -1,3 +1,7 @@
2008-05-15 Corinna Vinschen <corinna@vinschen.de>
* syscalls.cc (rename): ONly start transaction if FS supports them.
2008-05-15 Corinna Vinschen <corinna@vinschen.de> 2008-05-15 Corinna Vinschen <corinna@vinschen.de>
* autoload.cc (LoadDLLfuncNt): Re-invent. * autoload.cc (LoadDLLfuncNt): Re-invent.

View File

@ -1716,6 +1716,7 @@ rename (const char *oldpath, const char *newpath)
to call only NtSetInformationFile under the transaction. Therefore we to call only NtSetInformationFile under the transaction. Therefore we
have to start the transaction here, if necessary. */ have to start the transaction here, if necessary. */
if (wincap.has_transactions () if (wincap.has_transactions ()
&& (dstpc->fs_flags () & FILE_SUPPORTS_TRANSACTIONS)
&& (dstpc->isdir () || dstpc->has_attribute (FILE_ATTRIBUTE_READONLY))) && (dstpc->isdir () || dstpc->has_attribute (FILE_ATTRIBUTE_READONLY)))
start_transaction (old_trans, trans); start_transaction (old_trans, trans);
@ -1829,7 +1830,9 @@ rename (const char *oldpath, const char *newpath)
destination before renaming. */ destination before renaming. */
if (status == STATUS_ACCESS_DENIED && dstpc->exists () && !dstpc->isdir ()) if (status == STATUS_ACCESS_DENIED && dstpc->exists () && !dstpc->isdir ())
{ {
if (wincap.has_transactions () && !trans) if (wincap.has_transactions ()
&& (dstpc->fs_flags () & FILE_SUPPORTS_TRANSACTIONS)
&& !trans)
{ {
start_transaction (old_trans, trans); start_transaction (old_trans, trans);
/* As mentioned earlier, opening the file must be part of the /* As mentioned earlier, opening the file must be part of the