Skip to content

Commit

Permalink
[CIFS] Add support for legacy servers part seven. Fix open for write,
Browse files Browse the repository at this point in the history
begin implementation of Win9x style set file size via open then
write of zero bytes.

Signed-off-by: Steve French (sfrench@us.ibm.com)
  • Loading branch information
Steve French committed Sep 19, 2005
1 parent f9f5c81 commit 3e87d80
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 4 deletions.
10 changes: 6 additions & 4 deletions fs/cifs/cifssmb.c
Original file line number Diff line number Diff line change
Expand Up @@ -766,7 +766,7 @@ SMBLegacyOpen(const int xid, struct cifsTconInfo *tcon,
if(create_options & CREATE_OPTION_SPECIAL)
pSMB->FileAttributes = cpu_to_le16(ATTR_SYSTEM);
else
pSMB->FileAttributes = cpu_to_le16(ATTR_NORMAL);
pSMB->FileAttributes = cpu_to_le16(0/*ATTR_NORMAL*/); /* BB FIXME */

/* if ((omode & S_IWUGO) == 0)
pSMB->FileAttributes |= cpu_to_le32(ATTR_READONLY);*/
Expand All @@ -777,6 +777,8 @@ SMBLegacyOpen(const int xid, struct cifsTconInfo *tcon,
/* BB FIXME BB */
/* pSMB->CreateOptions = cpu_to_le32(create_options & CREATE_OPTIONS_MASK); */
/* BB FIXME END BB */

pSMB->Sattr = cpu_to_le16(ATTR_HIDDEN | ATTR_SYSTEM | ATTR_DIRECTORY);
pSMB->OpenFunction = convert_disposition(openDisposition);
count += name_len;
pSMB->hdr.smb_buf_length += count;
Expand Down Expand Up @@ -3689,15 +3691,15 @@ CIFSSMBSetEOF(const int xid, struct cifsTconInfo *tcon, const char *fileName,
PATH_MAX, nls_codepage, remap);
name_len++; /* trailing null */
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++; /* trailing null */
strncpy(pSMB->FileName, fileName, name_len);
}
params = 6 + name_len;
data_count = sizeof (struct file_end_of_file_info);
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->Reserved = 0;
pSMB->Flags = 0;
Expand Down Expand Up @@ -4079,7 +4081,7 @@ CIFSSMBUnixSetPerms(const int xid, struct cifsTconInfo *tcon,
PATH_MAX, nls_codepage, remap);
name_len++; /* trailing null */
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++; /* trailing null */
strncpy(pSMB->FileName, fileName, name_len);
Expand Down
15 changes: 15 additions & 0 deletions fs/cifs/inode.c
Original file line number Diff line number Diff line change
Expand Up @@ -1030,6 +1030,14 @@ int cifs_setattr(struct dentry *direntry, struct iattr *attrs)
/* now that we found one valid file
handle no sense continuing to loop
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;
}
}
Expand All @@ -1048,6 +1056,13 @@ int cifs_setattr(struct dentry *direntry, struct iattr *attrs)
cifs_sb->mnt_cifs_flags &
CIFS_MOUNT_MAP_SPECIAL_CHR);
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
Expand Down

0 comments on commit 3e87d80

Please sign in to comment.