zfsonlinux/zfs — pull request #2294 by behlendorf (2014-05-02 19:41:41+00:00)
Title: Treat spill block dbufs as meta data

When the system attributes (SAs) for an object exceed what can
can be stored in the bonus area of a dnode a spill block is
allocated. These spill blocks are currently considered data
blocks. However, they should be accounted for as meta data
because they are effectively an extension of the dnode.

This change goes beyond fixing an accounting mistake. By changing
the spill block to meta data they will now be dropped from the
cache when the meta limit is reached. This then allows the dnode
which the spill block was pinning to be freed. If they are treated
as data and there's no need to free data block they may pin meta
data pushing us over the meta limit.

Signed-off-by: Brian Behlendorf