blob: 7d3ae1def06bbb27b656d3e3d66747f10f59b7c3 [file] [log] [blame]
// Copyright 2018 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#pragma once
#include <blkctl/command.h>
namespace blkctl {
namespace fvm {
DEFINE_COMMAND(Init);
DEFINE_COMMAND(Dump);
DEFINE_COMMAND(Add);
DEFINE_COMMAND(Query);
DEFINE_COMMAND(Extend);
DEFINE_COMMAND(Shrink);
DEFINE_COMMAND(Remove);
DEFINE_COMMAND(Destroy);
constexpr const char* kType = "fvm";
constexpr Cmd kCommands[] = {
{"init", "<device> <slice_size>", "Format a block device to be an empty FVM volume.",
Instantiate<Init>},
{"dump", "<device>", "Dump block device and FVM volume information.", Instantiate<Dump>},
{"add", "<device> <name> <slices> [type-guid]", "Allocates a new partition in the FVM volume.",
Instantiate<Add>},
{"query", "<device>", "List ranges of allocated slices.", Instantiate<Query>},
{"extend", "<device> <start> <length>", "Allocates slices for the partition.",
Instantiate<Extend>},
{"shrink", "<device> <start> <length>", "Free slices from the partition.", Instantiate<Shrink>},
{"remove", "<device>", "Removes partition from the FVM volume.", Instantiate<Remove>},
{"destroy", "<device>", "Overwrites and unbinds an FVM volume.", Instantiate<Destroy>},
};
constexpr size_t kNumCommands = sizeof(kCommands) / sizeof(kCommands[0]);
constexpr const char* kDriver = "/boot/driver/fvm.so";
} // namespace fvm
} // namespace blkctl