| /linux-6.15/fs/netfs/ |
| H A D | locking.c | 57 __acquires(inode->i_rwsem) in netfs_start_io_read() 66 up_read(&inode->i_rwsem); in netfs_start_io_read() 72 up_write(&inode->i_rwsem); in netfs_start_io_read() 88 __releases(inode->i_rwsem) in netfs_end_io_read() 90 up_read(&inode->i_rwsem); in netfs_end_io_read() 102 __acquires(inode->i_rwsem) in netfs_start_io_write() 125 __releases(inode->i_rwsem) in netfs_end_io_write() 127 up_read(&inode->i_rwsem); in netfs_end_io_write() 168 __acquires(inode->i_rwsem) in netfs_start_io_direct() 178 up_read(&inode->i_rwsem); in netfs_start_io_direct() [all …]
|
| /linux-6.15/fs/ceph/ |
| H A D | io.c | 56 down_read(&inode->i_rwsem); in ceph_start_io_read() 59 up_read(&inode->i_rwsem); in ceph_start_io_read() 61 down_write(&inode->i_rwsem); in ceph_start_io_read() 63 downgrade_write(&inode->i_rwsem); in ceph_start_io_read() 76 up_read(&inode->i_rwsem); in ceph_end_io_read() 89 down_write(&inode->i_rwsem); in ceph_start_io_write() 103 up_write(&inode->i_rwsem); in ceph_end_io_write() 142 down_read(&inode->i_rwsem); in ceph_start_io_direct() 145 up_read(&inode->i_rwsem); in ceph_start_io_direct() 147 down_write(&inode->i_rwsem); in ceph_start_io_direct() [all …]
|
| /linux-6.15/fs/nfs/ |
| H A D | io.c | 49 err = down_read_killable(&inode->i_rwsem); in nfs_start_io_read() 54 up_read(&inode->i_rwsem); in nfs_start_io_read() 57 err = down_write_killable(&inode->i_rwsem); in nfs_start_io_read() 61 downgrade_write(&inode->i_rwsem); in nfs_start_io_read() 76 up_read(&inode->i_rwsem); in nfs_end_io_read() 91 err = down_write_killable(&inode->i_rwsem); in nfs_start_io_write() 107 up_write(&inode->i_rwsem); in nfs_end_io_write() 142 err = down_read_killable(&inode->i_rwsem); in nfs_start_io_direct() 147 up_read(&inode->i_rwsem); in nfs_start_io_direct() 154 downgrade_write(&inode->i_rwsem); in nfs_start_io_direct() [all …]
|
| /linux-6.15/Documentation/filesystems/ |
| H A D | directory-locking.rst | 7 kinds of locks - per-inode (->i_rwsem) and per-filesystem 10 When taking the i_rwsem on multiple non-directory objects, we 140 * rank ->i_rwsem of non-directories on given filesystem in inode pointer 142 * put ->i_rwsem of all directories on a filesystem at the same rank, 143 lower than ->i_rwsem of any non-directory on the same filesystem. 144 * put ->s_vfs_rename_mutex at rank lower than that of any ->i_rwsem 152 2. ->i_rwsem of directories on that NFS filesystem, same rank for all 153 3. ->i_rwsem of non-directories on that filesystem, in order of 156 5. ->i_rwsem of directories on the local filesystem, same rank for all 157 6. ->i_rwsem of non-directories on local filesystem, in order of [all …]
|
| H A D | locking.rst | 99 ops i_rwsem(inode) 128 Additionally, ->rmdir(), ->unlink() and ->rename() have ->i_rwsem 131 ->unlink() and ->rename() have ->i_rwsem exclusive on all non-directories 133 ->rename() has ->i_rwsem exclusive on any subdirectory that changes parent. 156 ops i_rwsem(inode) 281 ops folio locked i_rwsem invalidate_lock 570 ->iterate_shared() is called with i_rwsem held for reading, and with the 605 blocking changes through write(2) and similar operations inode->i_rwsem can be
|
| H A D | path-lookup.rst | 246 inode->i_rwsem 256 This has a complementary role to that of ``d_lock``: ``i_rwsem`` on a 259 dcache hold ``i_rwsem`` on the relevant directory inode and briefly take 262 memory pressure. This uses ``d_lock``, but ``i_rwsem`` plays no role. 276 to take, or not take, ``i_rwsem`` is one of the 280 name that is not yet in the dcache - the shared lock on ``i_rwsem`` will 287 ``i_rwsem``, a thread must call ``d_alloc_parallel()``. This allocates a 450 takes ``i_rwsem``, rechecks the cache, and then asks the filesystem 484 ``i_rwsem`` to exclude other changes while they validate and then 503 not always, take ``i_rwsem``, depending on what it finds. [all …]
|
| H A D | gfs2-glocks.rst | 112 1. i_rwsem (if required)
|
| /linux-6.15/fs/orangefs/ |
| H A D | file.c | 329 down_read(&file_inode(iocb->ki_filp)->i_rwsem); in orangefs_file_read_iter() 336 up_read(&file_inode(iocb->ki_filp)->i_rwsem); in orangefs_file_read_iter() 349 down_read(&inode->i_rwsem); in orangefs_file_splice_read() 356 up_read(&inode->i_rwsem); in orangefs_file_splice_read()
|
| /linux-6.15/Documentation/filesystems/iomap/ |
| H A D | operations.rst | 106 ``i_rwsem`` or ``invalidate_lock`` and updates mapping information. 190 Callers commonly take ``i_rwsem`` in either shared or exclusive mode 233 Callers typically hold ``i_rwsem`` and ``invalidate_lock`` in exclusive 271 It does not lock ``i_rwsem`` or ``invalidate_lock``. 493 Callers commonly hold ``i_rwsem`` in shared mode before calling this 547 Callers commonly hold ``i_rwsem`` in shared or exclusive mode before 611 Callers commonly hold ``i_rwsem`` in shared mode before calling this 688 Callers commonly hold ``i_rwsem`` in shared mode before calling this 703 Callers commonly hold ``i_rwsem`` in shared mode before calling this 716 Callers must hold ``i_rwsem`` in exclusive mode; this is already [all …]
|
| H A D | design.rst | 111 * ``i_rwsem``: The VFS ``struct inode`` rwsemaphore. 408 For example, a filesystem might take ``i_rwsem`` before calling
|
| /linux-6.15/fs/ |
| H A D | readdir.c | 53 up_read(&inode->i_rwsem); in wrap_directory_iterator() 54 down_write(&inode->i_rwsem); in wrap_directory_iterator() 67 downgrade_write(&inode->i_rwsem); in wrap_directory_iterator() 101 res = down_read_killable(&inode->i_rwsem); in iterate_dir()
|
| H A D | inode.c | 272 init_rwsem(&inode->i_rwsem); in inode_init_always_gfp() 273 lockdep_set_class(&inode->i_rwsem, &sb->s_type->i_mutex_key); in inode_init_always_gfp() 1159 if (lockdep_match_class(&inode->i_rwsem, &type->i_mutex_key)) { in lockdep_annotate_inode_mutex_key() 1164 init_rwsem(&inode->i_rwsem); in lockdep_annotate_inode_mutex_key() 1165 lockdep_set_class(&inode->i_rwsem, in lockdep_annotate_inode_mutex_key()
|
| H A D | dax.c | 1764 lockdep_assert_held_write(&iomi.inode->i_rwsem); in dax_iomap_rw() 1767 lockdep_assert_held(&iomi.inode->i_rwsem); in dax_iomap_rw()
|
| /linux-6.15/fs/xfs/scrub/ |
| H A D | xfile.c | 71 lockdep_set_class(&inode->i_rwsem, &xfile_i_mutex_key); in xfile_create() 97 lockdep_set_class(&inode->i_rwsem, &inode->i_sb->s_type->i_mutex_key); in xfile_destroy()
|
| /linux-6.15/fs/xfs/ |
| H A D | xfs_inode.c | 149 down_write_nested(&VFS_I(ip)->i_rwsem, in xfs_ilock() 152 down_read_nested(&VFS_I(ip)->i_rwsem, in xfs_ilock() 192 if (!down_write_trylock(&VFS_I(ip)->i_rwsem)) in xfs_ilock_nowait() 195 if (!down_read_trylock(&VFS_I(ip)->i_rwsem)) in xfs_ilock_nowait() 223 up_write(&VFS_I(ip)->i_rwsem); in xfs_ilock_nowait() 225 up_read(&VFS_I(ip)->i_rwsem); in xfs_ilock_nowait() 250 up_write(&VFS_I(ip)->i_rwsem); in xfs_iunlock() 252 up_read(&VFS_I(ip)->i_rwsem); in xfs_iunlock() 285 downgrade_write(&VFS_I(ip)->i_rwsem); in xfs_ilock_demote() 310 rwsem_assert_held(&VFS_I(ip)->i_rwsem); in xfs_assert_ilocked() [all …]
|
| H A D | xfs_buf_mem.c | 73 lockdep_set_class(&inode->i_rwsem, &xmbuf_i_mutex_key); in xmbuf_alloc()
|
| H A D | xfs_iops.c | 1382 lockdep_set_class(&inode->i_rwsem, in xfs_setup_inode()
|
| /linux-6.15/include/linux/ |
| H A D | fs.h | 727 struct rw_semaphore i_rwsem; member 867 down_write(&inode->i_rwsem); in inode_lock() 872 up_write(&inode->i_rwsem); in inode_unlock() 877 down_read(&inode->i_rwsem); in inode_lock_shared() 882 up_read(&inode->i_rwsem); in inode_unlock_shared() 887 return down_write_trylock(&inode->i_rwsem); in inode_trylock() 892 return down_read_trylock(&inode->i_rwsem); in inode_trylock_shared() 897 return rwsem_is_locked(&inode->i_rwsem); in inode_is_locked() 902 down_write_nested(&inode->i_rwsem, subclass); in inode_lock_nested() 907 down_read_nested(&inode->i_rwsem, subclass); in inode_lock_shared_nested()
|
| /linux-6.15/fs/configfs/ |
| H A D | inode.c | 134 lockdep_set_class(&inode->i_rwsem, in configfs_set_inode_lock_class()
|
| /linux-6.15/fs/ext4/ |
| H A D | file.c | 313 lockdep_assert_held_write(&inode->i_rwsem); in ext4_handle_inode_extension() 339 lockdep_assert_held_write(&inode->i_rwsem); in ext4_inode_extension_cleanup()
|
| /linux-6.15/lib/ |
| H A D | test_lockup.c | 548 lock_rwsem_ptr = (unsigned long)&test_inode->i_rwsem; in test_lockup_init()
|
| /linux-6.15/fs/btrfs/ |
| H A D | btrfs_inode.h | 517 lockdep_assert_held(&inode->vfs_inode.i_rwsem); in btrfs_assert_inode_locked()
|
| /linux-6.15/fs/overlayfs/ |
| H A D | inode.c | 835 lockdep_set_class(&inode->i_rwsem, &ovl_i_mutex_dir_key[depth]); in ovl_lockdep_annotate_inode_mutex_key() 837 lockdep_set_class(&inode->i_rwsem, &ovl_i_mutex_key[depth]); in ovl_lockdep_annotate_inode_mutex_key()
|
| /linux-6.15/fs/afs/ |
| H A D | addr_prefs.c | 392 lockdep_is_held(&file_inode(file)->i_rwsem)); in afs_proc_addr_prefs_write()
|
| /linux-6.15/Documentation/mm/ |
| H A D | process_addrs.rst | 380 inode->i_rwsem (while writing or truncating, not reading or faulting) 411 ->i_rwsem 424 ->i_rwsem (generic_perform_write)
|