mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-03 23:58:05 +00:00
CIFS: Move guery file info code to ops struct
and make cifs_get_file_info(_unix) calls static. Signed-off-by: Pavel Shilovsky <pshilovsky@samba.org> Signed-off-by: Steve French <smfrench@gmail.com>
This commit is contained in:
parent
f0df737ee8
commit
4ad6504453
4 changed files with 20 additions and 5 deletions
|
@ -236,6 +236,9 @@ struct smb_version_operations {
|
||||||
int (*query_path_info)(const unsigned int, struct cifs_tcon *,
|
int (*query_path_info)(const unsigned int, struct cifs_tcon *,
|
||||||
struct cifs_sb_info *, const char *,
|
struct cifs_sb_info *, const char *,
|
||||||
FILE_ALL_INFO *, bool *);
|
FILE_ALL_INFO *, bool *);
|
||||||
|
/* query file data from the server */
|
||||||
|
int (*query_file_info)(const unsigned int, struct cifs_tcon *,
|
||||||
|
struct cifs_fid *, FILE_ALL_INFO *);
|
||||||
/* get server index number */
|
/* get server index number */
|
||||||
int (*get_srv_inum)(const unsigned int, struct cifs_tcon *,
|
int (*get_srv_inum)(const unsigned int, struct cifs_tcon *,
|
||||||
struct cifs_sb_info *, const char *,
|
struct cifs_sb_info *, const char *,
|
||||||
|
|
|
@ -137,11 +137,9 @@ extern void cifs_fattr_to_inode(struct inode *inode, struct cifs_fattr *fattr);
|
||||||
extern struct inode *cifs_iget(struct super_block *sb,
|
extern struct inode *cifs_iget(struct super_block *sb,
|
||||||
struct cifs_fattr *fattr);
|
struct cifs_fattr *fattr);
|
||||||
|
|
||||||
extern int cifs_get_file_info(struct file *filp);
|
|
||||||
extern int cifs_get_inode_info(struct inode **inode, const char *full_path,
|
extern int cifs_get_inode_info(struct inode **inode, const char *full_path,
|
||||||
FILE_ALL_INFO *data, struct super_block *sb,
|
FILE_ALL_INFO *data, struct super_block *sb,
|
||||||
int xid, const __u16 *fid);
|
int xid, const __u16 *fid);
|
||||||
extern int cifs_get_file_info_unix(struct file *filp);
|
|
||||||
extern int cifs_get_inode_info_unix(struct inode **pinode,
|
extern int cifs_get_inode_info_unix(struct inode **pinode,
|
||||||
const unsigned char *search_path,
|
const unsigned char *search_path,
|
||||||
struct super_block *sb, unsigned int xid);
|
struct super_block *sb, unsigned int xid);
|
||||||
|
|
|
@ -282,7 +282,8 @@ cifs_create_dfs_fattr(struct cifs_fattr *fattr, struct super_block *sb)
|
||||||
fattr->cf_flags |= CIFS_FATTR_DFS_REFERRAL;
|
fattr->cf_flags |= CIFS_FATTR_DFS_REFERRAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
int cifs_get_file_info_unix(struct file *filp)
|
static int
|
||||||
|
cifs_get_file_info_unix(struct file *filp)
|
||||||
{
|
{
|
||||||
int rc;
|
int rc;
|
||||||
unsigned int xid;
|
unsigned int xid;
|
||||||
|
@ -550,7 +551,8 @@ cifs_all_info_to_fattr(struct cifs_fattr *fattr, FILE_ALL_INFO *info,
|
||||||
fattr->cf_gid = cifs_sb->mnt_gid;
|
fattr->cf_gid = cifs_sb->mnt_gid;
|
||||||
}
|
}
|
||||||
|
|
||||||
int cifs_get_file_info(struct file *filp)
|
static int
|
||||||
|
cifs_get_file_info(struct file *filp)
|
||||||
{
|
{
|
||||||
int rc;
|
int rc;
|
||||||
unsigned int xid;
|
unsigned int xid;
|
||||||
|
@ -560,9 +562,13 @@ int cifs_get_file_info(struct file *filp)
|
||||||
struct cifs_sb_info *cifs_sb = CIFS_SB(inode->i_sb);
|
struct cifs_sb_info *cifs_sb = CIFS_SB(inode->i_sb);
|
||||||
struct cifsFileInfo *cfile = filp->private_data;
|
struct cifsFileInfo *cfile = filp->private_data;
|
||||||
struct cifs_tcon *tcon = tlink_tcon(cfile->tlink);
|
struct cifs_tcon *tcon = tlink_tcon(cfile->tlink);
|
||||||
|
struct TCP_Server_Info *server = tcon->ses->server;
|
||||||
|
|
||||||
|
if (!server->ops->query_file_info)
|
||||||
|
return -ENOSYS;
|
||||||
|
|
||||||
xid = get_xid();
|
xid = get_xid();
|
||||||
rc = CIFSSMBQFileInfo(xid, tcon, cfile->fid.netfid, &find_data);
|
rc = server->ops->query_file_info(xid, tcon, &cfile->fid, &find_data);
|
||||||
switch (rc) {
|
switch (rc) {
|
||||||
case 0:
|
case 0:
|
||||||
cifs_all_info_to_fattr(&fattr, &find_data, cifs_sb, false);
|
cifs_all_info_to_fattr(&fattr, &find_data, cifs_sb, false);
|
||||||
|
|
|
@ -489,6 +489,13 @@ cifs_get_srv_inum(const unsigned int xid, struct cifs_tcon *tcon,
|
||||||
CIFS_MOUNT_MAP_SPECIAL_CHR);
|
CIFS_MOUNT_MAP_SPECIAL_CHR);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
cifs_query_file_info(const unsigned int xid, struct cifs_tcon *tcon,
|
||||||
|
struct cifs_fid *fid, FILE_ALL_INFO *data)
|
||||||
|
{
|
||||||
|
return CIFSSMBQFileInfo(xid, tcon, fid->netfid, data);
|
||||||
|
}
|
||||||
|
|
||||||
static char *
|
static char *
|
||||||
cifs_build_path_to_root(struct smb_vol *vol, struct cifs_sb_info *cifs_sb,
|
cifs_build_path_to_root(struct smb_vol *vol, struct cifs_sb_info *cifs_sb,
|
||||||
struct cifs_tcon *tcon)
|
struct cifs_tcon *tcon)
|
||||||
|
@ -672,6 +679,7 @@ struct smb_version_operations smb1_operations = {
|
||||||
.qfs_tcon = cifs_qfs_tcon,
|
.qfs_tcon = cifs_qfs_tcon,
|
||||||
.is_path_accessible = cifs_is_path_accessible,
|
.is_path_accessible = cifs_is_path_accessible,
|
||||||
.query_path_info = cifs_query_path_info,
|
.query_path_info = cifs_query_path_info,
|
||||||
|
.query_file_info = cifs_query_file_info,
|
||||||
.get_srv_inum = cifs_get_srv_inum,
|
.get_srv_inum = cifs_get_srv_inum,
|
||||||
.build_path_to_root = cifs_build_path_to_root,
|
.build_path_to_root = cifs_build_path_to_root,
|
||||||
.echo = CIFSSMBEcho,
|
.echo = CIFSSMBEcho,
|
||||||
|
|
Loading…
Reference in a new issue