From 92ad9b93cd268371d1fc0edbd09383cc1c59be34 Mon Sep 17 00:00:00 2001 From: Steve French Date: Sat, 29 Sep 2007 05:21:58 +0000 Subject: [CIFS] named pipe support (part 2) Also fixes typo which could cause build break Signed-off-by: Steve French --- fs/cifs/CHANGES | 7 ++++++- fs/cifs/cifsglob.h | 2 +- fs/cifs/cifspdu.h | 8 ++++++++ fs/cifs/dir.c | 5 ++--- 4 files changed, 17 insertions(+), 5 deletions(-) (limited to 'fs') diff --git a/fs/cifs/CHANGES b/fs/cifs/CHANGES index ea359a0038d9..c8ad87de4a78 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 f55be8efa26d..3fb046be9c0b 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 e975ce46115d..d2f0cf23bbba 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 99321ab439d2..793404b10925 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 */ -- cgit v1.2.3