Show or update config of a bcache device.

    If no device is given, operate on the cache set itself.

    CLI example:

    .. code-block:: bash

        salt '*' bcache.config
        salt '*' bcache.config bcache1
        salt '*' bcache.config errors=panic journal_delay_ms=150
        salt '*' bcache.config bcache1 cache_mode=writeback writeback_percent=15

    :return: config or True/False

def config_(dev=None, **kwargs):
    '''
    Show or update config of a bcache device.

    If no device is given, operate on the cache set itself.

    CLI example:

    .. code-block:: bash

        salt '*' bcache.config
        salt '*' bcache.config bcache1
        salt '*' bcache.config errors=panic journal_delay_ms=150
        salt '*' bcache.config bcache1 cache_mode=writeback writeback_percent=15

    :return: config or True/False
    '''
    if dev is None:
        spath = _fspath()
    else:
        spath = _bcpath(dev)

    # filter out 'hidden' kwargs added by our favourite orchestration system
    updates = dict([(key, val) for key, val in kwargs.items() if not key.startswith('__')])

    if updates:
        endres = 0
        for key, val in updates.items():
            endres += _sysfs_attr([spath, key], val,
                                  'warn', 'Failed to update {0} with {1}'.format(os.path.join(spath, key), val))
        return endres > 0
    else:
        result = {}
        data = _sysfs_parse(spath, config=True, internals=True, options=True)
        for key in ('other_ro', 'inter_ro'):
            if key in data:
                del data[key]

        for key in data:
            result.update(data[key])

        return result