summaryrefslogtreecommitdiff
path: root/btrfs_cmds.c
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2011-04-21 16:24:07 -0400
committerChris Mason <chris.mason@oracle.com>2011-10-25 09:18:32 -0400
commit43a06f07c7b64bc4cabfbbf2397fb17b666b155f (patch)
tree3a0bf4c3f5b63bb7fbdc6b810d710e3da7946a0e /btrfs_cmds.c
parentb4d668ee6bcf93f097507df6d76fd0fca7d3888a (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.c21
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;