Skip to content

Commit

Permalink
Remove obsolete log level mapping, use spdlog mapping instead
Browse files Browse the repository at this point in the history
  • Loading branch information
uweseimet committed Sep 7, 2023
1 parent 1d70aee commit a66b496
Show file tree
Hide file tree
Showing 7 changed files with 148 additions and 106 deletions.
10 changes: 5 additions & 5 deletions cpp/piscsi/piscsi_executor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -190,14 +190,14 @@ bool PiscsiExecutor::SetLogLevel(const string& log_level) const
}
}

if (const auto& it = log_level_mapping.find(level); it != log_level_mapping.end()) {
set_level(it->second);
}
else {
spdlog::warn("Invalid log level '" + log_level +"'");
const level::level_enum l = level::from_str(level);
// Compensate for spdlog using 'off' for unknown levels
if (to_string_view(l) != level) {
spdlog::warn("Invalid log level '" + level +"'");
return false;
}

set_level(l);
DeviceLogger::SetLogIdAndLun(id, lun);

if (id != -1) {
Expand Down
9 changes: 0 additions & 9 deletions cpp/piscsi/piscsi_executor.h
Original file line number Diff line number Diff line change
Expand Up @@ -70,13 +70,4 @@ class PiscsiExecutor
const ProtobufSerializer serializer;

unordered_set<int> reserved_ids;

static inline const unordered_map<string, level::level_enum> log_level_mapping = {
{ "trace", level::trace },
{ "debug", level::debug },
{ "info", level::info },
{ "warn", level::warn },
{ "err", level::err },
{ "off", level::off }
};
};
4 changes: 2 additions & 2 deletions cpp/test/piscsi_executor_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -224,8 +224,8 @@ TEST_F(PiscsiExecutorTest, SetLogLevel)
EXPECT_TRUE(executor.SetLogLevel("trace"));
EXPECT_TRUE(executor.SetLogLevel("debug"));
EXPECT_TRUE(executor.SetLogLevel("info"));
EXPECT_TRUE(executor.SetLogLevel("warn"));
EXPECT_TRUE(executor.SetLogLevel("err"));
EXPECT_TRUE(executor.SetLogLevel("warning"));
EXPECT_TRUE(executor.SetLogLevel("error"));
EXPECT_TRUE(executor.SetLogLevel("off"));
EXPECT_FALSE(executor.SetLogLevel("xyz"));
}
Expand Down
2 changes: 1 addition & 1 deletion doc/piscsi.1
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ The optional block size, either 512, 1024, 2048 or 4096 bytes. Default size is 5
The default folder for image files. For files in this folder no absolute path needs to be specified. The initial default folder is '~/images'.
.TP
.BR \-L\fI " " \fILOG_LEVEL[:ID:[LUN]]
The piscsi log level (trace, debug, info, warn, err, off). The default log level is 'info' for all devices unless a particular device ID and an optional LUN was provided.
The piscsi log level (trace, debug, info, warning, error, off). The default log level is 'info' for all devices unless a particular device ID and an optional LUN was provided.
.TP
.BR \-P\fI " " \fIACCESS_TOKEN_FILE
Enable authentication and read the access token from the specified file. The access token file must be owned by root and must be readable by root only.
Expand Down
134 changes: 83 additions & 51 deletions doc/piscsi_man_page.txt
Original file line number Diff line number Diff line change
@@ -1,119 +1,151 @@
!! ------ THIS FILE IS AUTO_GENERATED! DO NOT MANUALLY UPDATE!!!
!! ------ The native file is piscsi.1. Re-run 'make docs' after updating


piscsi(1) General Commands Manual piscsi(1)
!! ------ The native file is piscsi.1. Re-run 'make docs' after updating\n\n
piscsi(1) General Commands Manual piscsi(1)

NAME
piscsi - Emulates SCSI devices using the Raspberry Pi GPIO pins

SYNOPSIS
piscsi [-F FOLDER] [-L LOG_LEVEL[:ID:[LUN]]] [-P ACCESS_TOKEN_FILE] [-R SCAN_DEPTH] [-h] [-n VENDOR:PRODUCT:REVISION] [-p
PORT] [-r RESERVED_IDS] [-n TYPE] [-v] [-z LOCALE] [-IDn:[u] FILE] [-HDn[:u] FILE]...
piscsi [-F FOLDER] [-L LOG_LEVEL[:ID:[LUN]]] [-P ACCESS_TOKEN_FILE] [-R
SCAN_DEPTH] [-h] [-n VENDOR:PRODUCT:REVISION] [-p PORT] [-r RE‐
SERVED_IDS] [-n TYPE] [-v] [-z LOCALE] [-IDn:[u] FILE] [-HDn[:u]
FILE]...

DESCRIPTION
piscsi emulates SCSI devices using the Raspberry Pi GPIO pins.

