|
@@ -109,27 +109,28 @@ prototypes:
|
|
|
|
|
|
locking rules:
|
|
|
All may block.
|
|
|
- BKL s_lock s_umount
|
|
|
-alloc_inode: no no no
|
|
|
-destroy_inode: no
|
|
|
-dirty_inode: no (must not sleep)
|
|
|
-write_inode: no
|
|
|
-drop_inode: no !!!inode_lock!!!
|
|
|
-delete_inode: no
|
|
|
-put_super: yes yes no
|
|
|
-write_super: no yes read
|
|
|
-sync_fs: no no read
|
|
|
-freeze_fs: ?
|
|
|
-unfreeze_fs: ?
|
|
|
-statfs: no no no
|
|
|
-remount_fs: yes yes maybe (see below)
|
|
|
-clear_inode: no
|
|
|
-umount_begin: yes no no
|
|
|
-show_options: no (vfsmount->sem)
|
|
|
-quota_read: no no no (see below)
|
|
|
-quota_write: no no no (see below)
|
|
|
-
|
|
|
-->remount_fs() will have the s_umount lock if it's already mounted.
|
|
|
+ None have BKL
|
|
|
+ s_umount
|
|
|
+alloc_inode:
|
|
|
+destroy_inode:
|
|
|
+dirty_inode: (must not sleep)
|
|
|
+write_inode:
|
|
|
+drop_inode: !!!inode_lock!!!
|
|
|
+delete_inode:
|
|
|
+put_super: write
|
|
|
+write_super: read
|
|
|
+sync_fs: read
|
|
|
+freeze_fs: read
|
|
|
+unfreeze_fs: read
|
|
|
+statfs: no
|
|
|
+remount_fs: maybe (see below)
|
|
|
+clear_inode:
|
|
|
+umount_begin: no
|
|
|
+show_options: no (namespace_sem)
|
|
|
+quota_read: no (see below)
|
|
|
+quota_write: no (see below)
|
|
|
+
|
|
|
+->remount_fs() will have the s_umount exclusive lock if it's already mounted.
|
|
|
When called from get_sb_single, it does NOT have the s_umount lock.
|
|
|
->quota_read() and ->quota_write() functions are both guaranteed to
|
|
|
be the only ones operating on the quota file by the quota code (via
|