Introduce a new option, --pattern, to specify the pattern to fill
mirror.

Signed-off-by: Qu Wenruo <[email protected]>
---
 Documentation/btrfs-modify.asciidoc |  5 +++++
 modify/mirror.c                     | 11 ++++++++++-
 2 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/Documentation/btrfs-modify.asciidoc 
b/Documentation/btrfs-modify.asciidoc
index ae2ada65..d82fb0df 100644
--- a/Documentation/btrfs-modify.asciidoc
+++ b/Documentation/btrfs-modify.asciidoc
@@ -41,6 +41,11 @@ stripe number 1.
 P for RAID56 1st parity stripe. Only RAID5 and RAID6 support stripe number P.
 Q for RAID6 2nd parity stripe.
 
+--pattern <pattern>::::
+Specify to pattern to modify the mirror data5f536652.
++
+Default value is "0x66524842" (ascii "BHRf", part of the btrfs magic 
"_BHRfS_M").
+
 EXIT STATUS
 -----------
 *btrfs-modify* returns a zero exit status if all its operations succeed.
diff --git a/modify/mirror.c b/modify/mirror.c
index c89927f6..dd717fbe 100644
--- a/modify/mirror.c
+++ b/modify/mirror.c
@@ -373,13 +373,15 @@ int modify_mirror(int argc, char **argv)
        char *device;
        u64 length = (u64)-1;
        u64 logical = (u64)-1;
+       u32 pattern = 0x66524842;
        int stripe = STRIPE_UNINITILIZED;
        int ret;
 
        while (1) {
                int c;
                enum { GETOPT_VAL_LOGICAL = 257, GETOPT_VAL_LENGTH,
-                       GETOPT_VAL_STRIPE, GETOPT_VAL_ROOT_INO_OFFSET };
+                       GETOPT_VAL_STRIPE, GETOPT_VAL_ROOT_INO_OFFSET,
+                       GETOPT_VAL_PATTERN };
                static const struct option long_options[] = {
                        { "logical", required_argument, NULL,
                                GETOPT_VAL_LOGICAL },
@@ -388,6 +390,8 @@ int modify_mirror(int argc, char **argv)
                        { "stripe", required_argument, NULL, GETOPT_VAL_STRIPE 
},
                        { "root-ino-offset", required_argument, NULL,
                                GETOPT_VAL_ROOT_INO_OFFSET},
+                       { "pattern", required_argument, NULL,
+                               GETOPT_VAL_PATTERN},
                        { NULL, 0, NULL, 0 }
                };
 
@@ -407,6 +411,9 @@ int modify_mirror(int argc, char **argv)
                case GETOPT_VAL_ROOT_INO_OFFSET:
                        parse_root_ino_offset(&dest, optarg);
                        break;
+               case GETOPT_VAL_PATTERN:
+                       pattern = arg_strtou32(optarg);
+                       break;
                case '?':
                case 'h':
                        usage(modify_mirror_usage);
@@ -439,6 +446,8 @@ int modify_mirror(int argc, char **argv)
                stripe = 0;
        }
 
+       memset(write_buf, pattern, sizeof(write_buf) / sizeof(pattern));
+
        fs_info = open_ctree_fs_info(device, 0, 0, 0, OPEN_CTREE_WRITES);
        if (!fs_info) {
                error("failed to open btrfs on device %s\n", device);
-- 
2.12.2



--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to