[PATCH] cifs: Enable ioctl support in POSIX extensions to handle lsattr
remove sparse warnings, unnecessary pad in QueryFileInfo and redundant function define. Signed-off-by: Steve French (sfrench@us.ibm.com) Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
75cf6bdc52
commit
c67593a031
@ -559,6 +559,10 @@ struct file_operations cifs_file_ops = {
|
||||
.flush = cifs_flush,
|
||||
.mmap = cifs_file_mmap,
|
||||
.sendfile = generic_file_sendfile,
|
||||
#ifdef CONFIG_CIFS_POSIX
|
||||
.ioctl = cifs_ioctl,
|
||||
#endif /* CONFIG_CIFS_POSIX */
|
||||
|
||||
#ifdef CONFIG_CIFS_EXPERIMENTAL
|
||||
.readv = generic_file_readv,
|
||||
.writev = generic_file_writev,
|
||||
@ -579,6 +583,10 @@ struct file_operations cifs_file_direct_ops = {
|
||||
.fsync = cifs_fsync,
|
||||
.flush = cifs_flush,
|
||||
.sendfile = generic_file_sendfile, /* BB removeme BB */
|
||||
#ifdef CONFIG_CIFS_POSIX
|
||||
.ioctl = cifs_ioctl,
|
||||
#endif /* CONFIG_CIFS_POSIX */
|
||||
|
||||
#ifdef CONFIG_CIFS_EXPERIMENTAL
|
||||
.dir_notify = cifs_dir_notify,
|
||||
#endif /* CONFIG_CIFS_EXPERIMENTAL */
|
||||
|
@ -1258,10 +1258,8 @@ struct smb_t2_qfi_req {
|
||||
struct smb_hdr hdr;
|
||||
struct trans2_req t2;
|
||||
__u8 Pad;
|
||||
__u16 Pad1;
|
||||
__u16 Fid;
|
||||
__le16 InformationLevel;
|
||||
__u16 Pad2;
|
||||
};
|
||||
|
||||
struct smb_t2_qfi_rsp {
|
||||
|
@ -266,6 +266,4 @@ extern int CIFSSMBSetPosixACL(const int xid, struct cifsTconInfo *tcon,
|
||||
const struct nls_table *nls_codepage);
|
||||
extern int CIFSGetExtAttr(const int xid, struct cifsTconInfo *tcon,
|
||||
const int netfid, __u64 * pExtAttrBits, __u64 *pMask);
|
||||
extern int cifs_ioctl (struct inode * inode, struct file * filep,
|
||||
unsigned int command, unsigned long arg);
|
||||
#endif /* _CIFSPROTO_H */
|
||||
|
@ -2093,9 +2093,9 @@ GetExtAttrRetry:
|
||||
if (rc)
|
||||
return rc;
|
||||
|
||||
params = 2 /* level */ +2 /* fid */ + 2 /* rsrvd */;
|
||||
params = 2 /* level */ +2 /* fid */;
|
||||
pSMB->t2.TotalDataCount = 0;
|
||||
pSMB->t2.MaxParameterCount = cpu_to_le16(2);
|
||||
pSMB->t2.MaxParameterCount = cpu_to_le16(4);
|
||||
/* BB find exact max data count below from sess structure BB */
|
||||
pSMB->t2.MaxDataCount = cpu_to_le16(4000);
|
||||
pSMB->t2.MaxSetupCount = 0;
|
||||
@ -2103,19 +2103,18 @@ GetExtAttrRetry:
|
||||
pSMB->t2.Flags = 0;
|
||||
pSMB->t2.Timeout = 0;
|
||||
pSMB->t2.Reserved2 = 0;
|
||||
pSMB->t2.ParameterOffset = cpu_to_le16(offsetof(
|
||||
struct smb_com_transaction2_qpi_req ,InformationLevel) - 4);
|
||||
pSMB->t2.ParameterOffset = cpu_to_le16(offsetof(struct smb_t2_qfi_req,
|
||||
Fid) - 4);
|
||||
pSMB->t2.DataCount = 0;
|
||||
pSMB->t2.DataOffset = 0;
|
||||
pSMB->t2.SetupCount = 1;
|
||||
pSMB->t2.Reserved3 = 0;
|
||||
pSMB->t2.SubCommand = cpu_to_le16(TRANS2_QUERY_FILE_INFORMATION);
|
||||
byte_count = params + 3 /* pad */ ;
|
||||
byte_count = params + 1 /* pad */ ;
|
||||
pSMB->t2.TotalParameterCount = cpu_to_le16(params);
|
||||
pSMB->t2.ParameterCount = pSMB->t2.TotalParameterCount;
|
||||
pSMB->InformationLevel = cpu_to_le16(SMB_QUERY_ATTR_FLAGS);
|
||||
pSMB->Pad1 = 0;
|
||||
pSMB->Pad2 = 0;
|
||||
pSMB->Pad = 0;
|
||||
pSMB->Fid = netfid;
|
||||
pSMB->hdr.smb_buf_length += byte_count;
|
||||
pSMB->t2.ByteCount = cpu_to_le16(byte_count);
|
||||
|
@ -27,6 +27,7 @@
|
||||
#include "cifsglob.h"
|
||||
#include "cifsproto.h"
|
||||
#include "cifs_debug.h"
|
||||
#include "cifsfs.h"
|
||||
|
||||
int cifs_ioctl (struct inode * inode, struct file * filep,
|
||||
unsigned int command, unsigned long arg)
|
||||
|
Loading…
Reference in New Issue
Block a user