diff options
Diffstat (limited to 'btrfs-vol.c')
-rw-r--r-- | btrfs-vol.c | 175 |
1 files changed, 0 insertions, 175 deletions
diff --git a/btrfs-vol.c b/btrfs-vol.c deleted file mode 100644 index e37b41ab..00000000 --- a/btrfs-vol.c +++ /dev/null @@ -1,175 +0,0 @@ -/* - * Copyright (C) 2007 Oracle. All rights reserved. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public - * License v2 as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 021110-1307, USA. - */ - -#define _GNU_SOURCE -#ifndef __CHECKER__ -#include <sys/ioctl.h> -#include <sys/mount.h> -#include "ioctl.h" -#endif -#include <stdio.h> -#include <stdlib.h> -#include <getopt.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <fcntl.h> -#include <unistd.h> -#include <dirent.h> -#include <uuid/uuid.h> -#include "kerncompat.h" -#include "ctree.h" -#include "transaction.h" -#include "utils.h" -#include "volumes.h" - -#ifdef __CHECKER__ -#define BLKGETSIZE64 0 -#define BTRFS_IOC_SNAP_CREATE 0 -#define BTRFS_IOC_ADD_DEV 0 -#define BTRFS_IOC_RM_DEV 0 -#define BTRFS_VOL_NAME_MAX 255 -struct btrfs_ioctl_vol_args { char name[BTRFS_VOL_NAME_MAX]; }; -static inline int ioctl(int fd, int define, void *arg) { return 0; } -#endif - -static void print_usage(void) -{ - fprintf(stderr, "usage: btrfs-vol [options] mount_point\n"); - fprintf(stderr, "\t-a device add one device\n"); - fprintf(stderr, "\t-b balance chunks across all devices\n"); - fprintf(stderr, "\t-r device remove one device\n"); - exit(1); -} - -static struct option long_options[] = { - /* { "byte-count", 1, NULL, 'b' }, */ - { "add", 1, NULL, 'a' }, - { "balance", 0, NULL, 'b' }, - { "remove", 1, NULL, 'r' }, - { 0, 0, 0, 0} -}; - -int main(int ac, char **av) -{ - struct stat st; - char *device = NULL; - char *mnt = NULL; - int ret; - int option_index = 0; - int cmd = 0; - int fd; - int devfd = 0; - DIR *dirstream; - struct btrfs_ioctl_vol_args args; - u64 dev_block_count = 0; - - printf( "**\n" - "** WARNING: this program is considered deprecated\n" - "** Please consider to switch to the btrfs utility\n" - "**\n"); - - while(1) { - int c; - c = getopt_long(ac, av, "a:br:", long_options, - &option_index); - if (c < 0) - break; - switch(c) { - case 'a': - device = strdup(optarg); - cmd = BTRFS_IOC_ADD_DEV; - break; - case 'b': - cmd = BTRFS_IOC_BALANCE; - break; - case 'r': - device = strdup(optarg); - cmd = BTRFS_IOC_RM_DEV; - break; - default: - print_usage(); - } - } - ac = ac - optind; - if (ac == 0 || !cmd) { - if (!ac) - fprintf(stderr, "No mountpoint specified\n"); - else - fprintf(stderr, "No command specified\n"); - print_usage(); - } - mnt = av[optind]; - - if (device && strcmp(device, "missing") == 0 && - cmd == BTRFS_IOC_RM_DEV) { - fprintf(stderr, "removing missing devices from %s\n", mnt); - } else if (cmd != BTRFS_IOC_BALANCE) { - if (cmd == BTRFS_IOC_ADD_DEV) { - ret = check_mounted(device); - if (ret < 0) { - fprintf(stderr, - "error checking %s mount status\n", - device); - exit(1); - } - if (ret == 1) { - fprintf(stderr, "%s is mounted\n", device); - exit(1); - } - } - devfd = open(device, O_RDWR); - if (devfd < 0) { - fprintf(stderr, "Unable to open device %s\n", device); - exit(1); - } - ret = fstat(devfd, &st); - if (ret) { - fprintf(stderr, "Unable to stat %s\n", device); - exit(1); - } - if (!S_ISBLK(st.st_mode)) { - fprintf(stderr, "%s is not a block device\n", device); - exit(1); - } - } - dirstream = opendir(mnt); - if (!dirstream) { - fprintf(stderr, "Unable to open directory %s\n", mnt); - exit(1); - } - if (cmd == BTRFS_IOC_ADD_DEV) { - int mixed = 0; - - ret = btrfs_prepare_device(devfd, device, 1, &dev_block_count, - 0, &mixed, 0); - if (ret) { - fprintf(stderr, "Unable to init %s\n", device); - exit(1); - } - } - fd = dirfd(dirstream); - if (device) - strncpy_null(args.name, device); - else - args.name[0] = '\0'; - - ret = ioctl(fd, cmd, &args); - printf("ioctl returns %d\n", ret); - return 0; -} - |