aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorSteve French <sfrench@us.ibm.com>2005-09-18 20:49:21 -0700
committerSteve French <sfrench@us.ibm.com>2005-09-18 20:49:21 -0700
commit3e87d80391c84eefceb4bda94a6363661dba4f71 (patch)
treeef39515dde8b86007de4ad769716d375b8973dca /fs
parentf9f5c81769f88bccd177423a30a7d30461754c39 (diff)
downloadlinux-3e87d80391c84eefceb4bda94a6363661dba4f71.tar.gz
[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)
Diffstat (limited to 'fs')
-rw-r--r--fs/cifs/cifssmb.c10
-rw-r--r--fs/cifs/inode.c15
2 files changed, 21 insertions, 4 deletions
diff --git a/fs/cifs/cifssmb.c b/fs/cifs/cifssmb.c
index b8830118f09a0f..575b2281518d59 100644
--- a/fs/cifs/cifssmb.c
+++ b/fs/cifs/cifssmb.c
@@ -766,7 +766,7 @@ OldOpenRetry:
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);*/
@@ -777,6 +777,8 @@ OldOpenRetry:
/* 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;
@@ -3689,7 +3691,7 @@ SetEOFRetry:
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);
@@ -3697,7 +3699,7 @@ SetEOFRetry:
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;
@@ -4079,7 +4081,7 @@ setPermsRetry:
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);
diff --git a/fs/cifs/inode.c b/fs/cifs/inode.c
index 0fbe02ebc03354..6e82e1ae03b492 100644
--- a/fs/cifs/inode.c
+++ b/fs/cifs/inode.c
@@ -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;
}
}
@@ -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