diff options
author | Christoph Hellwig <hch@lst.de> | 2011-04-21 16:24:07 -0400 |
---|---|---|
committer | Chris Mason <chris.mason@oracle.com> | 2011-10-25 09:18:32 -0400 |
commit | 43a06f07c7b64bc4cabfbbf2397fb17b666b155f (patch) | |
tree | 3a0bf4c3f5b63bb7fbdc6b810d710e3da7946a0e /btrfs_cmds.c | |
parent | b4d668ee6bcf93f097507df6d76fd0fca7d3888a (diff) |
btrfs-progs: add discard support to mkfs
Discard the whole device before starting to create the filesystem structures.
Modelled after similar support in mkfs.xfs.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Chris Mason <chris.mason@oracle.com>
Diffstat (limited to 'btrfs_cmds.c')
-rw-r--r-- | btrfs_cmds.c | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/btrfs_cmds.c b/btrfs_cmds.c index 6de73f4d..32f6b25c 100644 --- a/btrfs_cmds.c +++ b/btrfs_cmds.c @@ -732,13 +732,26 @@ int do_add_volume(int nargs, char **args) return 12; } - for(i=1 ; i < (nargs-1) ; i++ ){ + for (i = 1; i < (nargs-1); i++ ){ struct btrfs_ioctl_vol_args ioctl_args; int devfd, res; u64 dev_block_count = 0; struct stat st; int mixed = 0; + res = check_mounted(args[i]); + if (res < 0) { + fprintf(stderr, "error checking %s mount status\n", + args[i]); + ret++; + continue; + } + if (res == 1) { + fprintf(stderr, "%s is mounted\n", args[i]); + ret++; + continue; + } + devfd = open(args[i], O_RDWR); if (!devfd) { fprintf(stderr, "ERROR: Unable to open device '%s'\n", args[i]); @@ -746,8 +759,8 @@ int do_add_volume(int nargs, char **args) ret++; continue; } - ret = fstat(devfd, &st); - if (ret) { + res = fstat(devfd, &st); + if (res) { fprintf(stderr, "ERROR: Unable to stat '%s'\n", args[i]); close(devfd); ret++; @@ -781,7 +794,7 @@ int do_add_volume(int nargs, char **args) } close(fdmnt); - if( ret) + if (ret) return ret+20; else return 0; |