summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFan Chengniang <fancn.fnst@cn.fujitsu.com>2015-01-19 15:27:30 +0800
committerDavid Sterba <dsterba@suse.cz>2015-01-19 19:19:14 +0100
commitf66d17814b58697aac579c90ee3c906e6f65720b (patch)
tree53e50b5e1bba392b76d5585e7547e330ef093839
parent188e79e2fcac8cdf474d9a23adfcce48e319c745 (diff)
btrfs-progs: btrfstune: force to set seeding flags
Now we can use -f with -S option when setting seeding flags or clearing seeding flags Reported-by: Chen Hanxiao <chenhanxiao@cn.fujitsu.com> Signed-off-by: Fan Chengniang <fancn.fnst@cn.fujitsu.com> [updated docs] Signed-off-by: David Sterba <dsterba@suse.cz>
-rw-r--r--Documentation/btrfstune.txt3
-rw-r--r--btrfstune.c10
2 files changed, 8 insertions, 5 deletions
diff --git a/Documentation/btrfstune.txt b/Documentation/btrfstune.txt
index d49a9742..96202211 100644
--- a/Documentation/btrfstune.txt
+++ b/Documentation/btrfstune.txt
@@ -25,7 +25,8 @@ Enable extended inode refs.
-x::
Enable skinny metadata extent refs.
-f::
-Allow dangerous changes, e.g. clear the seeding flag
+Allow dangerous changes, e.g. clear the seeding flag. Make sure that you are
+aware of the dangers.
When mounting the new device, btrfs will check whether the seeding flag is set
when try to open seeding device. If the user clears the seeding flag of the
diff --git a/btrfstune.c b/btrfstune.c
index cba00a8c..075fbc63 100644
--- a/btrfstune.c
+++ b/btrfstune.c
@@ -33,6 +33,7 @@
#include "version.h"
static char *device;
+static int force = 0;
static int update_seeding_flag(struct btrfs_root *root, int set_flag)
{
@@ -44,8 +45,10 @@ static int update_seeding_flag(struct btrfs_root *root, int set_flag)
super_flags = btrfs_super_flags(disk_super);
if (set_flag) {
if (super_flags & BTRFS_SUPER_FLAG_SEEDING) {
- fprintf(stderr, "seeding flag is already set on %s\n",
- device);
+ if (force)
+ return 0;
+ else
+ fprintf(stderr, "seeding flag is already set on %s\n", device);
return 1;
}
super_flags |= BTRFS_SUPER_FLAG_SEEDING;
@@ -104,7 +107,7 @@ static void print_usage(void)
fprintf(stderr, "\t-S value\tpositive value will enable seeding, zero to disable, negative is not allowed\n");
fprintf(stderr, "\t-r \t\tenable extended inode refs\n");
fprintf(stderr, "\t-x \t\tenable skinny metadata extent refs\n");
- fprintf(stderr, "\t-f \t\tforce to clear flags, make sure that you are aware of the dangers\n");
+ fprintf(stderr, "\t-f \t\tforce to set or clear flags, make sure that you are aware of the dangers\n");
}
int main(int argc, char *argv[])
@@ -116,7 +119,6 @@ int main(int argc, char *argv[])
int seeding_flag = 0;
u64 seeding_value = 0;
int skinny_flag = 0;
- int force = 0;
int ret;
optind = 1;