uvol: fixes and adapt to in-tree ucode

Don't use features which are not yet present in the version of ucode
currently shipped with OpenWrt (such as `fs.access()` or assuming raw
mode by default).
Fix syntax error in main executable.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
This commit is contained in:
Daniel Golle 2022-04-03 16:13:45 +01:00
parent 8988b0a32f
commit 74caff0d59
No known key found for this signature in database
GPG Key ID: 5A8F39C31C3217CA
4 changed files with 12 additions and 10 deletions

View File

@ -32,7 +32,7 @@ define Package/uvol
endef
define Package/uvol/description
'uvol' is tool to automate storage volume handling on embedded
'uvol' is a tool to automate storage volume handling on embedded
devices in a generic way.
Depending on what is available, 'uvol' will use either UBI or LVM2
as storage backends and transparently offer identical operations on

View File

@ -108,6 +108,9 @@ let get_bootdev = function(void) {
// adapted from /lib/upgrade/common.sh
let get_partition = function(dev, num) {
if (!dev)
return null;
for (let bd in get_blockdevs()) {
let r = get_uevent_major_minor(sprintf("/sys/class/block/%s/uevent", bd));
if (r.major == dev.major && r.minor == dev.minor + num) {

View File

@ -50,6 +50,9 @@ function pvs() {
}
include("/usr/lib/uvol/blockdev_common.uc");
let rootdev = blockdev_common.get_partition(blockdev_common.get_bootdev(), 0);
if (!rootdev)
return null;
let tmp = lvm("pvs", "-o", "vg_name", "-S", sprintf("\"pv_name=~^/dev/%s.*\$\"", rootdev));
if (tmp.report.pv)
return tmp.report.pv[0].vg_name;
@ -112,8 +115,8 @@ function getdev(lv) {
function lvm_init(ctx) {
cursor = ctx.cursor;
fs = ctx.fs;
if (!fs.access(lvm_exec, "x"))
return false;
// if (!fs.access(lvm_exec, "x"))
// return false;
vg_name = pvs();
if (!vg_name)

View File

@ -1,4 +1,4 @@
#!/usr/bin/ucode
#!/usr/bin/ucode -R
// SPDX-License-Identifier: GPL-2.0-or-later
// uvol - storage volume manager for OpenWrt
// (c) 2022 Daniel Golle <daniel@makrotopia.org>
@ -25,11 +25,7 @@ commands:
1 - volume is not ready for use
2 - volume doesn'y exist
write volname size write to volume from stdin, size in bytes
"
function help() {
printf("%s", help_output);
);
";
let fs = require("fs");
let uci = require("uci");
@ -71,7 +67,7 @@ if (!backend) {
let cmd = shift(ARGV);
if (!cmd || cmd == "-h" || cmd == "help") {
help();
printf("%s", help_output);
return cmd?0:22;
}