summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteve French <sfrench@us.ibm.com>2007-09-29 05:21:58 +0000
committerSteve French <sfrench@us.ibm.com>2007-09-29 05:21:58 +0000
commit92ad9b93cd268371d1fc0edbd09383cc1c59be34 (patch)
treed9e34ab52bd2a6c17c6b93f827814b1fba14e52d
parent7f8ed420f80c91176dfd27c8089f22cab5c9ba78 (diff)
[CIFS] named pipe support (part 2)
Also fixes typo which could cause build break Signed-off-by: Steve French <sfrench@us.ibm.com>
-rw-r--r--fs/cifs/CHANGES7
-rw-r--r--fs/cifs/cifsglob.h2
-rw-r--r--fs/cifs/cifspdu.h8
-rw-r--r--fs/cifs/dir.c5
4 files changed, 17 insertions, 5 deletions
diff --git a/fs/cifs/CHANGES b/fs/cifs/CHANGES
index ea359a0038d..c8ad87de4a7 100644
--- a/fs/cifs/CHANGES
+++ b/fs/cifs/CHANGES
@@ -1,7 +1,12 @@
Version 1.51
------------
Fix memory leak in statfs when mounted to very old servers (e.g.
-Windows 9x)
+Windows 9x). Add new feature "POSIX open" which allows servers
+which support the current POSIX Extensions to provide better semantics
+(e.g. delete for open files opened with posix open). Take into
+account umask on posix mkdir not just older style mkdir. Add
+ability to mount to IPC$ share (which allows CIFS named pipes to be
+opened, read and written as if they were files).
Version 1.50
------------
diff --git a/fs/cifs/cifsglob.h b/fs/cifs/cifsglob.h
index f55be8efa26..3fb046be9c0 100644
--- a/fs/cifs/cifsglob.h
+++ b/fs/cifs/cifsglob.h
@@ -342,7 +342,7 @@ struct cifsFileInfo {
struct list_head llist; /* list of byte range locks we have. */
unsigned closePend:1; /* file is marked to close */
unsigned invalidHandle:1; /* file closed via session abend */
- unsigned messageMode:1 /* for pipes: is message or byte mode */
+ unsigned messageMode:1; /* for pipes: message vs byte mode */
atomic_t wrtPending; /* handle in use - defer close */
struct semaphore fh_sem; /* prevents reopen race after dead ses*/
char *search_resume_name; /* BB removeme BB */
diff --git a/fs/cifs/cifspdu.h b/fs/cifs/cifspdu.h
index e975ce46115..d2f0cf23bbb 100644
--- a/fs/cifs/cifspdu.h
+++ b/fs/cifs/cifspdu.h
@@ -716,6 +716,14 @@ typedef struct smb_com_findclose_req {
#define REQ_OPENDIRONLY 0x00000008
#define REQ_EXTENDED_INFO 0x00000010
+/* File type */
+#define DISK_TYPE 0x0000
+#define BYTE_PIPE_TYPE 0x0001
+#define MESSAGE_PIPE_TYPE 0x0002
+#define PRINTER_TYPE 0x0003
+#define COMM_DEV_TYPE 0x0004
+#define UNKNOWN_TYPE 0xFFFF
+
typedef struct smb_com_open_req { /* also handles create */
struct smb_hdr hdr; /* wct = 24 */
__u8 AndXCommand;
diff --git a/fs/cifs/dir.c b/fs/cifs/dir.c
index 99321ab439d..793404b1092 100644
--- a/fs/cifs/dir.c
+++ b/fs/cifs/dir.c
@@ -269,7 +269,7 @@ cifs_create(struct inode *inode, struct dentry *direntry, int mode,
CIFSSMBClose(xid, pTcon, fileHandle);
} else if (newinode) {
pCifsFile =
- kzalloc(sizeof (struct cifsFileInfo), GFP_KERNEL);
+ kzalloc(sizeof(struct cifsFileInfo), GFP_KERNEL);
if (pCifsFile == NULL)
goto cifs_create_out;
@@ -450,8 +450,7 @@ cifs_lookup(struct inode *parent_dir_inode, struct dentry *direntry,
xid = GetXid();
- cFYI(1,
- (" parent inode = 0x%p name is: %s and dentry = 0x%p",
+ cFYI(1, (" parent inode = 0x%p name is: %s and dentry = 0x%p",
parent_dir_inode, direntry->d_name.name, direntry));
/* check whether path exists */