Parece que há sinalizadores não documentados adicionais no campo RWBS e que o 'B' para barreira está obsoleto. N denota qualquer coisa que não seja descartada, lida ou escrita.
D - discard
W - write
R - read
N - None of the above
F - FUA
A - readahead
S - sync
M - metadata
static inline void fill_rwbs(char *rwbs, struct blk_io_trace *t)
{
int w = t->action & BLK_TC_ACT(BLK_TC_WRITE);
int a = t->action & BLK_TC_ACT(BLK_TC_AHEAD);
int s = t->action & BLK_TC_ACT(BLK_TC_SYNC);
int m = t->action & BLK_TC_ACT(BLK_TC_META);
int d = t->action & BLK_TC_ACT(BLK_TC_DISCARD);
int f = t->action & BLK_TC_ACT(BLK_TC_FLUSH);
int u = t->action & BLK_TC_ACT(BLK_TC_FUA);
int i = 0;
if (f)
rwbs[i++] = 'F'; /* flush */
if (d)
rwbs[i++] = 'D';
else if (w)
rwbs[i++] = 'W';
else if (t->bytes)
rwbs[i++] = 'R';
else
rwbs[i++] = 'N';
if (u)
rwbs[i++] = 'F'; /* fua */
if (a)
rwbs[i++] = 'A';
if (s)
rwbs[i++] = 'S';
if (m)
rwbs[i++] = 'M';
rwbs[i] = 'D - discard
W - write
R - read
N - None of the above
F - FUA
A - readahead
S - sync
M - metadata
static inline void fill_rwbs(char *rwbs, struct blk_io_trace *t)
{
int w = t->action & BLK_TC_ACT(BLK_TC_WRITE);
int a = t->action & BLK_TC_ACT(BLK_TC_AHEAD);
int s = t->action & BLK_TC_ACT(BLK_TC_SYNC);
int m = t->action & BLK_TC_ACT(BLK_TC_META);
int d = t->action & BLK_TC_ACT(BLK_TC_DISCARD);
int f = t->action & BLK_TC_ACT(BLK_TC_FLUSH);
int u = t->action & BLK_TC_ACT(BLK_TC_FUA);
int i = 0;
if (f)
rwbs[i++] = 'F'; /* flush */
if (d)
rwbs[i++] = 'D';
else if (w)
rwbs[i++] = 'W';
else if (t->bytes)
rwbs[i++] = 'R';
else
rwbs[i++] = 'N';
if (u)
rwbs[i++] = 'F'; /* fua */
if (a)
rwbs[i++] = 'A';
if (s)
rwbs[i++] = 'S';
if (m)
rwbs[i++] = 'M';
rwbs[i] = '%pre%';
}
';
}