Commit d313852d authored by Steve French's avatar Steve French

smb311: add support for using info level for posix extensions query

Adds calls to the newer info level for query info using SMB3.1.1 posix extensions.
The remaining two places that call the older query info (non-SMB3.1.1 POSIX)
require passing in the fid and can be updated in a later patch.
Signed-off-by: default avatarSteve French <stfrench@microsoft.com>
Reviewed-by: default avatarAurelien Aptel <aaptel@suse.com>
parent 790434ff
...@@ -411,6 +411,7 @@ cifs_do_create(struct inode *inode, struct dentry *direntry, unsigned int xid, ...@@ -411,6 +411,7 @@ cifs_do_create(struct inode *inode, struct dentry *direntry, unsigned int xid,
rc = cifs_get_inode_info_unix(&newinode, full_path, inode->i_sb, rc = cifs_get_inode_info_unix(&newinode, full_path, inode->i_sb,
xid); xid);
else { else {
/* TODO: Add support for calling POSIX query info here, but passing in fid */
rc = cifs_get_inode_info(&newinode, full_path, buf, inode->i_sb, rc = cifs_get_inode_info(&newinode, full_path, buf, inode->i_sb,
xid, fid); xid, fid);
if (newinode) { if (newinode) {
......
...@@ -243,6 +243,7 @@ cifs_nt_open(char *full_path, struct inode *inode, struct cifs_sb_info *cifs_sb, ...@@ -243,6 +243,7 @@ cifs_nt_open(char *full_path, struct inode *inode, struct cifs_sb_info *cifs_sb,
if (rc) if (rc)
goto out; goto out;
/* TODO: Add support for calling posix query info but with passing in fid */
if (tcon->unix_ext) if (tcon->unix_ext)
rc = cifs_get_inode_info_unix(&inode, full_path, inode->i_sb, rc = cifs_get_inode_info_unix(&inode, full_path, inode->i_sb,
xid); xid);
...@@ -800,7 +801,9 @@ cifs_reopen_file(struct cifsFileInfo *cfile, bool can_flush) ...@@ -800,7 +801,9 @@ cifs_reopen_file(struct cifsFileInfo *cfile, bool can_flush)
if (!is_interrupt_error(rc)) if (!is_interrupt_error(rc))
mapping_set_error(inode->i_mapping, rc); mapping_set_error(inode->i_mapping, rc);
if (tcon->unix_ext) if (tcon->posix_extensions)
rc = smb311_posix_get_inode_info(&inode, full_path, inode->i_sb, xid);
else if (tcon->unix_ext)
rc = cifs_get_inode_info_unix(&inode, full_path, rc = cifs_get_inode_info_unix(&inode, full_path,
inode->i_sb, xid); inode->i_sb, xid);
else else
......
...@@ -1333,7 +1333,10 @@ struct inode *cifs_root_iget(struct super_block *sb) ...@@ -1333,7 +1333,10 @@ struct inode *cifs_root_iget(struct super_block *sb)
} }
convert_delimiter(path, CIFS_DIR_SEP(cifs_sb)); convert_delimiter(path, CIFS_DIR_SEP(cifs_sb));
rc = cifs_get_inode_info(&inode, path, NULL, sb, xid, NULL); if (tcon->posix_extensions)
rc = smb311_posix_get_inode_info(&inode, path, sb, xid);
else
rc = cifs_get_inode_info(&inode, path, NULL, sb, xid, NULL);
iget_no_retry: iget_no_retry:
if (!inode) { if (!inode) {
...@@ -1689,7 +1692,9 @@ cifs_mkdir_qinfo(struct inode *parent, struct dentry *dentry, umode_t mode, ...@@ -1689,7 +1692,9 @@ cifs_mkdir_qinfo(struct inode *parent, struct dentry *dentry, umode_t mode,
int rc = 0; int rc = 0;
struct inode *inode = NULL; struct inode *inode = NULL;
if (tcon->unix_ext) if (tcon->posix_extensions)
rc = smb311_posix_get_inode_info(&inode, full_path, parent->i_sb, xid);
else if (tcon->unix_ext)
rc = cifs_get_inode_info_unix(&inode, full_path, parent->i_sb, rc = cifs_get_inode_info_unix(&inode, full_path, parent->i_sb,
xid); xid);
else else
......
...@@ -701,7 +701,9 @@ cifs_symlink(struct inode *inode, struct dentry *direntry, const char *symname) ...@@ -701,7 +701,9 @@ cifs_symlink(struct inode *inode, struct dentry *direntry, const char *symname)
cifs_sb_target->local_nls); */ cifs_sb_target->local_nls); */
if (rc == 0) { if (rc == 0) {
if (pTcon->unix_ext) if (pTcon->posix_extensions)
rc = smb311_posix_get_inode_info(&newinode, full_path, inode->i_sb, xid);
else if (pTcon->unix_ext)
rc = cifs_get_inode_info_unix(&newinode, full_path, rc = cifs_get_inode_info_unix(&newinode, full_path,
inode->i_sb, xid); inode->i_sb, xid);
else else
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment