Commit 3e87d803 authored by Steve French's avatar Steve French

[CIFS] Add support for legacy servers part seven. Fix open for write,

begin implementation of Win9x style set file size via open then
write of zero bytes.

Signed-off-by: Steve French (sfrench@us.ibm.com)
parent f9f5c817
...@@ -766,7 +766,7 @@ OldOpenRetry: ...@@ -766,7 +766,7 @@ OldOpenRetry:
if(create_options & CREATE_OPTION_SPECIAL) if(create_options & CREATE_OPTION_SPECIAL)
pSMB->FileAttributes = cpu_to_le16(ATTR_SYSTEM); pSMB->FileAttributes = cpu_to_le16(ATTR_SYSTEM);
else else
pSMB->FileAttributes = cpu_to_le16(ATTR_NORMAL); pSMB->FileAttributes = cpu_to_le16(0/*ATTR_NORMAL*/); /* BB FIXME */
/* if ((omode & S_IWUGO) == 0) /* if ((omode & S_IWUGO) == 0)
pSMB->FileAttributes |= cpu_to_le32(ATTR_READONLY);*/ pSMB->FileAttributes |= cpu_to_le32(ATTR_READONLY);*/
...@@ -777,6 +777,8 @@ OldOpenRetry: ...@@ -777,6 +777,8 @@ OldOpenRetry:
/* BB FIXME BB */ /* BB FIXME BB */
/* pSMB->CreateOptions = cpu_to_le32(create_options & CREATE_OPTIONS_MASK); */ /* pSMB->CreateOptions = cpu_to_le32(create_options & CREATE_OPTIONS_MASK); */
/* BB FIXME END BB */ /* BB FIXME END BB */
pSMB->Sattr = cpu_to_le16(ATTR_HIDDEN | ATTR_SYSTEM | ATTR_DIRECTORY);
pSMB->OpenFunction = convert_disposition(openDisposition); pSMB->OpenFunction = convert_disposition(openDisposition);
count += name_len; count += name_len;
pSMB->hdr.smb_buf_length += count; pSMB->hdr.smb_buf_length += count;
...@@ -3689,7 +3691,7 @@ SetEOFRetry: ...@@ -3689,7 +3691,7 @@ SetEOFRetry:
PATH_MAX, nls_codepage, remap); PATH_MAX, nls_codepage, remap);
name_len++; /* trailing null */ name_len++; /* trailing null */
name_len *= 2; name_len *= 2;
} else { /* BB improve the check for buffer overruns BB */ } else { /* BB improve the check for buffer overruns BB */
name_len = strnlen(fileName, PATH_MAX); name_len = strnlen(fileName, PATH_MAX);
name_len++; /* trailing null */ name_len++; /* trailing null */
strncpy(pSMB->FileName, fileName, name_len); strncpy(pSMB->FileName, fileName, name_len);
...@@ -3697,7 +3699,7 @@ SetEOFRetry: ...@@ -3697,7 +3699,7 @@ SetEOFRetry:
params = 6 + name_len; params = 6 + name_len;
data_count = sizeof (struct file_end_of_file_info); data_count = sizeof (struct file_end_of_file_info);
pSMB->MaxParameterCount = cpu_to_le16(2); pSMB->MaxParameterCount = cpu_to_le16(2);
pSMB->MaxDataCount = cpu_to_le16(1000); /* BB find max SMB size from sess */ pSMB->MaxDataCount = cpu_to_le16(4100);
pSMB->MaxSetupCount = 0; pSMB->MaxSetupCount = 0;
pSMB->Reserved = 0; pSMB->Reserved = 0;
pSMB->Flags = 0; pSMB->Flags = 0;
...@@ -4079,7 +4081,7 @@ setPermsRetry: ...@@ -4079,7 +4081,7 @@ setPermsRetry:
PATH_MAX, nls_codepage, remap); PATH_MAX, nls_codepage, remap);
name_len++; /* trailing null */ name_len++; /* trailing null */
name_len *= 2; name_len *= 2;
} else { /* BB improve the check for buffer overruns BB */ } else { /* BB improve the check for buffer overruns BB */
name_len = strnlen(fileName, PATH_MAX); name_len = strnlen(fileName, PATH_MAX);
name_len++; /* trailing null */ name_len++; /* trailing null */
strncpy(pSMB->FileName, fileName, name_len); strncpy(pSMB->FileName, fileName, name_len);
......
...@@ -1030,6 +1030,14 @@ int cifs_setattr(struct dentry *direntry, struct iattr *attrs) ...@@ -1030,6 +1030,14 @@ int cifs_setattr(struct dentry *direntry, struct iattr *attrs)
/* now that we found one valid file /* now that we found one valid file
handle no sense continuing to loop handle no sense continuing to loop
trying others, so break here */ trying others, so break here */
/* if(rc == -EINVAL) {
int bytes_written;
rc = CIFSSMBWrite(xid, pTcon,
nfid, 0,
attrs->ia_size,
&bytes_written,
NULL, NULL, long_op);
} */
break; break;
} }
} }
...@@ -1048,6 +1056,13 @@ int cifs_setattr(struct dentry *direntry, struct iattr *attrs) ...@@ -1048,6 +1056,13 @@ int cifs_setattr(struct dentry *direntry, struct iattr *attrs)
cifs_sb->mnt_cifs_flags & cifs_sb->mnt_cifs_flags &
CIFS_MOUNT_MAP_SPECIAL_CHR); CIFS_MOUNT_MAP_SPECIAL_CHR);
cFYI(1, (" SetEOF by path (setattrs) rc = %d", rc)); cFYI(1, (" SetEOF by path (setattrs) rc = %d", rc));
/* if(rc == -EINVAL)
old_style_set_eof_via_write(xid, pTcon,
full_path,
attrs->ia_size,
cifs_sb->local_nls,
cifs_sb->mnt_cifs_flags &
CIFS_MOUNT_MAP_SPECIAL_CHR);*/
} }
/* Server is ok setting allocation size implicitly - no need /* Server is ok setting allocation size implicitly - no need
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment