diff --git a/src/disk_tool.cpp b/src/disk_tool.cpp index e293711a..2d6ee900 100644 --- a/src/disk_tool.cpp +++ b/src/disk_tool.cpp @@ -52,11 +52,12 @@ static const char *help_text = " --disable_data_fsync 0 Disable data device cache and fsync (default off)\n" " --disable_meta_fsync 0 Disable metadata device cache and fsync (default off)\n" " --disable_journal_fsync 0 Disable journal device cache and fsync (default off)\n" + " --hdd Enable HDD defaults (1M block, 1G journal, throttling)\n" " --force Bypass partition safety checks (for emptiness and so on)\n" " \n" " Options (both modes):\n" - " --journal_size 1G/32M Set journal size (area or partition size)\n" - " --block_size 1M/128k Set blockstore object size\n" + " --journal_size 32M/1G Set journal size (area or partition size)\n" + " --block_size 128k/1M Set blockstore object size\n" " --bitmap_granularity 4k Set bitmap granularity\n" " --data_device_block 4k Override data device block size\n" " --meta_device_block 4k Override metadata device block size\n" @@ -196,6 +197,10 @@ int main(int argc, char *argv[]) { self.options["hybrid"] = "1"; } + else if (!strcmp(argv[i], "--hdd")) + { + self.options["hdd"] = "1"; + } else if (!strcmp(argv[i], "--help") || !strcmp(argv[i], "-h")) { cmd.insert(cmd.begin(), (char*)"help"); diff --git a/src/disk_tool_prepare.cpp b/src/disk_tool_prepare.cpp index c82788ab..1e404c87 100644 --- a/src/disk_tool_prepare.cpp +++ b/src/disk_tool_prepare.cpp @@ -539,7 +539,7 @@ int disk_tool_t::prepare(std::vector devices) fprintf(stderr, "Device list (positional arguments) and --hybrid are incompatible with --data_device\n"); return 1; } - return prepare_one(options); + return prepare_one(options, options.find("hdd") != options.end() ? 1 : 0); } if (!devices.size()) { @@ -549,12 +549,12 @@ int disk_tool_t::prepare(std::vector devices) options.erase("data_device"); options.erase("meta_device"); options.erase("journal_device"); + bool hybrid = options.find("hybrid") != options.end(); auto devinfo = collect_devices(devices); if (!devinfo.size()) { return 1; } - bool hybrid = options.find("hybrid") != options.end(); uint64_t osd_per_disk = stoull_full(options["osd_per_disk"]); if (!osd_per_disk) osd_per_disk = 1; @@ -612,7 +612,8 @@ int disk_tool_t::prepare(std::vector devices) return 1; } } - prepare_one(options, dev.is_hdd ? 1 : 0); + // Treat all disks as SSDs if not in the hybrid mode + prepare_one(options, hybrid && dev.is_hdd ? 1 : 0); } } }