All Btrfs metadata can be (and should be) pinned to the SSD cache rather than dumped-out by the vagaries of the previous algorithm.
This setup only applies to the writeback cache mode. Writethrough and writearound modes store no cache metadata at all.
Btw:
Flashcache can be put in one of 2 modes - Cache Everything or Cache Nothing. These 2 modes have a blacklist and a whitelist. The algorithm works as follows in "cache everything" mode:
1) If the pid of the process issuing the IO is in the blacklist, do not cache the IO. ELSE,
2) If the tgid is in the blacklist, don't cache this IO. UNLESS
3) The particular pid is marked as an exception (and entered in the whitelist, which makes the IO cacheable).
4) Finally, even if IO is cacheable up to this point, skip sequential IO if configured by the sysctl.
Scenario examples:
1. You can make the global cache setting "cache nothing", and add the tgid of your pthreaded application to the whitelist. Which makes only IOs issued by your application cacheable by Flashcache.
2. You can make the global cache setting "cache everything" and add tgids (or pids) of other applications that may issue IOs on this volume to the blacklist, which will make those un-interesting IOs not cacheable.
Note:
/proc/flashcache_pidlists shows the list of pids on the whitelist and the blacklist.
The question is: who will decide (instead of you) what TGID or PID will contain the black/white lists? Syno?
Btw, more statistics directly from the flashcache you can get from:
Bash:
[CODE]
dmsetup status <cache name>
dmsetup table
[/CODE]
or simple by Proc directory:
flashcache/<cache name>/flashcache_stats
"We Can Learn From Mistakes, Not From Fairy Tales"
[No idea where your fairy tails quote came from as it does not (or no longer) appears in this thread.]
someone smarter than me said in the past
