diff options
Diffstat (limited to 'make-bcache.c')
-rw-r--r-- | make-bcache.c | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/make-bcache.c b/make-bcache.c index 58fe674..d442853 100644 --- a/make-bcache.c +++ b/make-bcache.c @@ -5,6 +5,7 @@ #include <ctype.h> #include <errno.h> #include <fcntl.h> +#include <getopt.h> #include <linux/fs.h> #include <stdbool.h> #include <stdint.h> @@ -67,10 +68,16 @@ void usage() " -b bucket size\n" " -w block size (hard sector size of SSD, often 2k)\n" " -U UUID\n" - " -S Set UUID\n"); + " --writeback Enable writeback\n"); exit(EXIT_FAILURE); } +int writeback; + +struct option opts[2] = { + { "writeback", 0, &writeback, 1 } +}; + void write_sb(char *dev, struct cache_sb *sb) { int fd; @@ -97,6 +104,12 @@ void write_sb(char *dev, struct cache_sb *sb) exit(EXIT_FAILURE); } + if (sb->version == CACHE_BACKING_DEV && + writeback) + SET_BDEV_WRITEBACK(sb, 1); + else + SET_BDEV_WRITEBACK(sb, 0); + sb->offset = SB_SECTOR; memcpy(sb->magic, bcache_magic, 16); sb->nbuckets = getblocks(fd) / sb->bucket_size; @@ -153,7 +166,9 @@ int main(int argc, char **argv) uuid_generate(sb.uuid); uuid_generate(sb.set_uuid); - while ((c = getopt(argc, argv, "-CBU:w:b:")) != -1) + while ((c = getopt_long(argc, argv, + "-CBU:w:b:", + opts, NULL)) != -1) switch (c) { case 'C': sb.version = 0; |