Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 563
b: refs/heads/master
c: c81156d
h: refs/heads/master
i:
  561: 7f0a02f
  559: 6a0f149
v: v3
  • Loading branch information
Steve French authored and Linus Torvalds committed Apr 29, 2005
1 parent c6a9930 commit a60aa7e
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 22 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: f28ac91b0541a49d5bc7bfb9f0efd5289a7dd181
refs/heads/master: c81156dd217818c143a09b6a744e797a04571e99
21 changes: 11 additions & 10 deletions trunk/fs/cifs/cifsfs.c
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,8 @@ cifs_put_super(struct super_block *sb)
static int
cifs_statfs(struct super_block *sb, struct kstatfs *buf)
{
int xid, rc = -EOPNOTSUPP;
int xid;
int rc = -EOPNOTSUPP;
struct cifs_sb_info *cifs_sb;
struct cifsTconInfo *pTcon;

Expand All @@ -181,17 +182,18 @@ cifs_statfs(struct super_block *sb, struct kstatfs *buf)
buf->f_type = CIFS_MAGIC_NUMBER;

/* instead could get the real value via SMB_QUERY_FS_ATTRIBUTE_INFO */
buf->f_namelen = PATH_MAX; /* PATH_MAX may be too long - it would presumably
be length of total path, note that some servers may be
able to support more than this, but best to be safe
since Win2k and others can not handle very long filenames */
buf->f_namelen = PATH_MAX; /* PATH_MAX may be too long - it would
presumably be total path, but note
that some servers (includinng Samba 3)
have a shorter maximum path */
buf->f_files = 0; /* undefined */
buf->f_ffree = 0; /* unlimited */

#ifdef CONFIG_CIFS_EXPERIMENTAL
/* BB we could add a second check for a QFS Unix capability bit */
/* BB FIXME check CIFS_POSIX_EXTENSIONS Unix cap first FIXME BB */
if (pTcon->ses->capabilities & CAP_UNIX)
if ((pTcon->ses->capabilities & CAP_UNIX) && (CIFS_POSIX_EXTENSIONS &
le64_to_cpu(pTcon->fsUnixInfo.Capability)))
rc = CIFSSMBQFSPosixInfo(xid, pTcon, buf);

/* Only need to call the old QFSInfo if failed
Expand All @@ -204,9 +206,10 @@ cifs_statfs(struct super_block *sb, struct kstatfs *buf)
int f_type;
__fsid_t f_fsid;
int f_namelen; */
/* BB get from info put in tcon struct at mount time with call to QFSAttrInfo */
/* BB get from info in tcon struct at mount time call to QFSAttrInfo */
FreeXid(xid);
return 0; /* always return success? what if volume is no longer available? */
return 0; /* always return success? what if volume is no
longer available? */
}

static int cifs_permission(struct inode * inode, int mask, struct nameidata *nd)
Expand Down Expand Up @@ -600,9 +603,7 @@ struct file_operations cifs_dir_ops = {
#ifdef CONFIG_CIFS_EXPERIMENTAL
.dir_notify = cifs_dir_notify,
#endif /* CONFIG_CIFS_EXPERIMENTAL */
#ifdef CONFIG_CIFS_POSIX
.ioctl = cifs_ioctl,
#endif /* CONFIG_CIFS_POSIX */
};

static void
Expand Down
4 changes: 3 additions & 1 deletion trunk/fs/cifs/cifsglob.h
Original file line number Diff line number Diff line change
Expand Up @@ -318,7 +318,9 @@ struct mid_q_entry {
struct task_struct *tsk; /* task waiting for response */
struct smb_hdr *resp_buf; /* response buffer */
int midState; /* wish this were enum but can not pass to wait_event */
__u8 command; /* smb command code */
__u8 command; /* smb command code */
unsigned multiPart:1; /* multiple responses to one SMB request */
unsigned largeBuf:1; /* if valid response, is pointer to large buf */
};

struct oplock_q_entry {
Expand Down
21 changes: 11 additions & 10 deletions trunk/fs/cifs/ioctl.c
Original file line number Diff line number Diff line change
Expand Up @@ -35,35 +35,37 @@ int cifs_ioctl (struct inode * inode, struct file * filep,
unsigned int command, unsigned long arg)
{
int rc = -ENOTTY; /* strange error - but the precedent */
int xid;
struct cifs_sb_info *cifs_sb;
#ifdef CONFIG_CIFS_POSIX
__u64 ExtAttrBits = 0;
__u64 ExtAttrMask = 0;
#endif /* CONFIG_CIFS_POSIX */
__u64 caps;
int xid;
struct cifs_sb_info *cifs_sb;
struct cifsTconInfo *tcon;
struct cifsFileInfo *pSMBFile =
(struct cifsFileInfo *)filep->private_data;
#endif /* CONFIG_CIFS_POSIX */

xid = GetXid();

cFYI(1,("ioctl file %p cmd %u arg %lu",filep,command,arg));

cifs_sb = CIFS_SB(inode->i_sb);
tcon = cifs_sb->tcon;

#ifdef CONFIG_CIFS_POSIX
tcon = cifs_sb->tcon;
if(tcon)
caps = le64_to_cpu(tcon->fsUnixInfo.Capability);
else {
rc = -EIO;
goto cifs_ioctl_out;
FreeXid(xid);
return -EIO;
}
#endif /* CONFIG_CIFS_POSIX */

switch(command) {
case CIFS_IOC_CHECKUMOUNT:
cFYI(1,("User unmount attempted"));
/* BB FIXME - add missing code here FIXME */
if(cifs_sb->mnt_uid == current->uid)
rc = 0;
else {
Expand All @@ -75,7 +77,7 @@ int cifs_ioctl (struct inode * inode, struct file * filep,
case EXT2_IOC_GETFLAGS:
if(CIFS_UNIX_EXTATTR_CAP & caps) {
if (pSMBFile == NULL)
goto cifs_ioctl_out;
break;
rc = CIFSGetExtAttr(xid, tcon, pSMBFile->netfid,
&ExtAttrBits, &ExtAttrMask);
if(rc == 0)
Expand All @@ -89,10 +91,10 @@ int cifs_ioctl (struct inode * inode, struct file * filep,
if(CIFS_UNIX_EXTATTR_CAP & caps) {
if(get_user(ExtAttrBits,(int __user *)arg)) {
rc = -EFAULT;
goto cifs_ioctl_out;
break;
}
if (pSMBFile == NULL)
goto cifs_ioctl_out;
break;
/* rc= CIFSGetExtAttr(xid,tcon,pSMBFile->netfid,
extAttrBits, &ExtAttrMask);*/

Expand All @@ -105,7 +107,6 @@ int cifs_ioctl (struct inode * inode, struct file * filep,
break;
}

cifs_ioctl_out:
FreeXid(xid);
return rc;
}

0 comments on commit a60aa7e

Please sign in to comment.