mirror of
https://github.com/kdave/btrfs-progs
synced 2025-04-22 06:55:22 +00:00
Btrfs-progs: switch to arg_strtou64() part3
Switch to new helper arg_strtou64(), also check if user assign a valid super copy. Signed-off-by: Wang Shilong <wangsl.fnst@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.cz> Signed-off-by: Chris Mason <clm@fb.com>
This commit is contained in:
parent
86da12ff86
commit
64fddab8ac
@ -43,7 +43,7 @@ int main(int ac, char **av)
|
|||||||
{
|
{
|
||||||
struct btrfs_root *root;
|
struct btrfs_root *root;
|
||||||
int ret;
|
int ret;
|
||||||
int num = 0;
|
u64 num = 0;
|
||||||
u64 bytenr = 0;
|
u64 bytenr = 0;
|
||||||
|
|
||||||
while(1) {
|
while(1) {
|
||||||
@ -53,8 +53,14 @@ int main(int ac, char **av)
|
|||||||
break;
|
break;
|
||||||
switch(c) {
|
switch(c) {
|
||||||
case 's':
|
case 's':
|
||||||
num = atol(optarg);
|
num = arg_strtou64(optarg);
|
||||||
bytenr = btrfs_sb_offset(num);
|
if (num >= BTRFS_SUPER_MIRROR_MAX) {
|
||||||
|
fprintf(stderr,
|
||||||
|
"ERROR: super mirror should be less than: %d\n",
|
||||||
|
BTRFS_SUPER_MIRROR_MAX);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
bytenr = btrfs_sb_offset(((int)num));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
print_usage();
|
print_usage();
|
||||||
|
@ -59,17 +59,17 @@ int main(int argc, char **argv)
|
|||||||
int all = 0;
|
int all = 0;
|
||||||
char *filename;
|
char *filename;
|
||||||
int fd = -1;
|
int fd = -1;
|
||||||
int arg, i;
|
int i;
|
||||||
|
u64 arg;
|
||||||
u64 sb_bytenr = btrfs_sb_offset(0);
|
u64 sb_bytenr = btrfs_sb_offset(0);
|
||||||
|
|
||||||
while ((opt = getopt(argc, argv, "ai:")) != -1) {
|
while ((opt = getopt(argc, argv, "ai:")) != -1) {
|
||||||
switch (opt) {
|
switch (opt) {
|
||||||
case 'i':
|
case 'i':
|
||||||
arg = atoi(optarg);
|
arg = arg_strtou64(optarg);
|
||||||
|
if (arg >= BTRFS_SUPER_MIRROR_MAX) {
|
||||||
if (arg < 0 || arg >= BTRFS_SUPER_MIRROR_MAX) {
|
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"Illegal super_mirror %d\n",
|
"Illegal super_mirror %llu\n",
|
||||||
arg);
|
arg);
|
||||||
print_usage();
|
print_usage();
|
||||||
exit(1);
|
exit(1);
|
||||||
|
@ -111,7 +111,7 @@ int main(int argc, char *argv[])
|
|||||||
int success = 0;
|
int success = 0;
|
||||||
int extrefs_flag = 0;
|
int extrefs_flag = 0;
|
||||||
int seeding_flag = 0;
|
int seeding_flag = 0;
|
||||||
int seeding_value = 0;
|
u64 seeding_value = 0;
|
||||||
int skinny_flag = 0;
|
int skinny_flag = 0;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
@ -123,7 +123,7 @@ int main(int argc, char *argv[])
|
|||||||
switch(c) {
|
switch(c) {
|
||||||
case 'S':
|
case 'S':
|
||||||
seeding_flag = 1;
|
seeding_flag = 1;
|
||||||
seeding_value = atoi(optarg);
|
seeding_value = arg_strtou64(optarg);
|
||||||
break;
|
break;
|
||||||
case 'r':
|
case 'r':
|
||||||
extrefs_flag = 1;
|
extrefs_flag = 1;
|
||||||
|
14
cmds-check.c
14
cmds-check.c
@ -6388,7 +6388,7 @@ int cmd_check(int argc, char **argv)
|
|||||||
u64 bytenr = 0;
|
u64 bytenr = 0;
|
||||||
char uuidbuf[BTRFS_UUID_UNPARSED_SIZE];
|
char uuidbuf[BTRFS_UUID_UNPARSED_SIZE];
|
||||||
int ret;
|
int ret;
|
||||||
int num;
|
u64 num;
|
||||||
int option_index = 0;
|
int option_index = 0;
|
||||||
int init_csum_tree = 0;
|
int init_csum_tree = 0;
|
||||||
int init_extent_tree = 0;
|
int init_extent_tree = 0;
|
||||||
@ -6407,9 +6407,15 @@ int cmd_check(int argc, char **argv)
|
|||||||
ctree_flags |= OPEN_CTREE_BACKUP_ROOT;
|
ctree_flags |= OPEN_CTREE_BACKUP_ROOT;
|
||||||
break;
|
break;
|
||||||
case 's':
|
case 's':
|
||||||
num = atol(optarg);
|
num = arg_strtou64(optarg);
|
||||||
bytenr = btrfs_sb_offset(num);
|
if (num >= BTRFS_SUPER_MIRROR_MAX) {
|
||||||
printf("using SB copy %d, bytenr %llu\n", num,
|
fprintf(stderr,
|
||||||
|
"ERROR: super mirror should be less than: %d\n",
|
||||||
|
BTRFS_SUPER_MIRROR_MAX);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
bytenr = btrfs_sb_offset(((int)num));
|
||||||
|
printf("using SB copy %llu, bytenr %llu\n", num,
|
||||||
(unsigned long long)bytenr);
|
(unsigned long long)bytenr);
|
||||||
break;
|
break;
|
||||||
case '?':
|
case '?':
|
||||||
|
@ -210,12 +210,7 @@ static int cmd_start_replace(int argc, char **argv)
|
|||||||
struct btrfs_ioctl_fs_info_args fi_args;
|
struct btrfs_ioctl_fs_info_args fi_args;
|
||||||
struct btrfs_ioctl_dev_info_args *di_args = NULL;
|
struct btrfs_ioctl_dev_info_args *di_args = NULL;
|
||||||
|
|
||||||
if (atoi(srcdev) == 0) {
|
start_args.start.srcdevid = arg_strtou64(srcdev);
|
||||||
fprintf(stderr, "Error: Failed to parse the numerical devid value '%s'\n",
|
|
||||||
srcdev);
|
|
||||||
goto leave_with_error;
|
|
||||||
}
|
|
||||||
start_args.start.srcdevid = (__u64)atoi(srcdev);
|
|
||||||
|
|
||||||
ret = get_fs_info(path, &fi_args, &di_args);
|
ret = get_fs_info(path, &fi_args, &di_args);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
|
@ -820,11 +820,7 @@ static int cmd_subvol_set_default(int argc, char **argv)
|
|||||||
subvolid = argv[1];
|
subvolid = argv[1];
|
||||||
path = argv[2];
|
path = argv[2];
|
||||||
|
|
||||||
objectid = (unsigned long long)strtoll(subvolid, NULL, 0);
|
objectid = arg_strtou64(subvolid);
|
||||||
if (errno == ERANGE) {
|
|
||||||
fprintf(stderr, "ERROR: invalid tree id (%s)\n", subvolid);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
fd = open_file_or_dir(path, &dirstream);
|
fd = open_file_or_dir(path, &dirstream);
|
||||||
if (fd < 0) {
|
if (fd < 0) {
|
||||||
@ -861,7 +857,7 @@ static int cmd_find_new(int argc, char **argv)
|
|||||||
usage(cmd_find_new_usage);
|
usage(cmd_find_new_usage);
|
||||||
|
|
||||||
subvol = argv[1];
|
subvol = argv[1];
|
||||||
last_gen = atoll(argv[2]);
|
last_gen = arg_strtou64(argv[2]);
|
||||||
|
|
||||||
ret = test_issubvolume(subvol);
|
ret = test_issubvolume(subvol);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
|
Loading…
Reference in New Issue
Block a user