summaryrefslogtreecommitdiff
path: root/kvmd/apps
diff options
context:
space:
mode:
authorMaxim Devaev <[email protected]>2022-04-10 06:00:10 +0300
committerMaxim Devaev <[email protected]>2022-04-10 06:00:10 +0300
commit486f1be9867fcb3220a2918ddd5b0371ece17d5d (patch)
tree22f6297f9a4755631c0aee3397980a8e2dde0d22 /kvmd/apps
parent122242ea472684434989706253bb38ad48a6cbd6 (diff)
get rid of the otg-unlock helper
Diffstat (limited to 'kvmd/apps')
-rw-r--r--kvmd/apps/otg/__init__.py7
-rw-r--r--kvmd/apps/otgmsd/__init__.py25
2 files changed, 4 insertions, 28 deletions
diff --git a/kvmd/apps/otg/__init__.py b/kvmd/apps/otg/__init__.py
index 1d33b98e..e84a7f00 100644
--- a/kvmd/apps/otg/__init__.py
+++ b/kvmd/apps/otg/__init__.py
@@ -71,7 +71,7 @@ def _rmdir(path: str) -> None:
def _unlink(path: str, optional: bool=False) -> None:
logger = get_logger()
if optional and not os.access(path, os.F_OK):
- logger.info("SKIP-RM - %s", path)
+ logger.info("RM ------ [SKIPPED] %s", path)
return
logger.info("RM ------ %s", path)
os.unlink(path)
@@ -185,6 +185,7 @@ class _GadgetConfig:
_chown(join(func_path, "lun.0/cdrom"), user)
_chown(join(func_path, "lun.0/ro"), user)
_chown(join(func_path, "lun.0/file"), user)
+ _chown(join(func_path, "lun.0/forced_eject"), user)
_symlink(func_path, join(self.__profile_path, func))
name = ("Mass Storage Drive" if self.__msd_instance == 0 else f"Extra Drive #{self.__msd_instance}")
self.__create_meta(func, name)
@@ -269,8 +270,6 @@ def _cmd_start(config: Section) -> None: # pylint: disable=too-many-statements
logger.info("Enabling the gadget ...")
_write(join(gadget_path, "UDC"), udc)
time.sleep(config.otg.init_delay)
-
- logger.info("Setting up permissions ...")
_chown(join(gadget_path, "UDC"), config.otg.user)
_chown(profile_path, config.otg.user)
@@ -290,7 +289,7 @@ def _cmd_stop(config: Section) -> None:
logger.info("Disabling gadget %r ...", config.otg.gadget)
_write(join(gadget_path, "UDC"), "\n")
- _unlink(join(gadget_path, "os_desc", usb.G_PROFILE_NAME), True)
+ _unlink(join(gadget_path, "os_desc", usb.G_PROFILE_NAME), optional=True)
profile_path = join(gadget_path, usb.G_PROFILE)
for func in os.listdir(profile_path):
diff --git a/kvmd/apps/otgmsd/__init__.py b/kvmd/apps/otgmsd/__init__.py
index 5187a72d..2e109d96 100644
--- a/kvmd/apps/otgmsd/__init__.py
+++ b/kvmd/apps/otgmsd/__init__.py
@@ -21,15 +21,12 @@
import os
-import signal
import errno
import argparse
from typing import List
from typing import Optional
-import psutil
-
from ...validators.basic import valid_bool
from ...validators.basic import valid_int_f0
from ...validators.os import valid_abs_file
@@ -59,21 +56,6 @@ def _set_param(gadget: str, instance: int, param: str, value: str) -> None:
raise
-def _unlock() -> None:
- # https://github.com/torvalds/linux/blob/3039fad/drivers/usb/gadget/function/f_mass_storage.c#L2924
- found = False
- for proc in psutil.process_iter():
- attrs = proc.as_dict(attrs=["name", "exe", "pid"])
- if attrs.get("name") == "file-storage" and not attrs.get("exe"):
- try:
- proc.send_signal(signal.SIGUSR1)
- found = True
- except Exception as err:
- raise SystemExit(f"Can't send SIGUSR1 to MSD kernel thread with pid={attrs['pid']}: {err}")
- if not found:
- raise SystemExit("Can't find MSD kernel thread")
-
-
# =====
def main(argv: Optional[List[str]]=None) -> None:
(parent_parser, argv, config) = init(
@@ -88,8 +70,6 @@ def main(argv: Optional[List[str]]=None) -> None:
)
parser.add_argument("-i", "--instance", default=0, type=valid_int_f0,
metavar="<N>", help="Drive instance (0 for KVMD drive)")
- parser.add_argument("--unlock", action="store_true",
- help="Send SIGUSR1 to MSD kernel thread")
parser.add_argument("--set-cdrom", default=None, type=valid_bool,
metavar="<1|0|yes|no>", help="Set CD-ROM flag")
parser.add_argument("--set-rw", default=None, type=valid_bool,
@@ -107,11 +87,8 @@ def main(argv: Optional[List[str]]=None) -> None:
set_param = (lambda param, value: _set_param(config.otg.gadget, options.instance, param, value))
get_param = (lambda param: _get_param(config.otg.gadget, options.instance, param))
- if options.unlock:
- _unlock()
-
if options.eject:
- set_param("file", "")
+ set_param("forced_eject", "")
if options.set_cdrom is not None:
set_param("cdrom", str(int(options.set_cdrom)))