Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 613f3dcd authored by Gao Xiang's avatar Gao Xiang Committed by Jaegeuk Kim
Browse files

f2fs: no need to take page lock in readdir



VFS will take inode_lock for readdir, therefore no need to
take page lock in readdir at all just as the majority of
other generic filesystems.

This patch improves concurrency since .iterate_shared
was introduced to VFS years ago.

Signed-off-by: default avatarGao Xiang <gaoxiang25@huawei.com>
Reviewed-by: default avatarChao Yu <yuchao0@huawei.com>
Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
parent e46f6bd8
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -896,7 +896,7 @@ static int f2fs_readdir(struct file *file, struct dir_context *ctx)
			page_cache_sync_readahead(inode->i_mapping, ra, file, n,
				min(npages - n, (pgoff_t)MAX_DIR_RA_PAGES));

		dentry_page = f2fs_get_lock_data_page(inode, n, false);
		dentry_page = f2fs_find_data_page(inode, n);
		if (IS_ERR(dentry_page)) {
			err = PTR_ERR(dentry_page);
			if (err == -ENOENT) {
@@ -914,11 +914,11 @@ static int f2fs_readdir(struct file *file, struct dir_context *ctx)
		err = f2fs_fill_dentries(ctx, &d,
				n * NR_DENTRY_IN_BLOCK, &fstr);
		if (err) {
			f2fs_put_page(dentry_page, 1);
			f2fs_put_page(dentry_page, 0);
			break;
		}

		f2fs_put_page(dentry_page, 1);
		f2fs_put_page(dentry_page, 0);
	}
out_free:
	fscrypt_fname_free_buffer(&fstr);