mirror of
https://github.com/koverstreet/bcachefs-tools.git
synced 2025-02-23 00:00:02 +03:00
Add support for setting cache tier field
This commit is contained in:
parent
a1aa5961dc
commit
214dd0cb2d
3
bcache.h
3
bcache.h
@ -104,6 +104,9 @@ BITMASK(CACHE_REPLACEMENT, struct cache_sb, flags, 2, 3);
|
|||||||
#define CACHE_REPLACEMENT_FIFO 1U
|
#define CACHE_REPLACEMENT_FIFO 1U
|
||||||
#define CACHE_REPLACEMENT_RANDOM 2U
|
#define CACHE_REPLACEMENT_RANDOM 2U
|
||||||
|
|
||||||
|
BITMASK(CACHE_TIER, struct cache_sb, flags, 2, 5);
|
||||||
|
#define CACHE_TIERS 4U
|
||||||
|
|
||||||
BITMASK(BDEV_CACHE_MODE, struct cache_sb, flags, 0, 4);
|
BITMASK(BDEV_CACHE_MODE, struct cache_sb, flags, 0, 4);
|
||||||
#define CACHE_MODE_WRITETHROUGH 0U
|
#define CACHE_MODE_WRITETHROUGH 0U
|
||||||
#define CACHE_MODE_WRITEBACK 1U
|
#define CACHE_MODE_WRITEBACK 1U
|
||||||
|
@ -169,9 +169,8 @@ const char * const cache_replacement_policies[] = {
|
|||||||
|
|
||||||
static void write_sb(char *dev, unsigned block_size, unsigned bucket_size,
|
static void write_sb(char *dev, unsigned block_size, unsigned bucket_size,
|
||||||
bool writeback, bool discard, bool wipe_bcache,
|
bool writeback, bool discard, bool wipe_bcache,
|
||||||
unsigned cache_replacement_policy,
|
unsigned cache_replacement_policy, uint64_t data_offset,
|
||||||
uint64_t data_offset,
|
uuid_t set_uuid, unsigned tier, bool bdev,
|
||||||
uuid_t set_uuid, bool bdev,
|
|
||||||
uint16_t nr_in_set, uint16_t nr_this_dev)
|
uint16_t nr_in_set, uint16_t nr_this_dev)
|
||||||
{
|
{
|
||||||
int fd;
|
int fd;
|
||||||
@ -256,6 +255,7 @@ static void write_sb(char *dev, unsigned block_size, unsigned bucket_size,
|
|||||||
|
|
||||||
SET_CACHE_DISCARD(&sb, discard);
|
SET_CACHE_DISCARD(&sb, discard);
|
||||||
SET_CACHE_REPLACEMENT(&sb, cache_replacement_policy);
|
SET_CACHE_REPLACEMENT(&sb, cache_replacement_policy);
|
||||||
|
SET_CACHE_TIER(&sb, tier);
|
||||||
|
|
||||||
printf("UUID: %s\n"
|
printf("UUID: %s\n"
|
||||||
"Set UUID: %s\n"
|
"Set UUID: %s\n"
|
||||||
@ -341,6 +341,8 @@ int main(int argc, char **argv)
|
|||||||
{
|
{
|
||||||
int c, bdev = -1;
|
int c, bdev = -1;
|
||||||
unsigned i, ncache_devices = 0, nbacking_devices = 0;
|
unsigned i, ncache_devices = 0, nbacking_devices = 0;
|
||||||
|
unsigned long tier = 0;
|
||||||
|
unsigned cache_device_tier[argc];
|
||||||
char *cache_devices[argc];
|
char *cache_devices[argc];
|
||||||
char *backing_devices[argc];
|
char *backing_devices[argc];
|
||||||
|
|
||||||
@ -363,6 +365,7 @@ int main(int argc, char **argv)
|
|||||||
{ "cache_replacement_policy", 1, NULL, 'p' },
|
{ "cache_replacement_policy", 1, NULL, 'p' },
|
||||||
{ "data_offset", 1, NULL, 'o' },
|
{ "data_offset", 1, NULL, 'o' },
|
||||||
{ "cset-uuid", 1, NULL, 'u' },
|
{ "cset-uuid", 1, NULL, 'u' },
|
||||||
|
{ "tier", 1, NULL, 't' },
|
||||||
{ "help", 0, NULL, 'h' },
|
{ "help", 0, NULL, 'h' },
|
||||||
{ NULL, 0, NULL, 0 },
|
{ NULL, 0, NULL, 0 },
|
||||||
};
|
};
|
||||||
@ -409,6 +412,13 @@ int main(int argc, char **argv)
|
|||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case 't':
|
||||||
|
tier = strtoul(optarg, NULL, 10);
|
||||||
|
if (tier >= CACHE_TIERS) {
|
||||||
|
fprintf(stderr, "Invalid tier %lu\n", tier);
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
break;
|
||||||
case 'h':
|
case 'h':
|
||||||
usage();
|
usage();
|
||||||
break;
|
break;
|
||||||
@ -418,10 +428,13 @@ int main(int argc, char **argv)
|
|||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bdev)
|
if (bdev) {
|
||||||
backing_devices[nbacking_devices++] = optarg;
|
backing_devices[nbacking_devices++] = optarg;
|
||||||
else
|
} else {
|
||||||
|
cache_device_tier[ncache_devices] = tier;
|
||||||
cache_devices[ncache_devices++] = optarg;
|
cache_devices[ncache_devices++] = optarg;
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -449,13 +462,14 @@ int main(int argc, char **argv)
|
|||||||
write_sb(cache_devices[i], block_size, bucket_size,
|
write_sb(cache_devices[i], block_size, bucket_size,
|
||||||
writeback, discard, wipe_bcache,
|
writeback, discard, wipe_bcache,
|
||||||
cache_replacement_policy, data_offset,
|
cache_replacement_policy, data_offset,
|
||||||
set_uuid, false, ncache_devices, i);
|
set_uuid, cache_device_tier[i], false,
|
||||||
|
ncache_devices, i);
|
||||||
|
|
||||||
for (i = 0; i < nbacking_devices; i++)
|
for (i = 0; i < nbacking_devices; i++)
|
||||||
write_sb(backing_devices[i], block_size, bucket_size,
|
write_sb(backing_devices[i], block_size, bucket_size,
|
||||||
writeback, discard, wipe_bcache,
|
writeback, discard, wipe_bcache,
|
||||||
cache_replacement_policy, data_offset,
|
cache_replacement_policy, data_offset,
|
||||||
set_uuid, true, nbacking_devices, i);
|
set_uuid, 0, true, nbacking_devices, i);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user