]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/commit
CIFS: refactor cifs_get_inode_info()
authorAurelien Aptel <aaptel@suse.com>
Mon, 18 Nov 2019 20:04:08 +0000 (21:04 +0100)
committerSteve French <stfrench@microsoft.com>
Mon, 25 Nov 2019 07:16:30 +0000 (01:16 -0600)
commitb8f7442bc46e48fb6fe5d7bc3e1ac1500ce649a9
tree45686ca3fa39a427198e8f71a14698d79573f55f
parentf6a6bf7c4d53837767125e635e7d7d0dc48ee59e
CIFS: refactor cifs_get_inode_info()

Make logic of cifs_get_inode() much clearer by moving code to sub
functions and adding comments.

Document the steps this function does.

cifs_get_inode_info() gets and updates a file inode metadata from its
file path.

* If caller already has raw info data from server they can pass it.
* If inode already exists (just need to update) caller can pass it.

Step 1: get raw data from server if none was passed
Step 2: parse raw data into intermediate internal cifs_fattr struct
Step 3: set fattr uniqueid which is later used for inode number. This
        can sometime be done from raw data
Step 4: tweak fattr according to mount options (file_mode, acl to mode
        bits, uid, gid, etc)
Step 5: update or create inode from final fattr struct

* add is_smb1_server() helper
* add is_inode_cache_good() helper
* move SMB1-backupcreds-getinfo-retry to separate func
  cifs_backup_query_path_info().
* move set-uniqueid code to separate func cifs_set_fattr_ino()
* don't clobber uniqueid from backup cred retry
* fix some probable corner cases memleaks

Signed-off-by: Aurelien Aptel <aaptel@suse.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/cifs/cifsglob.h
fs/cifs/inode.c