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

Commit dc5fcb92 authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "f2fs: allow to change discard policy based on cached discard cmds"

parents 65ef1dac d73a7033
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -44,11 +44,15 @@ int f2fs_check_nid_range(struct f2fs_sb_info *sbi, nid_t nid)
bool f2fs_available_free_memory(struct f2fs_sb_info *sbi, int type)
{
	struct f2fs_nm_info *nm_i = NM_I(sbi);
	struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info;
	struct sysinfo val;
	unsigned long avail_ram;
	unsigned long mem_size = 0;
	bool res = false;

	if (!nm_i)
		return true;

	si_meminfo(&val);

	/* only uses low memory */
@@ -90,6 +94,10 @@ bool f2fs_available_free_memory(struct f2fs_sb_info *sbi, int type)
		/* it allows 20% / total_ram for inmemory pages */
		mem_size = get_pages(sbi, F2FS_INMEM_PAGES);
		res = mem_size < (val.totalram / 5);
	} else if (type == DISCARD_CACHE) {
		mem_size = (atomic_read(&dcc->discard_cmd_cnt) *
				sizeof(struct discard_cmd)) >> PAGE_SHIFT;
		res = mem_size < (avail_ram * nm_i->ram_thresh / 100);
	} else {
		if (!sbi->sb->s_bdi->wb.dirty_exceeded)
			return true;
+1 −0
Original line number Diff line number Diff line
@@ -147,6 +147,7 @@ enum mem_type {
	INO_ENTRIES,	/* indicates inode entries */
	EXTENT_CACHE,	/* indicates extent cache */
	INMEM_PAGES,	/* indicates inmemory pages */
	DISCARD_CACHE,	/* indicates memory of cached discard cmds */
	BASE_CHECK,	/* check kernel status */
};

+2 −1
Original line number Diff line number Diff line
@@ -1733,7 +1733,8 @@ static int issue_discard_thread(void *data)
			continue;
		}

		if (sbi->gc_mode == GC_URGENT)
		if (sbi->gc_mode == GC_URGENT ||
			!f2fs_available_free_memory(sbi, DISCARD_CACHE))
			__init_discard_policy(sbi, &dpolicy, DPOLICY_FORCE, 1);

		sb_start_intwrite(sbi->sb);