[BTRFS][UBTRFS][SHELLBTRFS] Upgrade to 1.7.7 (#4417)

v1.7.7 (2021-04-12):

- Fixed deadlock on high load
- Fixed free space issue when installing Genshin Impact
- Fixed issue when copying files with wildcards in command prompt
- Increased speed of directory lookups
This commit is contained in:
Vincent Franchomme 2022-04-28 21:35:05 +02:00 committed by Hermès BÉLUSCA - MAÏTO
parent c982533ea9
commit 98654b54b4
9 changed files with 37 additions and 33 deletions

View file

@ -195,6 +195,10 @@ NTSTATUS find_file_in_dir(PUNICODE_STRING filename, fcb* fcb, root** subvol, uin
} else
fnus = *filename;
Status = check_file_name_valid(filename, false, false);
if (!NT_SUCCESS(Status))
return Status;
hash = calc_crc32c(0xffffffff, (uint8_t*)fnus.Buffer, fnus.Length);
c = hash >> 24;
@ -1604,6 +1608,9 @@ NTSTATUS open_fileref_child(_Requires_lock_held_(_Curr_->tree_lock) _Requires_ex
TRACE("could not find %.*S\n", (int)(name->Length / sizeof(WCHAR)), name->Buffer);
return lastpart ? STATUS_OBJECT_NAME_NOT_FOUND : STATUS_OBJECT_PATH_NOT_FOUND;
} else if (Status == STATUS_OBJECT_NAME_INVALID) {
TRACE("invalid filename: %.*S\n", (int)(name->Length / sizeof(WCHAR)), name->Buffer);
return Status;
} else if (!NT_SUCCESS(Status)) {
ERR("find_file_in_dir returned %08lx\n", Status);
return Status;
@ -1804,7 +1811,7 @@ NTSTATUS open_fileref(_Requires_lock_held_(_Curr_->tree_lock) _Requires_exclusiv
Status = open_fileref_child(Vcb, sf, &nb->us, cs, lastpart, streampart, pooltype, &sf2, Irp);
if (!NT_SUCCESS(Status)) {
if (Status == STATUS_OBJECT_PATH_NOT_FOUND || Status == STATUS_OBJECT_NAME_NOT_FOUND)
if (Status == STATUS_OBJECT_PATH_NOT_FOUND || Status == STATUS_OBJECT_NAME_NOT_FOUND || Status == STATUS_OBJECT_NAME_INVALID)
TRACE("open_fileref_child returned %08lx\n", Status);
else
ERR("open_fileref_child returned %08lx\n", Status);
@ -4668,7 +4675,7 @@ loaded:
TRACE("file doesn't exist, returning STATUS_OBJECT_NAME_NOT_FOUND\n");
goto exit;
}
} else if (Status == STATUS_OBJECT_PATH_NOT_FOUND) {
} else if (Status == STATUS_OBJECT_PATH_NOT_FOUND || Status == STATUS_OBJECT_NAME_INVALID) {
TRACE("open_fileref returned %08lx\n", Status);
goto exit;
} else {