Lines 53-58
Link Here
|
53 |
static void label_clear(struct gctl_req *req); |
53 |
static void label_clear(struct gctl_req *req); |
54 |
static void label_dump(struct gctl_req *req); |
54 |
static void label_dump(struct gctl_req *req); |
55 |
static void label_label(struct gctl_req *req); |
55 |
static void label_label(struct gctl_req *req); |
|
|
56 |
static void label_refresh(struct gctl_req *req); |
56 |
|
57 |
|
57 |
struct g_command PUBSYM(class_commands)[] = { |
58 |
struct g_command PUBSYM(class_commands)[] = { |
58 |
{ "clear", G_FLAG_VERBOSE, label_main, G_NULL_OPTS, |
59 |
{ "clear", G_FLAG_VERBOSE, label_main, G_NULL_OPTS, |
Lines 74-79
Link Here
|
74 |
{ "label", G_FLAG_VERBOSE | G_FLAG_LOADKLD, label_main, G_NULL_OPTS, |
75 |
{ "label", G_FLAG_VERBOSE | G_FLAG_LOADKLD, label_main, G_NULL_OPTS, |
75 |
"[-v] name dev" |
76 |
"[-v] name dev" |
76 |
}, |
77 |
}, |
|
|
78 |
{ "refresh", 0, label_main, G_NULL_OPTS, |
79 |
"dev ..." |
80 |
}, |
77 |
{ "stop", G_FLAG_VERBOSE, NULL, |
81 |
{ "stop", G_FLAG_VERBOSE, NULL, |
78 |
{ |
82 |
{ |
79 |
{ 'f', "force", NULL, G_TYPE_BOOL }, |
83 |
{ 'f', "force", NULL, G_TYPE_BOOL }, |
Lines 105-110
Link Here
|
105 |
label_clear(req); |
109 |
label_clear(req); |
106 |
else if (strcmp(name, "dump") == 0) |
110 |
else if (strcmp(name, "dump") == 0) |
107 |
label_dump(req); |
111 |
label_dump(req); |
|
|
112 |
else if (strcmp(name, "refresh") == 0) |
113 |
label_refresh(req); |
108 |
else |
114 |
else |
109 |
gctl_error(req, "Unknown command: %s.", name); |
115 |
gctl_error(req, "Unknown command: %s.", name); |
110 |
} |
116 |
} |
Lines 223-225
Link Here
|
223 |
printf("\n"); |
229 |
printf("\n"); |
224 |
} |
230 |
} |
225 |
} |
231 |
} |
|
|
232 |
|
233 |
static void |
234 |
label_refresh(struct gctl_req *req) |
235 |
{ |
236 |
const char *name; |
237 |
int i, nargs; |
238 |
|
239 |
nargs = gctl_get_int(req, "nargs"); |
240 |
if (nargs < 1) { |
241 |
gctl_error(req, "Too few arguments."); |
242 |
return; |
243 |
} |
244 |
|
245 |
for (i = 0; i < nargs; i++) { |
246 |
name = gctl_get_ascii(req, "arg%d", i); |
247 |
int fd = g_open(name, 1); |
248 |
if (fd == -1) { |
249 |
printf("Can't refresh metadata from %s: %s.\n", |
250 |
name, strerror(errno)); |
251 |
} |
252 |
else { |
253 |
printf("Metadata from %s refreshed.\n", name); |
254 |
(void)g_close(fd); |
255 |
} |
256 |
} |
257 |
} |