]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
cifs: update the lock ordering comments with new mutex
authorShyam Prasad N <sprasad@microsoft.com>
Tue, 29 Apr 2025 12:02:36 +0000 (12:02 +0000)
committerSteve French <stfrench@microsoft.com>
Mon, 2 Jun 2025 22:13:06 +0000 (17:13 -0500)
The lock ordering rules listed as comments in cifsglob.h were
missing some lock details and also the fid_lock.

Updated those notes in this commit.

Signed-off-by: Shyam Prasad N <sprasad@microsoft.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/smb/client/cifsglob.h

index 2ad9835d91ab2eb03d4907e0d7eb681118ea88ff..ad7dd16db3e91ebe6ee9cab78fbd7ffc86ceb20e 100644 (file)
@@ -1991,8 +1991,7 @@ require use of the stronger protocol */
  * TCP_Server_Info->           TCP_Server_Info                 cifs_get_tcp_session
  * reconnect_mutex
  * TCP_Server_Info->srv_mutex  TCP_Server_Info                 cifs_get_tcp_session
- * cifs_ses->session_mutex             cifs_ses                sesInfoAlloc
- *                             cifs_tcon
+ * cifs_ses->session_mutex     cifs_ses                        sesInfoAlloc
  * cifs_tcon->open_file_lock   cifs_tcon->openFileList         tconInfoAlloc
  *                             cifs_tcon->pending_opens
  * cifs_tcon->stat_lock                cifs_tcon->bytes_read           tconInfoAlloc
@@ -2011,21 +2010,25 @@ require use of the stronger protocol */
  *                             ->oplock_credits
  *                             ->reconnect_instance
  * cifs_ses->ses_lock          (anything that is not protected by another lock and can change)
+ *                                                             sesInfoAlloc
  * cifs_ses->iface_lock                cifs_ses->iface_list            sesInfoAlloc
  *                             ->iface_count
  *                             ->iface_last_update
- * cifs_ses->chan_lock         cifs_ses->chans
+ * cifs_ses->chan_lock         cifs_ses->chans                 sesInfoAlloc
  *                             ->chans_need_reconnect
  *                             ->chans_in_reconnect
  * cifs_tcon->tc_lock          (anything that is not protected by another lock and can change)
+ *                                                             tcon_info_alloc
  * inode->i_rwsem, taken by fs/netfs/locking.c e.g. should be taken before cifsInodeInfo locks
  * cifsInodeInfo->open_file_lock       cifsInodeInfo->openFileList     cifs_alloc_inode
  * cifsInodeInfo->writers_lock cifsInodeInfo->writers          cifsInodeInfo_alloc
  * cifsInodeInfo->lock_sem     cifsInodeInfo->llist            cifs_init_once
  *                             ->can_cache_brlcks
  * cifsInodeInfo->deferred_lock        cifsInodeInfo->deferred_closes  cifsInodeInfo_alloc
- * cached_fids->cfid_list_lock cifs_tcon->cfids->entries        init_cached_dirs
- * cifsFileInfo->fh_mutex              cifsFileInfo                    cifs_new_fileinfo
+ * cached_fids->cfid_list_lock cifs_tcon->cfids->entries       init_cached_dirs
+ * cached_fid->fid_lock                (anything that is not protected by another lock and can change)
+ *                                                             init_cached_dir
+ * cifsFileInfo->fh_mutex      cifsFileInfo                    cifs_new_fileinfo
  * cifsFileInfo->file_info_lock        cifsFileInfo->count             cifs_new_fileinfo
  *                             ->invalidHandle                 initiate_cifs_search
  *                             ->oplock_break_cancelled