Преглед на файлове

[CIFS] named pipe support (part 2)

Also fixes typo which could cause build break

Signed-off-by: Steve French <sfrench@us.ibm.com>
Steve French преди 17 години
родител
ревизия
92ad9b93cd
променени са 4 файла, в които са добавени 17 реда и са изтрити 5 реда
  1. 6 1
      fs/cifs/CHANGES
  2. 1 1
      fs/cifs/cifsglob.h
  3. 8 0
      fs/cifs/cifspdu.h
  4. 2 3
      fs/cifs/dir.c

+ 6 - 1
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
 ------------

+ 1 - 1
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 */

+ 8 - 0
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;

+ 2 - 3
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 */