/// open device static void fs_open(char* device){ #ifndef VMFS5_ZLA_BASE vmfs_lvm_t *lvm; #endif vmfs_flags_t flags; char *mdev[] = {device, NULL}; vmfs_host_init(); flags.packed = 0; flags.allow_missing_extents = 1; log_mesg(3, 0, 0, fs_opt.debug, "%s: device %s\n", __FILE__, device); #ifdef VMFS5_ZLA_BASE if (!(fs=vmfs_fs_open(mdev, flags))) { #else if (!(lvm = vmfs_lvm_create(flags))) { log_mesg(0, 1, 1, fs_opt.debug, "%s: Unable to create LVM structure\n", __FILE__); } if (vmfs_lvm_add_extent(lvm, vmfs_vol_open(device, flags)) == -1) { log_mesg(0, 1, 1, fs_opt.debug, "%s: Unable to open device/file \"%s\".\n", __FILE__, device); } if (!(fs = vmfs_fs_create(lvm))) { log_mesg(0, 1, 1, fs_opt.debug, "%s: Unable to open filesystem\n", __FILE__); } if (vmfs_fs_open(fs) == -1) { #endif log_mesg(0, 1, 1, fs_opt.debug, "%s: Unable to open volume.\n", __FILE__); } if (!(root_dir = vmfs_dir_open_from_blkid(fs,VMFS_BLK_FD_BUILD(0,0,0)))) { log_mesg(0, 1, 1, fs_opt.debug, "%s: Unable to open root directory\n", __FILE__); } } /// close device static void fs_close(){ vmfs_dir_close(root_dir); vmfs_fs_close(fs); }
int main(int argc,char *argv[]) { vmfs_fs_t *fs; struct cmd *cmd = NULL; int arg, ret; vmfs_flags_t flags; if (argc < 3) { show_usage(argv[0]); return(0); } /* Scan arguments for a command */ for (arg = 1; arg < argc; arg++) { if ((cmd = cmd_find(argv[arg]))) break; } if (!cmd) { show_usage(argv[0]); return(0); } flags.packed = 0; flags.read_write = 1; argv[arg] = NULL; if (!(fs = vmfs_fs_open(&argv[1], flags))) { fprintf(stderr,"Unable to open filesystem\n"); exit(EXIT_FAILURE); } ret = cmd->fn(fs,argc-arg-1,&argv[arg+1]); vmfs_fs_close(fs); return(ret); }