In the arguments to PiSCSI, one or more SCSI (-IDn[:u]) devices can be specified. The number (n) after the ID or HD iden‐
tifier specifies the ID number for that device. The optional number (u) specifies the LUN (logical unit) for that device.
The default LUN is 0. For SCSI: The ID is limited from 0-7. However, typically SCSI ID 7 is reserved for the "initiator"
(the host computer). The LUN is limited from 0-31.
In the arguments to PiSCSI, one or more SCSI (-IDn[:u]) devices can be
specified. The number (n) after the ID or HD identifier specifies the
ID number for that device. The optional number (u) specifies the LUN
(logical unit) for that device. The default LUN is 0. For SCSI: The ID
is limited from 0-7. However, typically SCSI ID 7 is reserved for the
"initiator" (the host computer). The LUN is limited from 0-31.

PiSCSI will determine the type of device based upon the file extension of the FILE argument.
PiSCSI will determine the type of device based upon the file extension
of the FILE argument.
hd1: SCSI Hard Disk image (generic, non-removable, SCSI-1)
hds: SCSI Hard Disk image (generic, non-removable)
hdr: SCSI Hard Disk image (generic, removable)
hdn: SCSI Hard Disk image (NEC compatible - only used with PC-98 computers)
hdi: SCSI Hard Disk image (Anex86 proprietary - only used with PC-98 computers)
nhd: SCSI Hard Disk image (T98Next proprietary - only used with PC-98 computers)
hda: SCSI Hard Disk image (Apple compatible - typically used with Macintosh computers)
mos: SCSI Magneto-Optical image (generic - typically used with NeXT, X68000, etc.)
hdn: SCSI Hard Disk image (NEC compatible - only used with PC-98
computers)
hdi: SCSI Hard Disk image (Anex86 proprietary - only used with
PC-98 computers)
nhd: SCSI Hard Disk image (T98Next proprietary - only used with
PC-98 computers)
hda: SCSI Hard Disk image (Apple compatible - typically used with
Macintosh computers)
mos: SCSI Magneto-Optical image (generic - typically used with
NeXT, X68000, etc.)
iso: SCSI CD-ROM or DVD-ROM image (ISO 9660 image)
is1: SCSI CD-ROM or DVD-ROM image (ISO 9660 image, SCSI-1)

For example, if you want to specify an Apple-compatible HD image on ID 0, you can use the following command:
For example, if you want to specify an Apple-compatible HD image on ID
0, you can use the following command:
sudo piscsi -ID0 /path/to/drive/hdimage.hda

Note: PiSCSI is a fork of RaSCSI. The two cannot be run in parallel on the same system.
Note: PiSCSI is a fork of RaSCSI. The two cannot be run in parallel on
the same system.

Once PiSCSI starts, it will open a socket (default port is 6868) to allow external management commands. If another process
is using this port, PiSCSI will terminate, since it is likely another instance of PiSCSI or RaSCSI. Once PiSCSI has ini‐
tialized, the scsictl utility can be used to send commands.
Once PiSCSI starts, it will open a socket (default port is 6868) to al‐
low external management commands. If another process is using this
port, PiSCSI will terminate, since it is likely another instance of
PiSCSI or RaSCSI. Once PiSCSI has initialized, the scsictl utility can
be used to send commands.

To quit PiSCSI, press Control + C. If it is running in the background, you can kill it using an INT signal.
To quit PiSCSI, press Control + C. If it is running in the background,
you can kill it using an INT signal.

OPTIONS
-b BLOCK_SIZE
The optional block size, either 512, 1024, 2048 or 4096 bytes. Default size is 512 bytes.
The optional block size, either 512, 1024, 2048 or 4096 bytes.
Default size is 512 bytes.

-F FOLDER
The default folder for image files. For files in this folder no absolute path needs to be specified. The initial de‐
fault folder is '~/images'.
The default folder for image files. For files in this folder no
absolute path needs to be specified. The initial default folder
is '~/images'.

-L LOG_LEVEL[:ID:[LUN]]
The piscsi log level (trace, debug, info, warn, err, off). The default log level is 'info' for all devices unless a
particular device ID and an optional LUN was provided.
The piscsi log level (trace, debug, info, warning, error, off).
The default log level is 'info' for all devices unless a partic‐
ular device ID and an optional LUN was provided.

-P ACCESS_TOKEN_FILE
Enable authentication and read the access token from the specified file. The access token file must be owned by root
and must be readable by root only.
Enable authentication and read the access token from the speci‐
fied file. The access token file must be owned by root and must
be readable by root only.

-R SCAN_DEPTH
Scan for image files recursively, up to a depth of SCAN_DEPTH. Depth 0 means to ignore any folders within the de‐
fault image filder. Be careful when using this option with many sub-folders in the default image folder. The default
depth is 1.
Scan for image files recursively, up to a depth of SCAN_DEPTH.
Depth 0 means to ignore any folders within the default image
filder. Be careful when using this option with many sub-folders
in the default image folder. The default depth is 1.

