% FLASHCACHE_SETIOCTL(8) flashcache_setioctl
%
% October 2012

# NAME

flashcache_setioctl - Set I/O behavior for special process in flashcache


# DESCRIPTION

The **flashcache_setioctl** command can be used to set/remove a
process from flashcache blacklist/whitelist, or clear flashcache 
blacklist/whitelist.


# SYNOPSIS

flashcache_setioctl (-c | -a | -r) (-b *pid* |-w *pid*) *ssd_devname*


# OPTIONS

-c
:    Clear blacklist/whitelist

-a
:    Add to blacklist/whitelist

-r
:    Remove from blacklist/whitelist

-b
:    Operate on blacklist

-w
:    Operate on whitelist

# FLASHCACHE CACHE POLICY
Flashcache can be put in one of 2 modes - Cache Everything or
Cache Nothing (dev.flashcache.cache_all). The defaults is to "cache
everything".

These 2 modes have a blacklist and a whitelist.

The tgid (thread group id) for a group of pthreads can be used as a
shorthand to tag all threads in an application. The tgid for a pthread
is returned by getpid() and the pid of the individual thread is
returned by gettid().

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.

Conversely, in "cache nothing" mode,
1) If the pid of the process issuing the IO is in the whitelist,
cache the IO. ELSE,
2) If the tgid is in the whitelist, cache this IO. UNLESS
3) The particular pid is marked as an exception (and entered in the
blacklist, which makes the IO non-cacheable).
4) Anything whitelisted is cached, regardless of sequential or random
IO.

# SEE ALSO

`flashcache_create`(8)

*README* and other documents in **/usr/share/doc/flashcache-utils**

The flashcache source code and all documentation may be downloaded from
<https://github.com/facebook/flashcache/>.


# AUTHORS

Flashcache is developed by Mohan Srinivasan <mohan@fb.com>

This man page was written by Liang Guo <guoliang@debian.org>
for Debian GNU/Linux (but may be used by others).

