static int lfs_cp(int argc, char **argv);
static int lfs_ls(int argc, char **argv);
static int lfs_poollist(int argc, char **argv);
+static int lfs_path2fid(int argc, char **argv);
/* all avaialable commands */
command_t cmdlist[] = {
{"ls", lfs_ls, 0,
"Remote user list directory contents.\n"
"usage: ls [OPTION]... [FILE]..."},
+ {"path2fid", lfs_path2fid, 0, "Display the fid for a given path.\n"
+ "usage: path2fid <path>"},
{"help", Parser_help, 0, "help"},
{"exit", Parser_quit, 0, "quit"},
{"quit", Parser_quit, 0, "quit"},
break;
case FIND_POOL_OPT:
new_fashion = 1;
- if (strlen(optarg) > MAXPOOLNAME) {
+ if (strlen(optarg) > LOV_MAXPOOLNAME) {
fprintf(stderr,
"Pool name %s is too long"
" (max is %d)\n", optarg,
- MAXPOOLNAME);
+ LOV_MAXPOOLNAME);
return -1;
}
/* we do check for empty pool because empty pool
* is used to find V1 lov attributes */
- strncpy(param.poolname, optarg, MAXPOOLNAME);
- param.poolname[MAXPOOLNAME] = '\0';
+ strncpy(param.poolname, optarg, LOV_MAXPOOLNAME);
+ param.poolname[LOV_MAXPOOLNAME] = '\0';
param.exclude_pool = !!neg_opt;
param.check_pool = 1;
break;
return rc;
}
+static int lfs_path2fid(int argc, char **argv)
+{
+ char *path;
+ unsigned long long seq;
+ unsigned long oid, ver;
+ int rc;
+
+ if (argc != 2)
+ return CMD_HELP;
+
+ path = argv[1];
+ rc = llapi_path2fid(path, &seq, &oid, &ver);
+ if (rc) {
+ fprintf(stderr, "error: can't get fid for %s\n", path);
+ return rc;
+ }
+
+ printf("%llu:%lu", seq, oid);
+ if (ver)
+ printf(":%lu", ver);
+
+ printf("\n");
+
+ return 0;
+}
+
#define COOK(value) \
({ \
int radix = 0; \