diff options
author | Slava Pestov <sp@daterainc.com> | 2015-01-15 21:41:21 -0800 |
---|---|---|
committer | Slava Pestov <sp@daterainc.com> | 2015-01-15 21:41:40 -0800 |
commit | 15c8235aa4ccb918cee1c80d6fbcfba5ca20bb99 (patch) | |
tree | eb085375f9d5c9c68bc5e45572fe194a158f65a4 | |
parent | b765c10d0ccabc123b42ec52c6c9e5692d437a3d (diff) |
bcacheadm: fix --cache_replacement_policy flag
Change-Id: Ic1f97df531345e1c4cb9a83f0fc5463718f56c60
-rw-r--r-- | bcacheadm.c | 27 |
1 files changed, 24 insertions, 3 deletions
diff --git a/bcacheadm.c b/bcacheadm.c index e92acbd..05e48d9 100644 --- a/bcacheadm.c +++ b/bcacheadm.c @@ -41,6 +41,7 @@ int bdev = -1; int devs = 0; char *cache_devices[MAX_DEVS]; int tier_mapping[MAX_DEVS]; +unsigned replacement_policy_mapping[MAX_DEVS]; char *backing_devices[MAX_DEVS]; char *backing_dev_labels[MAX_DEVS]; size_t i, nr_backing_devices = 0, nr_cache_devices = 0; @@ -48,7 +49,8 @@ unsigned block_size = 0; unsigned bucket_sizes[MAX_DEVS]; int num_bucket_sizes = 0; int writeback = 0, discard = 0, wipe_bcache = 0; -unsigned replication_set = 0, replacement_policy = 0; +unsigned replication_set = 0; +char *replacement_policy = 0; uint64_t data_offset = BDEV_DATA_START_DEFAULT; char *label = NULL; struct cache_sb *cache_set_sb = NULL; @@ -117,7 +119,26 @@ static int set_cache(NihOption *option, const char *arg) if(ntier == 0 || ntier == 1) tier_mapping[nr_cache_devices] = ntier; else - printf("Invalid tier\n"); + printf("Invalid tier %s\n", tier); + } + + if (!replacement_policy) + replacement_policy_mapping[nr_cache_devices] = 0; + else { + int i = 0; + + while (replacement_policies[i] != NULL) { + if (!strcmp(replacement_policy, + replacement_policies[i])) { + replacement_policy_mapping[nr_cache_devices] = i; + break; + } + i++; + } + + if (replacement_policies[i] == NULL) + printf("Invalid replacement policy: %s\n", + replacement_policy); } devs++; @@ -322,7 +343,7 @@ int make_bcache(NihCommand *command, char *const *args) next_cache_device(cache_set_sb, replication_set, tier_mapping[i], - replacement_policy, + replacement_policy_mapping[i], discard); if (!cache_set_sb->nr_in_set && !nr_backing_devices) { |