mirror of
https://github.com/versity/scoutfs.git
synced 2026-01-08 04:55:21 +00:00
Starting to implement LSM merging made me really question if it is the right approach. I'd like to try an experiment to see if we can get our concurrent writes done with much simpler btrees. This commit removes all the functionality that derives from the large LSM segments and distributing the manifest. What's left is a multi-page block layer and the husk of the btree implementation which will give people access to items. Callers that work with items get translated to the btree interface. This gets as far as reading the super block but the format changes and large block size mean that the crc check fails and the mount returns an error. Signed-off-by: Zach Brown <zab@versity.com>
45 lines
1.1 KiB
C
45 lines
1.1 KiB
C
#ifndef _SCOUTFS_COUNTERS_H_
|
|
#define _SCOUTFS_COUNTERS_H_
|
|
|
|
#include <linux/kobject.h>
|
|
#include <linux/completion.h>
|
|
#include <linux/percpu_counter.h>
|
|
|
|
#include "super.h"
|
|
|
|
/*
|
|
* We only have to define each counter here and it'll be enumerated in
|
|
* other places by this macro. Don't forget to update LAST_COUNTER.
|
|
*/
|
|
#define EXPAND_EACH_COUNTER \
|
|
EXPAND_COUNTER(block_mem_alloc) \
|
|
EXPAND_COUNTER(block_mem_free)
|
|
|
|
#define FIRST_COUNTER block_mem_alloc
|
|
#define LAST_COUNTER block_mem_free
|
|
|
|
#undef EXPAND_COUNTER
|
|
#define EXPAND_COUNTER(which) struct percpu_counter which;
|
|
|
|
struct scoutfs_counters {
|
|
/* $sysfs/fs/scoutfs/$id/counters/ */
|
|
struct kobject kobj;
|
|
struct completion comp;
|
|
|
|
EXPAND_EACH_COUNTER
|
|
};
|
|
|
|
#define scoutfs_foreach_counter(sb, pcpu) \
|
|
for (pcpu = &SCOUTFS_SB(sb)->counters->FIRST_COUNTER; \
|
|
pcpu <= &SCOUTFS_SB(sb)->counters->LAST_COUNTER; \
|
|
pcpu++)
|
|
|
|
#define scoutfs_inc_counter(sb, which) \
|
|
percpu_counter_inc(&SCOUTFS_SB(sb)->counters->which)
|
|
|
|
void __init scoutfs_init_counters(void);
|
|
int scoutfs_setup_counters(struct super_block *sb);
|
|
void scoutfs_destroy_counters(struct super_block *sb);
|
|
|
|
#endif
|