Messages in this thread | | | Subject | Re: [PATCH] f2fs: Set GF_NOFS in read_cache_page_gfp while doing f2fs_quota_read | From | Chao Yu <> | Date | Mon, 19 Mar 2018 10:36:26 +0800 |
| |
On 2018/3/16 21:23, Ritesh Harjani wrote: > Quota code itself is serializing the operations by taking mutex_lock. > It seems a below deadlock can happen if GF_NOFS is not used in > f2fs_quota_read > > __switch_to+0x88 > __schedule+0x5b0 > schedule+0x78 > schedule_preempt_disabled+0x20 > __mutex_lock_slowpath+0xdc //mutex owner is itself > mutex_lock+0x2c > dquot_commit+0x30 //mutex_lock(&dqopt->dqio_mutex); > dqput+0xe0 > __dquot_drop+0x80 > dquot_drop+0x48 > f2fs_evict_inode+0x218 > evict+0xa8 > dispose_list+0x3c > prune_icache_sb+0x58 > super_cache_scan+0xf4 > do_shrink_slab+0x208 > shrink_slab.part.40+0xac > shrink_zone+0x1b0 > do_try_to_free_pages+0x25c > try_to_free_pages+0x164 > __alloc_pages_nodemask+0x534 > do_read_cache_page+0x6c > read_cache_page+0x14 > f2fs_quota_read+0xa4 > read_blk+0x54 > find_tree_dqentry+0xe4 > find_tree_dqentry+0xb8 > find_tree_dqentry+0xb8 > find_tree_dqentry+0xb8 > qtree_read_dquot+0x68 > v2_read_dquot+0x24 > dquot_acquire+0x5c // mutex_lock(&dqopt->dqio_mutex); > dqget+0x238 > __dquot_initialize+0xd4 > dquot_initialize+0x10 > dquot_file_open+0x34 > f2fs_file_open+0x6c > do_dentry_open+0x1e4 > vfs_open+0x6c > path_openat+0xa20 > do_filp_open+0x4c > do_sys_open+0x178 > > Signed-off-by: Ritesh Harjani <riteshh@codeaurora.org>
Reviewed-by: Chao Yu <yuchao0@huawei.com>
Thanks,
| |