Russ Knize
52ab956000
f2fs: don't GC or take an fs_lock from f2fs_initxattrs()
...
f2fs_initxattrs() is called internally from within F2FS and should
not call functions that are used by VFS handlers. This avoids
certain deadlocks:
- vfs_create()
- f2fs_create() <-- takes an fs_lock
- f2fs_add_link()
- __f2fs_add_link()
- init_inode_metadata()
- f2fs_init_security()
- security_inode_init_security()
- f2fs_initxattrs()
- f2fs_setxattr() <-- also takes an fs_lock
If the caller happens to grab the same fs_lock from the pool in both
places, they will deadlock. There are also deadlocks involving
multiple threads and mutexes:
- f2fs_write_begin()
- f2fs_balance_fs() <-- takes gc_mutex
- f2fs_gc()
- write_checkpoint()
- block_operations()
- mutex_lock_all() <-- blocks trying to grab all fs_locks
- f2fs_mkdir() <-- takes an fs_lock
- __f2fs_add_link()
- f2fs_init_security()
- security_inode_init_security()
- f2fs_initxattrs()
- f2fs_setxattr()
- f2fs_balance_fs() <-- blocks trying to take gc_mutex
Signed-off-by: Russ Knize <Russ.Knize@motorola.com>
Signed-off-by: Jaegeuk Kim <jaegeuk.kim@samsung.com>
2013-09-25 17:51:24 +09:00
..
2013-09-17 22:31:01 -04:00
2013-09-12 15:38:02 -07:00
2013-09-12 15:38:02 -07:00
2013-09-07 19:54:55 -04:00
2013-09-16 19:16:38 -04:00
2013-06-29 12:56:55 +04:00
2013-09-12 15:38:02 -07:00
2013-09-22 14:58:49 -07:00
2013-09-20 15:15:43 -07:00
2013-09-06 12:55:29 -07:00
2013-09-18 19:22:22 -05:00
2013-07-05 18:59:33 +04:00
2013-07-14 11:42:26 -07:00
2013-06-29 12:56:46 +04:00
2013-07-31 12:16:31 -04:00
2013-03-07 01:08:55 -08:00
2013-08-12 15:22:43 -05:00
2013-09-06 16:58:18 -07:00
2013-07-14 17:48:35 +04:00
2013-08-24 12:10:22 -04:00
2013-09-12 15:38:02 -07:00
2013-09-07 19:54:55 -04:00
2013-09-12 15:38:02 -07:00
2013-09-06 09:06:02 -07:00
2013-09-12 15:44:27 -07:00
2013-09-25 17:51:24 +09:00
2013-09-12 15:38:02 -07:00
2013-06-29 12:56:53 +04:00
2013-09-19 12:50:37 -05:00
2013-09-12 15:38:02 -07:00
2013-09-16 19:17:24 -04:00
2013-09-12 15:38:02 -07:00
2013-09-12 15:38:02 -07:00
2013-09-07 10:38:29 +02:00
2013-09-12 15:38:02 -07:00
2013-07-03 16:07:41 -07:00
2013-08-24 12:10:17 -04:00
2013-07-31 22:14:50 +02:00
2013-08-09 10:49:00 +02:00
2013-08-28 14:59:58 -04:00
2013-06-29 12:56:47 +04:00
2013-09-12 15:38:02 -07:00
2013-08-05 15:03:46 -04:00
2013-07-02 09:39:34 -07:00
2013-09-12 15:38:02 -07:00
2013-07-09 10:33:25 -07:00
2013-09-16 19:17:24 -04:00
2013-09-12 15:01:38 -07:00
2013-09-12 15:38:02 -07:00
2013-07-09 10:33:20 -07:00
2013-09-12 15:38:02 -07:00
2013-09-13 10:55:58 -07:00
2013-09-12 15:38:02 -07:00
2013-06-29 12:56:32 +04:00
2013-09-12 15:38:03 -07:00
2013-09-16 09:28:29 -07:00
2013-06-29 12:56:38 +04:00
2013-06-29 12:56:39 +04:00
2013-09-10 18:56:31 -04:00
2013-09-11 15:59:37 -07:00
2013-09-06 09:06:02 -07:00
2013-06-29 12:56:29 +04:00
2013-09-06 04:57:54 +01:00
2013-09-07 14:36:57 -07:00
2013-09-12 15:38:02 -07:00
2013-09-16 15:36:55 -04:00
2013-09-13 10:55:58 -07:00
2013-09-12 15:38:02 -07:00
2013-09-12 16:13:41 -07:00
2013-09-09 12:29:35 -04:00
2013-07-16 09:32:17 -04:00
2013-06-29 12:57:04 +04:00
2013-07-10 18:11:34 -07:00
2013-05-02 10:16:16 -07:00
2013-07-10 18:11:34 -07:00
2013-04-29 15:40:23 -04:00
2013-04-30 17:04:03 -07:00
2013-09-22 15:00:11 -07:00
2013-09-03 18:25:03 -07:00
2013-09-13 23:06:40 -04:00
2013-07-03 16:07:29 -07:00
2013-06-29 12:46:44 +04:00
2013-06-29 12:57:05 +04:00
2013-09-11 15:59:01 -07:00
2013-09-15 07:11:01 -04:00
2013-03-03 23:00:23 -05:00
2013-09-09 10:47:42 -07:00
2013-09-10 18:56:31 -04:00
2013-09-11 15:58:50 -07:00
2013-09-11 15:59:09 -07:00
2013-08-05 18:25:32 +04:00
2013-09-11 15:59:01 -07:00
2013-05-01 17:31:42 -04:00
2013-03-03 19:36:31 -08:00
2013-03-01 23:51:07 -05:00
2013-09-13 23:06:40 -04:00
2013-09-10 18:56:31 -04:00
2013-09-10 18:56:31 -04:00
2013-04-17 13:25:09 +01:00
2013-04-30 17:04:04 -07:00
2013-07-14 17:43:25 +04:00
2013-07-08 13:36:42 +04:00
2013-05-01 17:51:54 -07:00
2013-09-10 18:56:31 -04:00
2013-04-09 14:12:52 -04:00
2013-09-17 17:08:50 -04:00
2013-09-11 15:59:37 -07:00
2013-09-16 19:17:24 -04:00
2013-05-07 20:16:25 -07:00
2013-05-31 15:16:33 -04:00
2013-08-26 18:42:15 -07:00
2013-07-30 11:53:12 -04:00
2013-06-29 12:57:05 +04:00
2013-07-10 17:08:27 -07:00
2013-07-08 13:36:41 +04:00
2013-03-03 22:58:46 -05:00
2013-07-03 09:10:19 -07:00
2013-08-17 09:32:32 -04:00
2013-09-10 18:56:32 -04:00
2013-03-03 22:46:22 -05:00
2013-05-29 12:57:34 -07:00