-h Show a help page.

-n VENDOR:PRODUCT:REVISION
Set the vendor, product and revision for the device, to be returned with the INQUIRY data. A complete set of name
components must be provided. VENDOR may have up to 8, PRODUCT up to 16, REVISION up to 4 characters. Padding with
blanks to the maxium length is automatically applied. Once set the name of a device cannot be changed.
Set the vendor, product and revision for the device, to be re‐
turned with the INQUIRY data. A complete set of name components
must be provided. VENDOR may have up to 8, PRODUCT up to 16, RE‐
VISION up to 4 characters. Padding with blanks to the maxium
length is automatically applied. Once set the name of a device
cannot be changed.

-p PORT
The piscsi server port, default is 6868.

-r RESERVED_IDS
Comma-separated list of IDs to reserve. Pass an empty list in order to not reserve anything. -p TYPE The optional
case-insensitive device type (SAHD, SCHD, SCRM, SCCD, SCMO, SCBR, SCDP, SCLP, SCHS). If no type is specified for de‐
vices that support an image file, piscsi tries to derive the type from the file extension.
Comma-separated list of IDs to reserve. Pass an empty list in
order to not reserve anything. -p TYPE The optional case-insen‐
sitive device type (SAHD, SCHD, SCRM, SCCD, SCMO, SCBR, SCDP,
SCLP, SCHS). If no type is specified for devices that support an
image file, piscsi tries to derive the type from the file exten‐
sion.

-v Display the piscsi version.

-z LOCALE
Overrides the default locale for client-faces error messages. The client can override the locale.
Overrides the default locale for client-faces error messages.
The client can override the locale.

-IDn[:u] FILE
n is the SCSI ID number (0-7). u (0-31) is the optional LUN (logical unit). The default LUN is 0.

FILE is the name of the image file to use for the SCSI device. For devices that do not support an image file (SCBR,
SCDP, SCLP, SCHS) the filename may have a special meaning or a dummy name can be provided. For SCBR and SCDP it is
an optioinal prioritized list of network interfaces, an optional IP address and netmask, e.g. "inter‐
face=eth0,eth1,wlan0:inet=10.10.20.1/24". For SCLP it is the print command to be used and a reservation timeout in
seconds, e.g. "cmd=lp -oraw %f:timeout=60".
n is the SCSI ID number (0-7). u (0-31) is the optional LUN
(logical unit). The default LUN is 0.

FILE is the name of the image file to use for the SCSI device.
For devices that do not support an image file (SCBR, SCDP, SCLP,
SCHS) the filename may have a special meaning or a dummy name
can be provided. For SCBR and SCDP it is an optioinal priori‐
tized list of network interfaces, an optional IP address and
netmask, e.g. "interface=eth0,eth1,wlan0:inet=10.10.20.1/24".
For SCLP it is the print command to be used and a reservation
timeout in seconds, e.g. "cmd=lp -oraw %f:timeout=60".

FILE is the name of the image file to use for the SCSI device.

EXAMPLES
Launch PiSCSI with no emulated drives attached:
piscsi

Launch PiSCSI with an Apple hard drive image as ID 0 and a CD-ROM as ID 2
Launch PiSCSI with an Apple hard drive image as ID 0 and a CD-ROM as ID
2
piscsi -ID0 /path/to/harddrive.hda -ID2 /path/to/cdimage.iso

Launch PiSCSI with a removable SCSI drive image as ID 0 and the raw device file /dev/hdb (e.g. a USB stick) and a DaynaPort
network adapter as ID 6:
Launch PiSCSI with a removable SCSI drive image as ID 0 and the raw de‐
vice file /dev/hdb (e.g. a USB stick) and a DaynaPort network adapter
as ID 6:
piscsi -ID0 -t scrm /dev/hdb -ID6 -t scdp daynaport

To create an empty, 100MiB HD image, use the following command:
dd if=/dev/zero of=/path/to/newimage.hda bs=512 count=204800

In case the fallocate command is available a much faster alternative to the dd command is:
In case the fallocate command is available a much faster alternative to
the dd command is:
fallocate -l 104857600 /path/to/newimage.hda

SEE ALSO
scsictl(1), scsimon(1), scsidump(1)

Full documentation is available at: <https://www.piscsi.com>

piscsi(1)
piscsi(1)
2 changes: 1 addition & 1 deletion doc/scsictl.1
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ Set the default image folder.
Gets the list of reserved device IDs.
.TP
.BR \-L\fI " "\fILOG_LEVEL
Set the piscsi log level (trace, debug, info, warn, err, off).
Set the piscsi log level (trace, debug, info, warning, error, off).
.TP
.BR \-h\fI " " \fIHOST
The piscsi host to connect to, default is 'localhost'.
Expand Down
Loading

0 comments on commit a66b496

Please sign in to comment.