[CIFS] named pipe support (part 2)
Also fixes typo which could cause build break
Signed-off-by: Steve French <sfrench@us.ibm.com>
diff --git a/fs/cifs/CHANGES b/fs/cifs/CHANGES
index ea359a0..c8ad87d 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 f55be8e..3fb046b 100644
--- a/fs/cifs/cifsglob.h
+++ b/fs/cifs/cifsglob.h
@@ -342,7 +342,7 @@
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 e975ce4..d2f0cf2 100644
--- a/fs/cifs/cifspdu.h
+++ b/fs/cifs/cifspdu.h
@@ -716,6 +716,14 @@
#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 99321ab..793404b 100644
--- a/fs/cifs/dir.c
+++ b/fs/cifs/dir.c
@@ -269,7 +269,7 @@
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 @@
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 */