[open] fix open_if for dir when dir exists
This commit is contained in:
parent
540ad44f21
commit
863db2735b
1 changed files with 6 additions and 3 deletions
|
|
@ -288,10 +288,13 @@ out:
|
||||||
}
|
}
|
||||||
|
|
||||||
static BOOLEAN open_for_attributes(uint32_t type, ULONG access_mask,
|
static BOOLEAN open_for_attributes(uint32_t type, ULONG access_mask,
|
||||||
ULONG disposition)
|
ULONG disposition, int status)
|
||||||
{
|
{
|
||||||
if (type == NF4DIR) {
|
if (type == NF4DIR) {
|
||||||
if (disposition == FILE_OPEN || disposition == FILE_OVERWRITE) {
|
if (disposition == FILE_OPEN || disposition == FILE_OVERWRITE ||
|
||||||
|
(!status && (disposition == FILE_OPEN_IF ||
|
||||||
|
disposition == FILE_OVERWRITE_IF ||
|
||||||
|
disposition == FILE_SUPERSEDE))) {
|
||||||
dprintf(1, "Opening a directory\n");
|
dprintf(1, "Opening a directory\n");
|
||||||
return TRUE;
|
return TRUE;
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -570,7 +573,7 @@ static int handle_open(nfs41_upcall *upcall)
|
||||||
|
|
||||||
status = NO_ERROR;
|
status = NO_ERROR;
|
||||||
} else if (open_for_attributes(state->type, args->access_mask,
|
} else if (open_for_attributes(state->type, args->access_mask,
|
||||||
args->disposition)) {
|
args->disposition, status)) {
|
||||||
if (status) {
|
if (status) {
|
||||||
dprintf(1, "nfs41_lookup failed with %d\n", status);
|
dprintf(1, "nfs41_lookup failed with %d\n", status);
|
||||||
goto out_free_state;
|
goto out_free_state;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue