2020-08-28 14:18:02 +00:00
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
//
|
|
|
|
|
// SCSI Target Emulator RaSCSI (*^..^*)
|
|
|
|
|
// for Raspberry Pi
|
|
|
|
|
//
|
|
|
|
|
// Copyright (C) 2001-2006 PI.(ytanaka@ipc-tokai.or.jp)
|
|
|
|
|
// Copyright (C) 2014-2020 GIMONS
|
2021-03-08 01:11:17 +00:00
|
|
|
|
// Copyright (C) akuker
|
2020-08-28 14:18:02 +00:00
|
|
|
|
//
|
2021-03-08 01:11:17 +00:00
|
|
|
|
// Licensed under the BSD 3-Clause License.
|
|
|
|
|
// See LICENSE file in the project root folder.
|
2020-08-28 14:18:02 +00:00
|
|
|
|
//
|
2021-03-08 01:11:17 +00:00
|
|
|
|
// [ SASI device controller ]
|
2020-08-28 14:18:02 +00:00
|
|
|
|
//
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
#include "controllers/sasidev_ctrl.h"
|
|
|
|
|
#include "filepath.h"
|
|
|
|
|
#include "gpiobus.h"
|
|
|
|
|
#include "devices/scsi_host_bridge.h"
|
2021-02-07 19:00:48 +00:00
|
|
|
|
#include "devices/scsi_daynaport.h"
|
Refactoring, device handling extensions, additional settings, improved error handling, 64 bit OS support, fixed issues (#184)
* Device type unification, support of removable media
* Added support for .hdr extension
* Removable flag cleanup
* Manpage update
* Enriched PbOperation with PbDevice
* Added file size to PbImageFile
* Added device list support
* Set image_file
* Make remote interface more robust by ignoring SIGPIPE
* Return status only once
* Fixed typo
* Error handling update
* When starting rascsi parse everything before attaching devices
* Added dry run mode
* Comment update
* Updated logging
* Added Device base class, Disk class inherits from it
* Renaming
* Use vectors for controllers and disks, as preparation for using maps
* Updated file support handling
* Comment update
* DaynaPort and Bridge inherit from Device instead of Disk
* ProcessCmd() now works with devices instead of disks
* Renaming
* Added DeviceFactory
* Improved factory
* Comment update
* protected disk_t
* Code cleanup, added translations
* Device name can be set for rascsi
* rasctl can set device name
* Manpage update
* Manpage update
* Formatting update
* Check for missing name
* Initialize fd
* Initialize type
* Fixed string length issue
* Updated capacity formatting
* Fixed typo
* Split PbDevice into device and device definition
* Added TODO
* Renaming
* Renaming
* Device types can be explicitly specified with -t (no FILE:TYPE syntax anymore)
* Fixed compile-time issue
* Removed unused Append mode, updated read-only handling
* Type handling and manpage update
* Cleanup
* rasctl parser cleanup
* Review
* Constructor update
* Added .hdr (SCRM) support to web interface, tested web interface
* Default folder can be set remotely
* Removed deprecated operation
* DETACH supports all parameters in order to detach all devices
* include cleanup
* Logging should not depend on NDEBUG, for RaSCSI it is not peformance-critical
* INFO is default log level
* Exception renaming
* Updated GetPaddedName()
* Inheritance update
* Added BlockDevice class
* Removed unused code
* Updated typedefs
* Revert "Updated typedefs"
This reverts commit 546b46215a4d9b65067a11698e59ab1123cc6d64.
* Removed unused code
* Fixed warnign
* Use standard C++ integer types, use streams to resolve printf data type issues
* Added TODOs
* Added TODO
* Renaming
* Added TODO
* Added TODO
* Improved dry-run
* Code cleanup
* Updated handling of unknown options, code review and cleanup
* Manpage update
* Added PrimaryDevice
* Include cleanup
* Added pure virtual methods
* Comment updates
* Split rasutil
* Replaced some occurrences of BOOL
* Removed obsolete RASCSI definition in xm6.h
* Removed unused code, updated TODOs, replaced BOOL
* Added capacity check (issue #192)
* Fixed (most likely) https://github.com/akuker/RASCSI/issues/191
* Fixed wrong error messages
* For root the default image folder is /home/pi/images, updated error handling
* Dynaport code review
* Improved error handling
* Implemented READ CAPACITY(16)
* Comment update
* Commands can be 16 bytes long
* Implemented READ/WRITE/VERIFY(16)
* Comment update
* Renamed method to reflect the name of the respective SCSI command
* Do not created devices during dryRun
* Fixed padding of SCSIHD_APPLE vendor and product
* Initial implementation
* Updated ReportLuns
* Byte count update
* Fixed typo
* Finalized REPORT LUNS
* Removed TODO
* Updated TODO
* TODO update
* Updated device factory
* Comment update
* 64 bit update, tested on Ubuntu 64 bit system
* Removed assertion
* SCSI hard disks always have Apple specific mode pages (resolves issue #193)
* Error messsage update, 64 bit cleanup
* Reduced streams usage
* Updated handling of device flags
* MOs are protectable
* Removed duplicate error code handling
* Removed duplicate code
* Fixed CmdReadToc buffer overflow (https://github.com/akuker/RASCSI/issues/194)
* Added naive implementation of GET EVENT STATUS NOTIFICATION to avoid wranings
* HD must set removable device bit if the media is removable
* Removed duplicate logging
* Updated daynaport additional length
* Removed broken daynaport REQUEST SENSE. Successfully tested with my Mac.
* EnableInterface should not always return TRUE
* Updated Inquiry
* Updated LUN handling
* Replaced incorrect free by delete
* Updated comments and write-protection handling
* Made default HD name consistent
* STATUS_NOERROR is default
* Fixed Eject
* More eject handling updates
* Manpage updates
* Logging update
* Changed debug level
* Logging update
* Log capacity of all media types
* Logging update
* Encapsulated disk.blocks
* Encapsulated sector size
* Added overrides
* Added more overrides
* Fixed error message
* Fixed typos
* Fixed logging
* Added logging
* Use PrimaryDevice when calling Inquiry
* Comment update
* Changed default buffer size for testing
* Reverted last change
* Removed debug output
* De-inlined methods because optimized code did not work with them inlined
* Web interface can attach Daynaport again
* Improved handling of read-only hard disks
* Fixed issue with "all" semantics of DETACH
* rasctl supports adding removable media devices without providing a filename
* Removed unused flag in PbDeviceDefinition
* Updated rasctl output for ecjected media (resolves issue #199)
* Validate default folder name when changing default folder
2021-08-21 21:45:30 +00:00
|
|
|
|
#include <sstream>
|
2020-08-28 14:18:02 +00:00
|
|
|
|
|
|
|
|
|
//===========================================================================
|
|
|
|
|
//
|
|
|
|
|
// SASI Device
|
|
|
|
|
//
|
|
|
|
|
//===========================================================================
|
|
|
|
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
//
|
|
|
|
|
// Constructor
|
|
|
|
|
//
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
SASIDEV::SASIDEV()
|
|
|
|
|
{
|
|
|
|
|
// Work initialization
|
|
|
|
|
ctrl.phase = BUS::busfree;
|
2021-05-23 19:44:34 +00:00
|
|
|
|
ctrl.m_scsi_id = UNKNOWN_SCSI_ID;
|
2020-08-28 14:18:02 +00:00
|
|
|
|
ctrl.bus = NULL;
|
|
|
|
|
memset(ctrl.cmd, 0x00, sizeof(ctrl.cmd));
|
|
|
|
|
ctrl.status = 0x00;
|
|
|
|
|
ctrl.message = 0x00;
|
|
|
|
|
ctrl.execstart = 0;
|
2021-05-23 19:44:34 +00:00
|
|
|
|
// The initial buffer size will default to either the default buffer size OR
|
|
|
|
|
// the size of an Ethernet message, whichever is larger.
|
|
|
|
|
ctrl.bufsize = std::max(DEFAULT_BUFFER_SIZE, ETH_FRAME_LEN + 16 + ETH_FCS_LEN);
|
2020-08-28 14:18:02 +00:00
|
|
|
|
ctrl.buffer = (BYTE *)malloc(ctrl.bufsize);
|
|
|
|
|
memset(ctrl.buffer, 0x00, ctrl.bufsize);
|
|
|
|
|
ctrl.blocks = 0;
|
|
|
|
|
ctrl.next = 0;
|
|
|
|
|
ctrl.offset = 0;
|
|
|
|
|
ctrl.length = 0;
|
2021-10-13 09:03:31 +00:00
|
|
|
|
ctrl.lun = -1;
|
2020-08-28 14:18:02 +00:00
|
|
|
|
|
|
|
|
|
// Logical unit initialization
|
Refactoring, device handling extensions, additional settings, improved error handling, 64 bit OS support, fixed issues (#184)
* Device type unification, support of removable media
* Added support for .hdr extension
* Removable flag cleanup
* Manpage update
* Enriched PbOperation with PbDevice
* Added file size to PbImageFile
* Added device list support
* Set image_file
* Make remote interface more robust by ignoring SIGPIPE
* Return status only once
* Fixed typo
* Error handling update
* When starting rascsi parse everything before attaching devices
* Added dry run mode
* Comment update
* Updated logging
* Added Device base class, Disk class inherits from it
* Renaming
* Use vectors for controllers and disks, as preparation for using maps
* Updated file support handling
* Comment update
* DaynaPort and Bridge inherit from Device instead of Disk
* ProcessCmd() now works with devices instead of disks
* Renaming
* Added DeviceFactory
* Improved factory
* Comment update
* protected disk_t
* Code cleanup, added translations
* Device name can be set for rascsi
* rasctl can set device name
* Manpage update
* Manpage update
* Formatting update
* Check for missing name
* Initialize fd
* Initialize type
* Fixed string length issue
* Updated capacity formatting
* Fixed typo
* Split PbDevice into device and device definition
* Added TODO
* Renaming
* Renaming
* Device types can be explicitly specified with -t (no FILE:TYPE syntax anymore)
* Fixed compile-time issue
* Removed unused Append mode, updated read-only handling
* Type handling and manpage update
* Cleanup
* rasctl parser cleanup
* Review
* Constructor update
* Added .hdr (SCRM) support to web interface, tested web interface
* Default folder can be set remotely
* Removed deprecated operation
* DETACH supports all parameters in order to detach all devices
* include cleanup
* Logging should not depend on NDEBUG, for RaSCSI it is not peformance-critical
* INFO is default log level
* Exception renaming
* Updated GetPaddedName()
* Inheritance update
* Added BlockDevice class
* Removed unused code
* Updated typedefs
* Revert "Updated typedefs"
This reverts commit 546b46215a4d9b65067a11698e59ab1123cc6d64.
* Removed unused code
* Fixed warnign
* Use standard C++ integer types, use streams to resolve printf data type issues
* Added TODOs
* Added TODO
* Renaming
* Added TODO
* Added TODO
* Improved dry-run
* Code cleanup
* Updated handling of unknown options, code review and cleanup
* Manpage update
* Added PrimaryDevice
* Include cleanup
* Added pure virtual methods
* Comment updates
* Split rasutil
* Replaced some occurrences of BOOL
* Removed obsolete RASCSI definition in xm6.h
* Removed unused code, updated TODOs, replaced BOOL
* Added capacity check (issue #192)
* Fixed (most likely) https://github.com/akuker/RASCSI/issues/191
* Fixed wrong error messages
* For root the default image folder is /home/pi/images, updated error handling
* Dynaport code review
* Improved error handling
* Implemented READ CAPACITY(16)
* Comment update
* Commands can be 16 bytes long
* Implemented READ/WRITE/VERIFY(16)
* Comment update
* Renamed method to reflect the name of the respective SCSI command
* Do not created devices during dryRun
* Fixed padding of SCSIHD_APPLE vendor and product
* Initial implementation
* Updated ReportLuns
* Byte count update
* Fixed typo
* Finalized REPORT LUNS
* Removed TODO
* Updated TODO
* TODO update
* Updated device factory
* Comment update
* 64 bit update, tested on Ubuntu 64 bit system
* Removed assertion
* SCSI hard disks always have Apple specific mode pages (resolves issue #193)
* Error messsage update, 64 bit cleanup
* Reduced streams usage
* Updated handling of device flags
* MOs are protectable
* Removed duplicate error code handling
* Removed duplicate code
* Fixed CmdReadToc buffer overflow (https://github.com/akuker/RASCSI/issues/194)
* Added naive implementation of GET EVENT STATUS NOTIFICATION to avoid wranings
* HD must set removable device bit if the media is removable
* Removed duplicate logging
* Updated daynaport additional length
* Removed broken daynaport REQUEST SENSE. Successfully tested with my Mac.
* EnableInterface should not always return TRUE
* Updated Inquiry
* Updated LUN handling
* Replaced incorrect free by delete
* Updated comments and write-protection handling
* Made default HD name consistent
* STATUS_NOERROR is default
* Fixed Eject
* More eject handling updates
* Manpage updates
* Logging update
* Changed debug level
* Logging update
* Log capacity of all media types
* Logging update
* Encapsulated disk.blocks
* Encapsulated sector size
* Added overrides
* Added more overrides
* Fixed error message
* Fixed typos
* Fixed logging
* Added logging
* Use PrimaryDevice when calling Inquiry
* Comment update
* Changed default buffer size for testing
* Reverted last change
* Removed debug output
* De-inlined methods because optimized code did not work with them inlined
* Web interface can attach Daynaport again
* Improved handling of read-only hard disks
* Fixed issue with "all" semantics of DETACH
* rasctl supports adding removable media devices without providing a filename
* Removed unused flag in PbDeviceDefinition
* Updated rasctl output for ecjected media (resolves issue #199)
* Validate default folder name when changing default folder
2021-08-21 21:45:30 +00:00
|
|
|
|
for (int i = 0; i < UnitMax; i++) {
|
2020-08-28 14:18:02 +00:00
|
|
|
|
ctrl.unit[i] = NULL;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
//
|
|
|
|
|
// Destructor
|
|
|
|
|
//
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
SASIDEV::~SASIDEV()
|
|
|
|
|
{
|
|
|
|
|
// Free the buffer
|
|
|
|
|
if (ctrl.buffer) {
|
|
|
|
|
free(ctrl.buffer);
|
|
|
|
|
ctrl.buffer = NULL;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
//
|
|
|
|
|
// Device reset
|
|
|
|
|
//
|
|
|
|
|
//---------------------------------------------------------------------------
|
2021-07-26 18:33:36 +00:00
|
|
|
|
void SASIDEV::Reset()
|
2020-08-28 14:18:02 +00:00
|
|
|
|
{
|
|
|
|
|
// Work initialization
|
|
|
|
|
memset(ctrl.cmd, 0x00, sizeof(ctrl.cmd));
|
|
|
|
|
ctrl.phase = BUS::busfree;
|
|
|
|
|
ctrl.status = 0x00;
|
|
|
|
|
ctrl.message = 0x00;
|
|
|
|
|
ctrl.execstart = 0;
|
|
|
|
|
memset(ctrl.buffer, 0x00, ctrl.bufsize);
|
|
|
|
|
ctrl.blocks = 0;
|
|
|
|
|
ctrl.next = 0;
|
|
|
|
|
ctrl.offset = 0;
|
|
|
|
|
ctrl.length = 0;
|
|
|
|
|
|
|
|
|
|
// Unit initialization
|
2021-07-07 21:46:45 +00:00
|
|
|
|
for (int i = 0; i < UnitMax; i++) {
|
2020-08-28 14:18:02 +00:00
|
|
|
|
if (ctrl.unit[i]) {
|
|
|
|
|
ctrl.unit[i]->Reset();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
//
|
|
|
|
|
// Connect the controller
|
|
|
|
|
//
|
|
|
|
|
//---------------------------------------------------------------------------
|
2021-07-26 18:33:36 +00:00
|
|
|
|
void SASIDEV::Connect(int id, BUS *bus)
|
2020-08-28 14:18:02 +00:00
|
|
|
|
{
|
2021-02-07 19:00:48 +00:00
|
|
|
|
ctrl.m_scsi_id = id;
|
2020-08-28 14:18:02 +00:00
|
|
|
|
ctrl.bus = bus;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
//
|
|
|
|
|
// Set the logical unit
|
|
|
|
|
//
|
|
|
|
|
//---------------------------------------------------------------------------
|
2022-02-10 18:54:48 +00:00
|
|
|
|
void SASIDEV::SetUnit(int no, Device *dev)
|
2020-08-28 14:18:02 +00:00
|
|
|
|
{
|
|
|
|
|
ASSERT(no < UnitMax);
|
|
|
|
|
|
|
|
|
|
ctrl.unit[no] = dev;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
//
|
Configurable block size, controller/device cleanup, dispatchers per device, bridge setup (#203)
* Use foreach
* Renaming
* Revert "Renaming"
This reverts commit b0554b9c0a052e282625a4565d429313af2b3cc7.
* Manpage updates
* Removed obsolete assertions
* Replaced QWORD by uint64_t and removed respective typedef
* Removed LPCSTR typedef
* Removed LPCTSTR typedef
* Removed LPTSTR typedef
* Renamed SCSI command interface classes
* Renamed xm6.h to rascsi.h
* Moved interface classes to new interfaces subfolder
* Added include
* Fixed compilation issues of 64 bit Ubuntu
* Renaming
* Sort block sizes
* protobuf interface description update
* Fixed handling for sector size for non-disk devices
* Fixed typo
* Fixed comment
* Translate code commends into English, removing redundant ones (#214)
* Comment update
* For other bridge interfaces than eth0 IP address and netmask can be provided
* Added special rule for testing on x86 PCs
* Translated code comments into English, removing some redundant ones in the process, plus fixing typos (#215)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* Comment update
* Removed unused typedefs
* Added special rule for testing on x86 PCs
* Comment update
* Comment update
* Updated capacity calculation
* Updated protobuf interface to signal parameter support
* Simplified protobuf interface
* Updated rasctl server info output
* Updated logging
* protobuf interface has to return block only if it is configurable
* Updated block size handling
* Improved error message if ID is already in use
* Removed typedef
* Renamed protobuf interface method
* Renaming
* Use protobuf::Messsge instead of protobuf::MessageLite
* default_image_folder cannot be an empty string, removed obsolete check
* Logging update
* Made some error messages more concise
* Removed magic constant
* Updated error message
* Comment update
* Names of removable media drives must be constant and not contain the capacity
* Improved DeviceFactory error handling
* More error handing improvements
* Interface comment update
* Pass interface list to ctapdriver when creating bridge
* Moved initialization code
* Updated rasctl server information output
* Improved handling of MO capacities
* Renaming
* Comment update
* Reject inserting a medium when there is already a medium present (eject first)
* Save list of files in use before dry-run
* Updated rasctl server info message
* Comment update
* Fixed typo
* Cleaned list handling
* Sort devices list by ID *and unit*
* Improved block size check
* Fixed issue with missing method in old Raspberry Pi OS protobuf implementation
* Updated error message
* Improve and fix bugs with saving&loading configuration files for rascsi-web (#218)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Removed unused structures, code and type cleanup
* Use unscoped enums for commands
* SASI Format opcode is 0x06, not 0x04 (see comment in code)
* Removed duplicate command
* Code review, data type updates
* Data type updated, use #pragma once
* Logging update
* Renaming
* Renaming
* Removed duplicate code
* Renaming
* Refactoring
* Removed TODO
* Updated logging
* Comment update
* Comment update
* Updated GetEventStatusNotification
* Removed goto
* Options -h and -v do not require to be the root user (fixes issue #166)
* Updated error messages and exception handling
* Added number of supported LUNs to protobuf interface
* Updated list handling of protobuf interface
* Comment update
* Improved error handling
* Added missing return statement
* Allow empty device list
* Fixed unnecessary detach_all() when config file isn't read (#221)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Protecting/unprotecing a non-ready medium is considered not possible
* Updated error message
* Extract detaching all devices, add parameter list support
* Comment update
* Fixed typos
* Restore files in use if dry-run fails
* Feature configurable reserved id for rascsi-web (#223)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make the reserved SCSI id configurable through an argument to start.sh; make the rascsi-web service reserve 7 by default to maintain current behavior.
* Make it possible to reserve multiple scsi ids in the web ui
* Added support for reserved IDs
* rasctl output update
* Re-ordered logging
* Logging update
* Make use of the newly introduced 'rasctl -r' to have the webui reserve ids on the backend side upon startup (#224)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Updated string to integer conversions
* Improved string to integer conversion
* Move string to integer conversion to rasutil
* Removed unused variable
* Fixed detach, which did not remove the filename from the filenames set
* Re-added folder to gitignore
* Set/Display patch version
* Fix issue where reserved ids were not reserved again when restarting rascsi-service from within the web ui (#226)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Make sure reserved SCSI IDs gets reserved again when restarting rascsi-service from within the web ui
* Updated interface comment
* Accept daynaport as legacy type
* Fixed typo
* Remove file from the list of files in use when ejected with a SCSI command
* Check for attached device for INSERT, EJECT, PROTECT, UNPROTECT
* Fixed error handling
* Fixed filepath handling
* Added more device shortcuts to rasctl
* Fixed function declaration
* Extraced ATTACH and DETACH
* Extracted INSERT
* Simplified ProcessCmd
* Comment update
* Fixed memory leak
* Log information on whether a new device is protected or read-only
* Updated errro message
* Updated error message
* Initialize private fields
* Updated rasctl help message
* Added DEVICE_INFO to protobuf interface
* Improved error handling
* DEVICE_INFO supports device list
* Updated server info handling
* Unified result handling with oneof, all commands now return PbResult
* A result can always return a message string
* Fixed typo
* Simplified sending of commands
* Improved error handling
* Removed unused code
* Updated error handling
* Code cleanup
* Comment update
* Updated logging
* Updated error handling
* Updated handling of removed status for devices without image file support
* Comment update
* Fixed typo
* Updated logging
* Updated parameter handling
* Updated setting default interfaces
* Revert "Updated setting default interfaces"
This reverts commit 210abc775d9a79dd0c631cf3877966a2923f4d5b.
* Revert "Updated parameter handling"
This reverts commit 35302addd59f5f5e1cc032888ba32dcbb426a846.
* rascsi supports reserving IDs
* Updated help message
* Replaced BOOL by bool
* Logging update
* Logging update
* Added default parameters to device properties
* Return parameters a device was set up with
* Improved device initialization
* Updated default parameter handling
* Updated default parameter handling
* Fixed typo
* Comment updates
* Comment update
* Manage default parameters in the respective device
* Do not pass empty parameter string
* Added supports_params flag
* Made comparisons more consistent
* Updated error handling
* Updated exception handling
* Renaming
* Comment update
* NEC sectors size must be 512 bytes
* Updated logging
* Updated vendor name handling
* Updated handling of media loading/unloading
* Added stoppable property and stopped status
* Made MO stoppable
* Removed duplicate code
* Removed duplicate code
* Copy read-only property
* Renaming
* Removed duplicate code, added START/STOP
* Improved default parameter handling
* Updated load/eject handling
* Logging update
* Fixed typo
* Verified START/STOP UNIT
* Updated logging
* Updated status handling
* Updated status handling
* More status handling updates
* Logging update
* Made instance fields local variables
* Made disk_t private
* Made some data structures private
* Fixed ARM compile issue
* Fixed ctapdriver initialization issue
* Reset read-only status when opening an image file
* Made logging more consistent
* Updated log level
* Log load/eject on error level for testing
* Revert "Log load/eject on error level for testing"
This reverts commit d35a15ea8e520517d25e1e1054ad1aeda9f85f2e.
* Assume drive is not ready after having been stopped
* Updated status handling
* Fixed typo
* Rebuild manpage
* Fixed issue #234 (MODE SENSE (10) returns wrong mode parameter header)
* Removed unused code
* Enum data type update
* Removed duplicate range check
* Removed duplicate code
* Removed more duplicate code
* Logging update
* SCCD sector size was not meant to be configurable
* Updated configurable sector size properties
* Removed assertion
* Improved error handling
* Updated error handling
* Re-added special error handling only relevant for SASI
* Added TODOs
* Comment update
* Added override modifier
* Removed obsolete debug flag (related code was not called)
* Comment and logging updates
* Removed obsolete try/catch
* Revert "Removed obsolete try/catch"
This reverts commit 39ca12d8b153c706316ce79f4fec65c9abc60024.
* Comment update
* Removed duplicate code
* Updated error messages, use more foreach loops
* Updated logging
* Logging update
* README update
* Added block_count
* Evaluate block size when inserting a media
* rasctl display capacity if available
* Info message update
* Added missing product name to NEC vital product data
* MO block size depends on capacity only
* Extended property/status display
* Property display update
* Updated error handling
* (Doc only changes) Fix typos and add clarification that SASI is used on Unix workstations
Co-authored-by: Daniel Markstedt <markstedt@gmail.com>
Co-authored-by: Tony Kuker <akuker@gmail.com>
2021-09-15 01:23:04 +00:00
|
|
|
|
// Check to see if this has a valid LUN
|
2020-08-28 14:18:02 +00:00
|
|
|
|
//
|
|
|
|
|
//---------------------------------------------------------------------------
|
Configurable block size, controller/device cleanup, dispatchers per device, bridge setup (#203)
* Use foreach
* Renaming
* Revert "Renaming"
This reverts commit b0554b9c0a052e282625a4565d429313af2b3cc7.
* Manpage updates
* Removed obsolete assertions
* Replaced QWORD by uint64_t and removed respective typedef
* Removed LPCSTR typedef
* Removed LPCTSTR typedef
* Removed LPTSTR typedef
* Renamed SCSI command interface classes
* Renamed xm6.h to rascsi.h
* Moved interface classes to new interfaces subfolder
* Added include
* Fixed compilation issues of 64 bit Ubuntu
* Renaming
* Sort block sizes
* protobuf interface description update
* Fixed handling for sector size for non-disk devices
* Fixed typo
* Fixed comment
* Translate code commends into English, removing redundant ones (#214)
* Comment update
* For other bridge interfaces than eth0 IP address and netmask can be provided
* Added special rule for testing on x86 PCs
* Translated code comments into English, removing some redundant ones in the process, plus fixing typos (#215)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* Comment update
* Removed unused typedefs
* Added special rule for testing on x86 PCs
* Comment update
* Comment update
* Updated capacity calculation
* Updated protobuf interface to signal parameter support
* Simplified protobuf interface
* Updated rasctl server info output
* Updated logging
* protobuf interface has to return block only if it is configurable
* Updated block size handling
* Improved error message if ID is already in use
* Removed typedef
* Renamed protobuf interface method
* Renaming
* Use protobuf::Messsge instead of protobuf::MessageLite
* default_image_folder cannot be an empty string, removed obsolete check
* Logging update
* Made some error messages more concise
* Removed magic constant
* Updated error message
* Comment update
* Names of removable media drives must be constant and not contain the capacity
* Improved DeviceFactory error handling
* More error handing improvements
* Interface comment update
* Pass interface list to ctapdriver when creating bridge
* Moved initialization code
* Updated rasctl server information output
* Improved handling of MO capacities
* Renaming
* Comment update
* Reject inserting a medium when there is already a medium present (eject first)
* Save list of files in use before dry-run
* Updated rasctl server info message
* Comment update
* Fixed typo
* Cleaned list handling
* Sort devices list by ID *and unit*
* Improved block size check
* Fixed issue with missing method in old Raspberry Pi OS protobuf implementation
* Updated error message
* Improve and fix bugs with saving&loading configuration files for rascsi-web (#218)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Removed unused structures, code and type cleanup
* Use unscoped enums for commands
* SASI Format opcode is 0x06, not 0x04 (see comment in code)
* Removed duplicate command
* Code review, data type updates
* Data type updated, use #pragma once
* Logging update
* Renaming
* Renaming
* Removed duplicate code
* Renaming
* Refactoring
* Removed TODO
* Updated logging
* Comment update
* Comment update
* Updated GetEventStatusNotification
* Removed goto
* Options -h and -v do not require to be the root user (fixes issue #166)
* Updated error messages and exception handling
* Added number of supported LUNs to protobuf interface
* Updated list handling of protobuf interface
* Comment update
* Improved error handling
* Added missing return statement
* Allow empty device list
* Fixed unnecessary detach_all() when config file isn't read (#221)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Protecting/unprotecing a non-ready medium is considered not possible
* Updated error message
* Extract detaching all devices, add parameter list support
* Comment update
* Fixed typos
* Restore files in use if dry-run fails
* Feature configurable reserved id for rascsi-web (#223)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make the reserved SCSI id configurable through an argument to start.sh; make the rascsi-web service reserve 7 by default to maintain current behavior.
* Make it possible to reserve multiple scsi ids in the web ui
* Added support for reserved IDs
* rasctl output update
* Re-ordered logging
* Logging update
* Make use of the newly introduced 'rasctl -r' to have the webui reserve ids on the backend side upon startup (#224)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Updated string to integer conversions
* Improved string to integer conversion
* Move string to integer conversion to rasutil
* Removed unused variable
* Fixed detach, which did not remove the filename from the filenames set
* Re-added folder to gitignore
* Set/Display patch version
* Fix issue where reserved ids were not reserved again when restarting rascsi-service from within the web ui (#226)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Make sure reserved SCSI IDs gets reserved again when restarting rascsi-service from within the web ui
* Updated interface comment
* Accept daynaport as legacy type
* Fixed typo
* Remove file from the list of files in use when ejected with a SCSI command
* Check for attached device for INSERT, EJECT, PROTECT, UNPROTECT
* Fixed error handling
* Fixed filepath handling
* Added more device shortcuts to rasctl
* Fixed function declaration
* Extraced ATTACH and DETACH
* Extracted INSERT
* Simplified ProcessCmd
* Comment update
* Fixed memory leak
* Log information on whether a new device is protected or read-only
* Updated errro message
* Updated error message
* Initialize private fields
* Updated rasctl help message
* Added DEVICE_INFO to protobuf interface
* Improved error handling
* DEVICE_INFO supports device list
* Updated server info handling
* Unified result handling with oneof, all commands now return PbResult
* A result can always return a message string
* Fixed typo
* Simplified sending of commands
* Improved error handling
* Removed unused code
* Updated error handling
* Code cleanup
* Comment update
* Updated logging
* Updated error handling
* Updated handling of removed status for devices without image file support
* Comment update
* Fixed typo
* Updated logging
* Updated parameter handling
* Updated setting default interfaces
* Revert "Updated setting default interfaces"
This reverts commit 210abc775d9a79dd0c631cf3877966a2923f4d5b.
* Revert "Updated parameter handling"
This reverts commit 35302addd59f5f5e1cc032888ba32dcbb426a846.
* rascsi supports reserving IDs
* Updated help message
* Replaced BOOL by bool
* Logging update
* Logging update
* Added default parameters to device properties
* Return parameters a device was set up with
* Improved device initialization
* Updated default parameter handling
* Updated default parameter handling
* Fixed typo
* Comment updates
* Comment update
* Manage default parameters in the respective device
* Do not pass empty parameter string
* Added supports_params flag
* Made comparisons more consistent
* Updated error handling
* Updated exception handling
* Renaming
* Comment update
* NEC sectors size must be 512 bytes
* Updated logging
* Updated vendor name handling
* Updated handling of media loading/unloading
* Added stoppable property and stopped status
* Made MO stoppable
* Removed duplicate code
* Removed duplicate code
* Copy read-only property
* Renaming
* Removed duplicate code, added START/STOP
* Improved default parameter handling
* Updated load/eject handling
* Logging update
* Fixed typo
* Verified START/STOP UNIT
* Updated logging
* Updated status handling
* Updated status handling
* More status handling updates
* Logging update
* Made instance fields local variables
* Made disk_t private
* Made some data structures private
* Fixed ARM compile issue
* Fixed ctapdriver initialization issue
* Reset read-only status when opening an image file
* Made logging more consistent
* Updated log level
* Log load/eject on error level for testing
* Revert "Log load/eject on error level for testing"
This reverts commit d35a15ea8e520517d25e1e1054ad1aeda9f85f2e.
* Assume drive is not ready after having been stopped
* Updated status handling
* Fixed typo
* Rebuild manpage
* Fixed issue #234 (MODE SENSE (10) returns wrong mode parameter header)
* Removed unused code
* Enum data type update
* Removed duplicate range check
* Removed duplicate code
* Removed more duplicate code
* Logging update
* SCCD sector size was not meant to be configurable
* Updated configurable sector size properties
* Removed assertion
* Improved error handling
* Updated error handling
* Re-added special error handling only relevant for SASI
* Added TODOs
* Comment update
* Added override modifier
* Removed obsolete debug flag (related code was not called)
* Comment and logging updates
* Removed obsolete try/catch
* Revert "Removed obsolete try/catch"
This reverts commit 39ca12d8b153c706316ce79f4fec65c9abc60024.
* Comment update
* Removed duplicate code
* Updated error messages, use more foreach loops
* Updated logging
* Logging update
* README update
* Added block_count
* Evaluate block size when inserting a media
* rasctl display capacity if available
* Info message update
* Added missing product name to NEC vital product data
* MO block size depends on capacity only
* Extended property/status display
* Property display update
* Updated error handling
* (Doc only changes) Fix typos and add clarification that SASI is used on Unix workstations
Co-authored-by: Daniel Markstedt <markstedt@gmail.com>
Co-authored-by: Tony Kuker <akuker@gmail.com>
2021-09-15 01:23:04 +00:00
|
|
|
|
bool SASIDEV::HasUnit()
|
2020-08-28 14:18:02 +00:00
|
|
|
|
{
|
2021-07-07 21:46:45 +00:00
|
|
|
|
for (int i = 0; i < UnitMax; i++) {
|
2020-08-28 14:18:02 +00:00
|
|
|
|
if (ctrl.unit[i]) {
|
Configurable block size, controller/device cleanup, dispatchers per device, bridge setup (#203)
* Use foreach
* Renaming
* Revert "Renaming"
This reverts commit b0554b9c0a052e282625a4565d429313af2b3cc7.
* Manpage updates
* Removed obsolete assertions
* Replaced QWORD by uint64_t and removed respective typedef
* Removed LPCSTR typedef
* Removed LPCTSTR typedef
* Removed LPTSTR typedef
* Renamed SCSI command interface classes
* Renamed xm6.h to rascsi.h
* Moved interface classes to new interfaces subfolder
* Added include
* Fixed compilation issues of 64 bit Ubuntu
* Renaming
* Sort block sizes
* protobuf interface description update
* Fixed handling for sector size for non-disk devices
* Fixed typo
* Fixed comment
* Translate code commends into English, removing redundant ones (#214)
* Comment update
* For other bridge interfaces than eth0 IP address and netmask can be provided
* Added special rule for testing on x86 PCs
* Translated code comments into English, removing some redundant ones in the process, plus fixing typos (#215)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* Comment update
* Removed unused typedefs
* Added special rule for testing on x86 PCs
* Comment update
* Comment update
* Updated capacity calculation
* Updated protobuf interface to signal parameter support
* Simplified protobuf interface
* Updated rasctl server info output
* Updated logging
* protobuf interface has to return block only if it is configurable
* Updated block size handling
* Improved error message if ID is already in use
* Removed typedef
* Renamed protobuf interface method
* Renaming
* Use protobuf::Messsge instead of protobuf::MessageLite
* default_image_folder cannot be an empty string, removed obsolete check
* Logging update
* Made some error messages more concise
* Removed magic constant
* Updated error message
* Comment update
* Names of removable media drives must be constant and not contain the capacity
* Improved DeviceFactory error handling
* More error handing improvements
* Interface comment update
* Pass interface list to ctapdriver when creating bridge
* Moved initialization code
* Updated rasctl server information output
* Improved handling of MO capacities
* Renaming
* Comment update
* Reject inserting a medium when there is already a medium present (eject first)
* Save list of files in use before dry-run
* Updated rasctl server info message
* Comment update
* Fixed typo
* Cleaned list handling
* Sort devices list by ID *and unit*
* Improved block size check
* Fixed issue with missing method in old Raspberry Pi OS protobuf implementation
* Updated error message
* Improve and fix bugs with saving&loading configuration files for rascsi-web (#218)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Removed unused structures, code and type cleanup
* Use unscoped enums for commands
* SASI Format opcode is 0x06, not 0x04 (see comment in code)
* Removed duplicate command
* Code review, data type updates
* Data type updated, use #pragma once
* Logging update
* Renaming
* Renaming
* Removed duplicate code
* Renaming
* Refactoring
* Removed TODO
* Updated logging
* Comment update
* Comment update
* Updated GetEventStatusNotification
* Removed goto
* Options -h and -v do not require to be the root user (fixes issue #166)
* Updated error messages and exception handling
* Added number of supported LUNs to protobuf interface
* Updated list handling of protobuf interface
* Comment update
* Improved error handling
* Added missing return statement
* Allow empty device list
* Fixed unnecessary detach_all() when config file isn't read (#221)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Protecting/unprotecing a non-ready medium is considered not possible
* Updated error message
* Extract detaching all devices, add parameter list support
* Comment update
* Fixed typos
* Restore files in use if dry-run fails
* Feature configurable reserved id for rascsi-web (#223)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make the reserved SCSI id configurable through an argument to start.sh; make the rascsi-web service reserve 7 by default to maintain current behavior.
* Make it possible to reserve multiple scsi ids in the web ui
* Added support for reserved IDs
* rasctl output update
* Re-ordered logging
* Logging update
* Make use of the newly introduced 'rasctl -r' to have the webui reserve ids on the backend side upon startup (#224)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Updated string to integer conversions
* Improved string to integer conversion
* Move string to integer conversion to rasutil
* Removed unused variable
* Fixed detach, which did not remove the filename from the filenames set
* Re-added folder to gitignore
* Set/Display patch version
* Fix issue where reserved ids were not reserved again when restarting rascsi-service from within the web ui (#226)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Make sure reserved SCSI IDs gets reserved again when restarting rascsi-service from within the web ui
* Updated interface comment
* Accept daynaport as legacy type
* Fixed typo
* Remove file from the list of files in use when ejected with a SCSI command
* Check for attached device for INSERT, EJECT, PROTECT, UNPROTECT
* Fixed error handling
* Fixed filepath handling
* Added more device shortcuts to rasctl
* Fixed function declaration
* Extraced ATTACH and DETACH
* Extracted INSERT
* Simplified ProcessCmd
* Comment update
* Fixed memory leak
* Log information on whether a new device is protected or read-only
* Updated errro message
* Updated error message
* Initialize private fields
* Updated rasctl help message
* Added DEVICE_INFO to protobuf interface
* Improved error handling
* DEVICE_INFO supports device list
* Updated server info handling
* Unified result handling with oneof, all commands now return PbResult
* A result can always return a message string
* Fixed typo
* Simplified sending of commands
* Improved error handling
* Removed unused code
* Updated error handling
* Code cleanup
* Comment update
* Updated logging
* Updated error handling
* Updated handling of removed status for devices without image file support
* Comment update
* Fixed typo
* Updated logging
* Updated parameter handling
* Updated setting default interfaces
* Revert "Updated setting default interfaces"
This reverts commit 210abc775d9a79dd0c631cf3877966a2923f4d5b.
* Revert "Updated parameter handling"
This reverts commit 35302addd59f5f5e1cc032888ba32dcbb426a846.
* rascsi supports reserving IDs
* Updated help message
* Replaced BOOL by bool
* Logging update
* Logging update
* Added default parameters to device properties
* Return parameters a device was set up with
* Improved device initialization
* Updated default parameter handling
* Updated default parameter handling
* Fixed typo
* Comment updates
* Comment update
* Manage default parameters in the respective device
* Do not pass empty parameter string
* Added supports_params flag
* Made comparisons more consistent
* Updated error handling
* Updated exception handling
* Renaming
* Comment update
* NEC sectors size must be 512 bytes
* Updated logging
* Updated vendor name handling
* Updated handling of media loading/unloading
* Added stoppable property and stopped status
* Made MO stoppable
* Removed duplicate code
* Removed duplicate code
* Copy read-only property
* Renaming
* Removed duplicate code, added START/STOP
* Improved default parameter handling
* Updated load/eject handling
* Logging update
* Fixed typo
* Verified START/STOP UNIT
* Updated logging
* Updated status handling
* Updated status handling
* More status handling updates
* Logging update
* Made instance fields local variables
* Made disk_t private
* Made some data structures private
* Fixed ARM compile issue
* Fixed ctapdriver initialization issue
* Reset read-only status when opening an image file
* Made logging more consistent
* Updated log level
* Log load/eject on error level for testing
* Revert "Log load/eject on error level for testing"
This reverts commit d35a15ea8e520517d25e1e1054ad1aeda9f85f2e.
* Assume drive is not ready after having been stopped
* Updated status handling
* Fixed typo
* Rebuild manpage
* Fixed issue #234 (MODE SENSE (10) returns wrong mode parameter header)
* Removed unused code
* Enum data type update
* Removed duplicate range check
* Removed duplicate code
* Removed more duplicate code
* Logging update
* SCCD sector size was not meant to be configurable
* Updated configurable sector size properties
* Removed assertion
* Improved error handling
* Updated error handling
* Re-added special error handling only relevant for SASI
* Added TODOs
* Comment update
* Added override modifier
* Removed obsolete debug flag (related code was not called)
* Comment and logging updates
* Removed obsolete try/catch
* Revert "Removed obsolete try/catch"
This reverts commit 39ca12d8b153c706316ce79f4fec65c9abc60024.
* Comment update
* Removed duplicate code
* Updated error messages, use more foreach loops
* Updated logging
* Logging update
* README update
* Added block_count
* Evaluate block size when inserting a media
* rasctl display capacity if available
* Info message update
* Added missing product name to NEC vital product data
* MO block size depends on capacity only
* Extended property/status display
* Property display update
* Updated error handling
* (Doc only changes) Fix typos and add clarification that SASI is used on Unix workstations
Co-authored-by: Daniel Markstedt <markstedt@gmail.com>
Co-authored-by: Tony Kuker <akuker@gmail.com>
2021-09-15 01:23:04 +00:00
|
|
|
|
return true;
|
2020-08-28 14:18:02 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
Configurable block size, controller/device cleanup, dispatchers per device, bridge setup (#203)
* Use foreach
* Renaming
* Revert "Renaming"
This reverts commit b0554b9c0a052e282625a4565d429313af2b3cc7.
* Manpage updates
* Removed obsolete assertions
* Replaced QWORD by uint64_t and removed respective typedef
* Removed LPCSTR typedef
* Removed LPCTSTR typedef
* Removed LPTSTR typedef
* Renamed SCSI command interface classes
* Renamed xm6.h to rascsi.h
* Moved interface classes to new interfaces subfolder
* Added include
* Fixed compilation issues of 64 bit Ubuntu
* Renaming
* Sort block sizes
* protobuf interface description update
* Fixed handling for sector size for non-disk devices
* Fixed typo
* Fixed comment
* Translate code commends into English, removing redundant ones (#214)
* Comment update
* For other bridge interfaces than eth0 IP address and netmask can be provided
* Added special rule for testing on x86 PCs
* Translated code comments into English, removing some redundant ones in the process, plus fixing typos (#215)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* Comment update
* Removed unused typedefs
* Added special rule for testing on x86 PCs
* Comment update
* Comment update
* Updated capacity calculation
* Updated protobuf interface to signal parameter support
* Simplified protobuf interface
* Updated rasctl server info output
* Updated logging
* protobuf interface has to return block only if it is configurable
* Updated block size handling
* Improved error message if ID is already in use
* Removed typedef
* Renamed protobuf interface method
* Renaming
* Use protobuf::Messsge instead of protobuf::MessageLite
* default_image_folder cannot be an empty string, removed obsolete check
* Logging update
* Made some error messages more concise
* Removed magic constant
* Updated error message
* Comment update
* Names of removable media drives must be constant and not contain the capacity
* Improved DeviceFactory error handling
* More error handing improvements
* Interface comment update
* Pass interface list to ctapdriver when creating bridge
* Moved initialization code
* Updated rasctl server information output
* Improved handling of MO capacities
* Renaming
* Comment update
* Reject inserting a medium when there is already a medium present (eject first)
* Save list of files in use before dry-run
* Updated rasctl server info message
* Comment update
* Fixed typo
* Cleaned list handling
* Sort devices list by ID *and unit*
* Improved block size check
* Fixed issue with missing method in old Raspberry Pi OS protobuf implementation
* Updated error message
* Improve and fix bugs with saving&loading configuration files for rascsi-web (#218)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Removed unused structures, code and type cleanup
* Use unscoped enums for commands
* SASI Format opcode is 0x06, not 0x04 (see comment in code)
* Removed duplicate command
* Code review, data type updates
* Data type updated, use #pragma once
* Logging update
* Renaming
* Renaming
* Removed duplicate code
* Renaming
* Refactoring
* Removed TODO
* Updated logging
* Comment update
* Comment update
* Updated GetEventStatusNotification
* Removed goto
* Options -h and -v do not require to be the root user (fixes issue #166)
* Updated error messages and exception handling
* Added number of supported LUNs to protobuf interface
* Updated list handling of protobuf interface
* Comment update
* Improved error handling
* Added missing return statement
* Allow empty device list
* Fixed unnecessary detach_all() when config file isn't read (#221)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Protecting/unprotecing a non-ready medium is considered not possible
* Updated error message
* Extract detaching all devices, add parameter list support
* Comment update
* Fixed typos
* Restore files in use if dry-run fails
* Feature configurable reserved id for rascsi-web (#223)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make the reserved SCSI id configurable through an argument to start.sh; make the rascsi-web service reserve 7 by default to maintain current behavior.
* Make it possible to reserve multiple scsi ids in the web ui
* Added support for reserved IDs
* rasctl output update
* Re-ordered logging
* Logging update
* Make use of the newly introduced 'rasctl -r' to have the webui reserve ids on the backend side upon startup (#224)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Updated string to integer conversions
* Improved string to integer conversion
* Move string to integer conversion to rasutil
* Removed unused variable
* Fixed detach, which did not remove the filename from the filenames set
* Re-added folder to gitignore
* Set/Display patch version
* Fix issue where reserved ids were not reserved again when restarting rascsi-service from within the web ui (#226)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Make sure reserved SCSI IDs gets reserved again when restarting rascsi-service from within the web ui
* Updated interface comment
* Accept daynaport as legacy type
* Fixed typo
* Remove file from the list of files in use when ejected with a SCSI command
* Check for attached device for INSERT, EJECT, PROTECT, UNPROTECT
* Fixed error handling
* Fixed filepath handling
* Added more device shortcuts to rasctl
* Fixed function declaration
* Extraced ATTACH and DETACH
* Extracted INSERT
* Simplified ProcessCmd
* Comment update
* Fixed memory leak
* Log information on whether a new device is protected or read-only
* Updated errro message
* Updated error message
* Initialize private fields
* Updated rasctl help message
* Added DEVICE_INFO to protobuf interface
* Improved error handling
* DEVICE_INFO supports device list
* Updated server info handling
* Unified result handling with oneof, all commands now return PbResult
* A result can always return a message string
* Fixed typo
* Simplified sending of commands
* Improved error handling
* Removed unused code
* Updated error handling
* Code cleanup
* Comment update
* Updated logging
* Updated error handling
* Updated handling of removed status for devices without image file support
* Comment update
* Fixed typo
* Updated logging
* Updated parameter handling
* Updated setting default interfaces
* Revert "Updated setting default interfaces"
This reverts commit 210abc775d9a79dd0c631cf3877966a2923f4d5b.
* Revert "Updated parameter handling"
This reverts commit 35302addd59f5f5e1cc032888ba32dcbb426a846.
* rascsi supports reserving IDs
* Updated help message
* Replaced BOOL by bool
* Logging update
* Logging update
* Added default parameters to device properties
* Return parameters a device was set up with
* Improved device initialization
* Updated default parameter handling
* Updated default parameter handling
* Fixed typo
* Comment updates
* Comment update
* Manage default parameters in the respective device
* Do not pass empty parameter string
* Added supports_params flag
* Made comparisons more consistent
* Updated error handling
* Updated exception handling
* Renaming
* Comment update
* NEC sectors size must be 512 bytes
* Updated logging
* Updated vendor name handling
* Updated handling of media loading/unloading
* Added stoppable property and stopped status
* Made MO stoppable
* Removed duplicate code
* Removed duplicate code
* Copy read-only property
* Renaming
* Removed duplicate code, added START/STOP
* Improved default parameter handling
* Updated load/eject handling
* Logging update
* Fixed typo
* Verified START/STOP UNIT
* Updated logging
* Updated status handling
* Updated status handling
* More status handling updates
* Logging update
* Made instance fields local variables
* Made disk_t private
* Made some data structures private
* Fixed ARM compile issue
* Fixed ctapdriver initialization issue
* Reset read-only status when opening an image file
* Made logging more consistent
* Updated log level
* Log load/eject on error level for testing
* Revert "Log load/eject on error level for testing"
This reverts commit d35a15ea8e520517d25e1e1054ad1aeda9f85f2e.
* Assume drive is not ready after having been stopped
* Updated status handling
* Fixed typo
* Rebuild manpage
* Fixed issue #234 (MODE SENSE (10) returns wrong mode parameter header)
* Removed unused code
* Enum data type update
* Removed duplicate range check
* Removed duplicate code
* Removed more duplicate code
* Logging update
* SCCD sector size was not meant to be configurable
* Updated configurable sector size properties
* Removed assertion
* Improved error handling
* Updated error handling
* Re-added special error handling only relevant for SASI
* Added TODOs
* Comment update
* Added override modifier
* Removed obsolete debug flag (related code was not called)
* Comment and logging updates
* Removed obsolete try/catch
* Revert "Removed obsolete try/catch"
This reverts commit 39ca12d8b153c706316ce79f4fec65c9abc60024.
* Comment update
* Removed duplicate code
* Updated error messages, use more foreach loops
* Updated logging
* Logging update
* README update
* Added block_count
* Evaluate block size when inserting a media
* rasctl display capacity if available
* Info message update
* Added missing product name to NEC vital product data
* MO block size depends on capacity only
* Extended property/status display
* Property display update
* Updated error handling
* (Doc only changes) Fix typos and add clarification that SASI is used on Unix workstations
Co-authored-by: Daniel Markstedt <markstedt@gmail.com>
Co-authored-by: Tony Kuker <akuker@gmail.com>
2021-09-15 01:23:04 +00:00
|
|
|
|
return false;
|
2020-08-28 14:18:02 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
//
|
|
|
|
|
// Run
|
|
|
|
|
//
|
|
|
|
|
//---------------------------------------------------------------------------
|
2022-02-17 02:04:42 +00:00
|
|
|
|
BUS::phase_t SASIDEV::Process(int)
|
2020-08-28 14:18:02 +00:00
|
|
|
|
{
|
|
|
|
|
// Do nothing if not connected
|
2021-02-07 19:00:48 +00:00
|
|
|
|
if (ctrl.m_scsi_id < 0 || ctrl.bus == NULL) {
|
2020-08-28 14:18:02 +00:00
|
|
|
|
return ctrl.phase;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Get bus information
|
2020-10-19 12:31:06 +00:00
|
|
|
|
((GPIOBUS*)ctrl.bus)->Aquire();
|
2020-08-28 14:18:02 +00:00
|
|
|
|
|
|
|
|
|
// For the monitor tool, we shouldn't need to reset. We're just logging information
|
|
|
|
|
// Reset
|
|
|
|
|
if (ctrl.bus->GetRST()) {
|
2021-02-07 19:00:48 +00:00
|
|
|
|
LOGINFO("RESET signal received");
|
2020-08-28 14:18:02 +00:00
|
|
|
|
|
|
|
|
|
// Reset the controller
|
|
|
|
|
Reset();
|
|
|
|
|
|
|
|
|
|
// Reset the bus
|
|
|
|
|
ctrl.bus->Reset();
|
|
|
|
|
return ctrl.phase;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Phase processing
|
|
|
|
|
switch (ctrl.phase) {
|
|
|
|
|
// Bus free
|
|
|
|
|
case BUS::busfree:
|
|
|
|
|
BusFree();
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
// Selection
|
|
|
|
|
case BUS::selection:
|
|
|
|
|
Selection();
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
// Data out (MCI=000)
|
|
|
|
|
case BUS::dataout:
|
|
|
|
|
DataOut();
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
// Data in (MCI=001)
|
|
|
|
|
case BUS::datain:
|
|
|
|
|
DataIn();
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
// Command (MCI=010)
|
|
|
|
|
case BUS::command:
|
|
|
|
|
Command();
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
// Status (MCI=011)
|
|
|
|
|
case BUS::status:
|
|
|
|
|
Status();
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
// Msg in (MCI=111)
|
|
|
|
|
case BUS::msgin:
|
|
|
|
|
MsgIn();
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
// Other
|
|
|
|
|
default:
|
|
|
|
|
ASSERT(FALSE);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return ctrl.phase;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
//
|
|
|
|
|
// Bus free phase
|
|
|
|
|
//
|
|
|
|
|
//---------------------------------------------------------------------------
|
2021-07-26 18:33:36 +00:00
|
|
|
|
void SASIDEV::BusFree()
|
2020-08-28 14:18:02 +00:00
|
|
|
|
{
|
|
|
|
|
// Phase change
|
|
|
|
|
if (ctrl.phase != BUS::busfree) {
|
Configurable block size, controller/device cleanup, dispatchers per device, bridge setup (#203)
* Use foreach
* Renaming
* Revert "Renaming"
This reverts commit b0554b9c0a052e282625a4565d429313af2b3cc7.
* Manpage updates
* Removed obsolete assertions
* Replaced QWORD by uint64_t and removed respective typedef
* Removed LPCSTR typedef
* Removed LPCTSTR typedef
* Removed LPTSTR typedef
* Renamed SCSI command interface classes
* Renamed xm6.h to rascsi.h
* Moved interface classes to new interfaces subfolder
* Added include
* Fixed compilation issues of 64 bit Ubuntu
* Renaming
* Sort block sizes
* protobuf interface description update
* Fixed handling for sector size for non-disk devices
* Fixed typo
* Fixed comment
* Translate code commends into English, removing redundant ones (#214)
* Comment update
* For other bridge interfaces than eth0 IP address and netmask can be provided
* Added special rule for testing on x86 PCs
* Translated code comments into English, removing some redundant ones in the process, plus fixing typos (#215)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* Comment update
* Removed unused typedefs
* Added special rule for testing on x86 PCs
* Comment update
* Comment update
* Updated capacity calculation
* Updated protobuf interface to signal parameter support
* Simplified protobuf interface
* Updated rasctl server info output
* Updated logging
* protobuf interface has to return block only if it is configurable
* Updated block size handling
* Improved error message if ID is already in use
* Removed typedef
* Renamed protobuf interface method
* Renaming
* Use protobuf::Messsge instead of protobuf::MessageLite
* default_image_folder cannot be an empty string, removed obsolete check
* Logging update
* Made some error messages more concise
* Removed magic constant
* Updated error message
* Comment update
* Names of removable media drives must be constant and not contain the capacity
* Improved DeviceFactory error handling
* More error handing improvements
* Interface comment update
* Pass interface list to ctapdriver when creating bridge
* Moved initialization code
* Updated rasctl server information output
* Improved handling of MO capacities
* Renaming
* Comment update
* Reject inserting a medium when there is already a medium present (eject first)
* Save list of files in use before dry-run
* Updated rasctl server info message
* Comment update
* Fixed typo
* Cleaned list handling
* Sort devices list by ID *and unit*
* Improved block size check
* Fixed issue with missing method in old Raspberry Pi OS protobuf implementation
* Updated error message
* Improve and fix bugs with saving&loading configuration files for rascsi-web (#218)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Removed unused structures, code and type cleanup
* Use unscoped enums for commands
* SASI Format opcode is 0x06, not 0x04 (see comment in code)
* Removed duplicate command
* Code review, data type updates
* Data type updated, use #pragma once
* Logging update
* Renaming
* Renaming
* Removed duplicate code
* Renaming
* Refactoring
* Removed TODO
* Updated logging
* Comment update
* Comment update
* Updated GetEventStatusNotification
* Removed goto
* Options -h and -v do not require to be the root user (fixes issue #166)
* Updated error messages and exception handling
* Added number of supported LUNs to protobuf interface
* Updated list handling of protobuf interface
* Comment update
* Improved error handling
* Added missing return statement
* Allow empty device list
* Fixed unnecessary detach_all() when config file isn't read (#221)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Protecting/unprotecing a non-ready medium is considered not possible
* Updated error message
* Extract detaching all devices, add parameter list support
* Comment update
* Fixed typos
* Restore files in use if dry-run fails
* Feature configurable reserved id for rascsi-web (#223)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make the reserved SCSI id configurable through an argument to start.sh; make the rascsi-web service reserve 7 by default to maintain current behavior.
* Make it possible to reserve multiple scsi ids in the web ui
* Added support for reserved IDs
* rasctl output update
* Re-ordered logging
* Logging update
* Make use of the newly introduced 'rasctl -r' to have the webui reserve ids on the backend side upon startup (#224)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Updated string to integer conversions
* Improved string to integer conversion
* Move string to integer conversion to rasutil
* Removed unused variable
* Fixed detach, which did not remove the filename from the filenames set
* Re-added folder to gitignore
* Set/Display patch version
* Fix issue where reserved ids were not reserved again when restarting rascsi-service from within the web ui (#226)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Make sure reserved SCSI IDs gets reserved again when restarting rascsi-service from within the web ui
* Updated interface comment
* Accept daynaport as legacy type
* Fixed typo
* Remove file from the list of files in use when ejected with a SCSI command
* Check for attached device for INSERT, EJECT, PROTECT, UNPROTECT
* Fixed error handling
* Fixed filepath handling
* Added more device shortcuts to rasctl
* Fixed function declaration
* Extraced ATTACH and DETACH
* Extracted INSERT
* Simplified ProcessCmd
* Comment update
* Fixed memory leak
* Log information on whether a new device is protected or read-only
* Updated errro message
* Updated error message
* Initialize private fields
* Updated rasctl help message
* Added DEVICE_INFO to protobuf interface
* Improved error handling
* DEVICE_INFO supports device list
* Updated server info handling
* Unified result handling with oneof, all commands now return PbResult
* A result can always return a message string
* Fixed typo
* Simplified sending of commands
* Improved error handling
* Removed unused code
* Updated error handling
* Code cleanup
* Comment update
* Updated logging
* Updated error handling
* Updated handling of removed status for devices without image file support
* Comment update
* Fixed typo
* Updated logging
* Updated parameter handling
* Updated setting default interfaces
* Revert "Updated setting default interfaces"
This reverts commit 210abc775d9a79dd0c631cf3877966a2923f4d5b.
* Revert "Updated parameter handling"
This reverts commit 35302addd59f5f5e1cc032888ba32dcbb426a846.
* rascsi supports reserving IDs
* Updated help message
* Replaced BOOL by bool
* Logging update
* Logging update
* Added default parameters to device properties
* Return parameters a device was set up with
* Improved device initialization
* Updated default parameter handling
* Updated default parameter handling
* Fixed typo
* Comment updates
* Comment update
* Manage default parameters in the respective device
* Do not pass empty parameter string
* Added supports_params flag
* Made comparisons more consistent
* Updated error handling
* Updated exception handling
* Renaming
* Comment update
* NEC sectors size must be 512 bytes
* Updated logging
* Updated vendor name handling
* Updated handling of media loading/unloading
* Added stoppable property and stopped status
* Made MO stoppable
* Removed duplicate code
* Removed duplicate code
* Copy read-only property
* Renaming
* Removed duplicate code, added START/STOP
* Improved default parameter handling
* Updated load/eject handling
* Logging update
* Fixed typo
* Verified START/STOP UNIT
* Updated logging
* Updated status handling
* Updated status handling
* More status handling updates
* Logging update
* Made instance fields local variables
* Made disk_t private
* Made some data structures private
* Fixed ARM compile issue
* Fixed ctapdriver initialization issue
* Reset read-only status when opening an image file
* Made logging more consistent
* Updated log level
* Log load/eject on error level for testing
* Revert "Log load/eject on error level for testing"
This reverts commit d35a15ea8e520517d25e1e1054ad1aeda9f85f2e.
* Assume drive is not ready after having been stopped
* Updated status handling
* Fixed typo
* Rebuild manpage
* Fixed issue #234 (MODE SENSE (10) returns wrong mode parameter header)
* Removed unused code
* Enum data type update
* Removed duplicate range check
* Removed duplicate code
* Removed more duplicate code
* Logging update
* SCCD sector size was not meant to be configurable
* Updated configurable sector size properties
* Removed assertion
* Improved error handling
* Updated error handling
* Re-added special error handling only relevant for SASI
* Added TODOs
* Comment update
* Added override modifier
* Removed obsolete debug flag (related code was not called)
* Comment and logging updates
* Removed obsolete try/catch
* Revert "Removed obsolete try/catch"
This reverts commit 39ca12d8b153c706316ce79f4fec65c9abc60024.
* Comment update
* Removed duplicate code
* Updated error messages, use more foreach loops
* Updated logging
* Logging update
* README update
* Added block_count
* Evaluate block size when inserting a media
* rasctl display capacity if available
* Info message update
* Added missing product name to NEC vital product data
* MO block size depends on capacity only
* Extended property/status display
* Property display update
* Updated error handling
* (Doc only changes) Fix typos and add clarification that SASI is used on Unix workstations
Co-authored-by: Daniel Markstedt <markstedt@gmail.com>
Co-authored-by: Tony Kuker <akuker@gmail.com>
2021-09-15 01:23:04 +00:00
|
|
|
|
LOGTRACE("%s Bus free phase", __PRETTY_FUNCTION__);
|
2020-08-28 14:18:02 +00:00
|
|
|
|
|
|
|
|
|
// Phase Setting
|
|
|
|
|
ctrl.phase = BUS::busfree;
|
|
|
|
|
|
|
|
|
|
// Set Signal lines
|
|
|
|
|
ctrl.bus->SetREQ(FALSE);
|
|
|
|
|
ctrl.bus->SetMSG(FALSE);
|
|
|
|
|
ctrl.bus->SetCD(FALSE);
|
|
|
|
|
ctrl.bus->SetIO(FALSE);
|
Refactoring, device handling extensions, additional settings, improved error handling, 64 bit OS support, fixed issues (#184)
* Device type unification, support of removable media
* Added support for .hdr extension
* Removable flag cleanup
* Manpage update
* Enriched PbOperation with PbDevice
* Added file size to PbImageFile
* Added device list support
* Set image_file
* Make remote interface more robust by ignoring SIGPIPE
* Return status only once
* Fixed typo
* Error handling update
* When starting rascsi parse everything before attaching devices
* Added dry run mode
* Comment update
* Updated logging
* Added Device base class, Disk class inherits from it
* Renaming
* Use vectors for controllers and disks, as preparation for using maps
* Updated file support handling
* Comment update
* DaynaPort and Bridge inherit from Device instead of Disk
* ProcessCmd() now works with devices instead of disks
* Renaming
* Added DeviceFactory
* Improved factory
* Comment update
* protected disk_t
* Code cleanup, added translations
* Device name can be set for rascsi
* rasctl can set device name
* Manpage update
* Manpage update
* Formatting update
* Check for missing name
* Initialize fd
* Initialize type
* Fixed string length issue
* Updated capacity formatting
* Fixed typo
* Split PbDevice into device and device definition
* Added TODO
* Renaming
* Renaming
* Device types can be explicitly specified with -t (no FILE:TYPE syntax anymore)
* Fixed compile-time issue
* Removed unused Append mode, updated read-only handling
* Type handling and manpage update
* Cleanup
* rasctl parser cleanup
* Review
* Constructor update
* Added .hdr (SCRM) support to web interface, tested web interface
* Default folder can be set remotely
* Removed deprecated operation
* DETACH supports all parameters in order to detach all devices
* include cleanup
* Logging should not depend on NDEBUG, for RaSCSI it is not peformance-critical
* INFO is default log level
* Exception renaming
* Updated GetPaddedName()
* Inheritance update
* Added BlockDevice class
* Removed unused code
* Updated typedefs
* Revert "Updated typedefs"
This reverts commit 546b46215a4d9b65067a11698e59ab1123cc6d64.
* Removed unused code
* Fixed warnign
* Use standard C++ integer types, use streams to resolve printf data type issues
* Added TODOs
* Added TODO
* Renaming
* Added TODO
* Added TODO
* Improved dry-run
* Code cleanup
* Updated handling of unknown options, code review and cleanup
* Manpage update
* Added PrimaryDevice
* Include cleanup
* Added pure virtual methods
* Comment updates
* Split rasutil
* Replaced some occurrences of BOOL
* Removed obsolete RASCSI definition in xm6.h
* Removed unused code, updated TODOs, replaced BOOL
* Added capacity check (issue #192)
* Fixed (most likely) https://github.com/akuker/RASCSI/issues/191
* Fixed wrong error messages
* For root the default image folder is /home/pi/images, updated error handling
* Dynaport code review
* Improved error handling
* Implemented READ CAPACITY(16)
* Comment update
* Commands can be 16 bytes long
* Implemented READ/WRITE/VERIFY(16)
* Comment update
* Renamed method to reflect the name of the respective SCSI command
* Do not created devices during dryRun
* Fixed padding of SCSIHD_APPLE vendor and product
* Initial implementation
* Updated ReportLuns
* Byte count update
* Fixed typo
* Finalized REPORT LUNS
* Removed TODO
* Updated TODO
* TODO update
* Updated device factory
* Comment update
* 64 bit update, tested on Ubuntu 64 bit system
* Removed assertion
* SCSI hard disks always have Apple specific mode pages (resolves issue #193)
* Error messsage update, 64 bit cleanup
* Reduced streams usage
* Updated handling of device flags
* MOs are protectable
* Removed duplicate error code handling
* Removed duplicate code
* Fixed CmdReadToc buffer overflow (https://github.com/akuker/RASCSI/issues/194)
* Added naive implementation of GET EVENT STATUS NOTIFICATION to avoid wranings
* HD must set removable device bit if the media is removable
* Removed duplicate logging
* Updated daynaport additional length
* Removed broken daynaport REQUEST SENSE. Successfully tested with my Mac.
* EnableInterface should not always return TRUE
* Updated Inquiry
* Updated LUN handling
* Replaced incorrect free by delete
* Updated comments and write-protection handling
* Made default HD name consistent
* STATUS_NOERROR is default
* Fixed Eject
* More eject handling updates
* Manpage updates
* Logging update
* Changed debug level
* Logging update
* Log capacity of all media types
* Logging update
* Encapsulated disk.blocks
* Encapsulated sector size
* Added overrides
* Added more overrides
* Fixed error message
* Fixed typos
* Fixed logging
* Added logging
* Use PrimaryDevice when calling Inquiry
* Comment update
* Changed default buffer size for testing
* Reverted last change
* Removed debug output
* De-inlined methods because optimized code did not work with them inlined
* Web interface can attach Daynaport again
* Improved handling of read-only hard disks
* Fixed issue with "all" semantics of DETACH
* rasctl supports adding removable media devices without providing a filename
* Removed unused flag in PbDeviceDefinition
* Updated rasctl output for ecjected media (resolves issue #199)
* Validate default folder name when changing default folder
2021-08-21 21:45:30 +00:00
|
|
|
|
ctrl.bus->SetBSY(false);
|
2020-08-28 14:18:02 +00:00
|
|
|
|
|
|
|
|
|
// Initialize status and message
|
|
|
|
|
ctrl.status = 0x00;
|
|
|
|
|
ctrl.message = 0x00;
|
2021-10-13 09:03:31 +00:00
|
|
|
|
|
|
|
|
|
ctrl.lun = -1;
|
|
|
|
|
|
2020-08-28 14:18:02 +00:00
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Move to selection phase
|
|
|
|
|
if (ctrl.bus->GetSEL() && !ctrl.bus->GetBSY()) {
|
|
|
|
|
Selection();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
//
|
|
|
|
|
// Selection phase
|
|
|
|
|
//
|
|
|
|
|
//---------------------------------------------------------------------------
|
2021-07-26 18:33:36 +00:00
|
|
|
|
void SASIDEV::Selection()
|
2020-08-28 14:18:02 +00:00
|
|
|
|
{
|
|
|
|
|
// Phase change
|
|
|
|
|
if (ctrl.phase != BUS::selection) {
|
|
|
|
|
// Invalid if IDs do not match
|
2021-07-07 21:46:45 +00:00
|
|
|
|
DWORD id = 1 << ctrl.m_scsi_id;
|
2020-08-28 14:18:02 +00:00
|
|
|
|
if ((ctrl.bus->GetDAT() & id) == 0) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
Configurable block size, controller/device cleanup, dispatchers per device, bridge setup (#203)
* Use foreach
* Renaming
* Revert "Renaming"
This reverts commit b0554b9c0a052e282625a4565d429313af2b3cc7.
* Manpage updates
* Removed obsolete assertions
* Replaced QWORD by uint64_t and removed respective typedef
* Removed LPCSTR typedef
* Removed LPCTSTR typedef
* Removed LPTSTR typedef
* Renamed SCSI command interface classes
* Renamed xm6.h to rascsi.h
* Moved interface classes to new interfaces subfolder
* Added include
* Fixed compilation issues of 64 bit Ubuntu
* Renaming
* Sort block sizes
* protobuf interface description update
* Fixed handling for sector size for non-disk devices
* Fixed typo
* Fixed comment
* Translate code commends into English, removing redundant ones (#214)
* Comment update
* For other bridge interfaces than eth0 IP address and netmask can be provided
* Added special rule for testing on x86 PCs
* Translated code comments into English, removing some redundant ones in the process, plus fixing typos (#215)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* Comment update
* Removed unused typedefs
* Added special rule for testing on x86 PCs
* Comment update
* Comment update
* Updated capacity calculation
* Updated protobuf interface to signal parameter support
* Simplified protobuf interface
* Updated rasctl server info output
* Updated logging
* protobuf interface has to return block only if it is configurable
* Updated block size handling
* Improved error message if ID is already in use
* Removed typedef
* Renamed protobuf interface method
* Renaming
* Use protobuf::Messsge instead of protobuf::MessageLite
* default_image_folder cannot be an empty string, removed obsolete check
* Logging update
* Made some error messages more concise
* Removed magic constant
* Updated error message
* Comment update
* Names of removable media drives must be constant and not contain the capacity
* Improved DeviceFactory error handling
* More error handing improvements
* Interface comment update
* Pass interface list to ctapdriver when creating bridge
* Moved initialization code
* Updated rasctl server information output
* Improved handling of MO capacities
* Renaming
* Comment update
* Reject inserting a medium when there is already a medium present (eject first)
* Save list of files in use before dry-run
* Updated rasctl server info message
* Comment update
* Fixed typo
* Cleaned list handling
* Sort devices list by ID *and unit*
* Improved block size check
* Fixed issue with missing method in old Raspberry Pi OS protobuf implementation
* Updated error message
* Improve and fix bugs with saving&loading configuration files for rascsi-web (#218)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Removed unused structures, code and type cleanup
* Use unscoped enums for commands
* SASI Format opcode is 0x06, not 0x04 (see comment in code)
* Removed duplicate command
* Code review, data type updates
* Data type updated, use #pragma once
* Logging update
* Renaming
* Renaming
* Removed duplicate code
* Renaming
* Refactoring
* Removed TODO
* Updated logging
* Comment update
* Comment update
* Updated GetEventStatusNotification
* Removed goto
* Options -h and -v do not require to be the root user (fixes issue #166)
* Updated error messages and exception handling
* Added number of supported LUNs to protobuf interface
* Updated list handling of protobuf interface
* Comment update
* Improved error handling
* Added missing return statement
* Allow empty device list
* Fixed unnecessary detach_all() when config file isn't read (#221)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Protecting/unprotecing a non-ready medium is considered not possible
* Updated error message
* Extract detaching all devices, add parameter list support
* Comment update
* Fixed typos
* Restore files in use if dry-run fails
* Feature configurable reserved id for rascsi-web (#223)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make the reserved SCSI id configurable through an argument to start.sh; make the rascsi-web service reserve 7 by default to maintain current behavior.
* Make it possible to reserve multiple scsi ids in the web ui
* Added support for reserved IDs
* rasctl output update
* Re-ordered logging
* Logging update
* Make use of the newly introduced 'rasctl -r' to have the webui reserve ids on the backend side upon startup (#224)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Updated string to integer conversions
* Improved string to integer conversion
* Move string to integer conversion to rasutil
* Removed unused variable
* Fixed detach, which did not remove the filename from the filenames set
* Re-added folder to gitignore
* Set/Display patch version
* Fix issue where reserved ids were not reserved again when restarting rascsi-service from within the web ui (#226)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Make sure reserved SCSI IDs gets reserved again when restarting rascsi-service from within the web ui
* Updated interface comment
* Accept daynaport as legacy type
* Fixed typo
* Remove file from the list of files in use when ejected with a SCSI command
* Check for attached device for INSERT, EJECT, PROTECT, UNPROTECT
* Fixed error handling
* Fixed filepath handling
* Added more device shortcuts to rasctl
* Fixed function declaration
* Extraced ATTACH and DETACH
* Extracted INSERT
* Simplified ProcessCmd
* Comment update
* Fixed memory leak
* Log information on whether a new device is protected or read-only
* Updated errro message
* Updated error message
* Initialize private fields
* Updated rasctl help message
* Added DEVICE_INFO to protobuf interface
* Improved error handling
* DEVICE_INFO supports device list
* Updated server info handling
* Unified result handling with oneof, all commands now return PbResult
* A result can always return a message string
* Fixed typo
* Simplified sending of commands
* Improved error handling
* Removed unused code
* Updated error handling
* Code cleanup
* Comment update
* Updated logging
* Updated error handling
* Updated handling of removed status for devices without image file support
* Comment update
* Fixed typo
* Updated logging
* Updated parameter handling
* Updated setting default interfaces
* Revert "Updated setting default interfaces"
This reverts commit 210abc775d9a79dd0c631cf3877966a2923f4d5b.
* Revert "Updated parameter handling"
This reverts commit 35302addd59f5f5e1cc032888ba32dcbb426a846.
* rascsi supports reserving IDs
* Updated help message
* Replaced BOOL by bool
* Logging update
* Logging update
* Added default parameters to device properties
* Return parameters a device was set up with
* Improved device initialization
* Updated default parameter handling
* Updated default parameter handling
* Fixed typo
* Comment updates
* Comment update
* Manage default parameters in the respective device
* Do not pass empty parameter string
* Added supports_params flag
* Made comparisons more consistent
* Updated error handling
* Updated exception handling
* Renaming
* Comment update
* NEC sectors size must be 512 bytes
* Updated logging
* Updated vendor name handling
* Updated handling of media loading/unloading
* Added stoppable property and stopped status
* Made MO stoppable
* Removed duplicate code
* Removed duplicate code
* Copy read-only property
* Renaming
* Removed duplicate code, added START/STOP
* Improved default parameter handling
* Updated load/eject handling
* Logging update
* Fixed typo
* Verified START/STOP UNIT
* Updated logging
* Updated status handling
* Updated status handling
* More status handling updates
* Logging update
* Made instance fields local variables
* Made disk_t private
* Made some data structures private
* Fixed ARM compile issue
* Fixed ctapdriver initialization issue
* Reset read-only status when opening an image file
* Made logging more consistent
* Updated log level
* Log load/eject on error level for testing
* Revert "Log load/eject on error level for testing"
This reverts commit d35a15ea8e520517d25e1e1054ad1aeda9f85f2e.
* Assume drive is not ready after having been stopped
* Updated status handling
* Fixed typo
* Rebuild manpage
* Fixed issue #234 (MODE SENSE (10) returns wrong mode parameter header)
* Removed unused code
* Enum data type update
* Removed duplicate range check
* Removed duplicate code
* Removed more duplicate code
* Logging update
* SCCD sector size was not meant to be configurable
* Updated configurable sector size properties
* Removed assertion
* Improved error handling
* Updated error handling
* Re-added special error handling only relevant for SASI
* Added TODOs
* Comment update
* Added override modifier
* Removed obsolete debug flag (related code was not called)
* Comment and logging updates
* Removed obsolete try/catch
* Revert "Removed obsolete try/catch"
This reverts commit 39ca12d8b153c706316ce79f4fec65c9abc60024.
* Comment update
* Removed duplicate code
* Updated error messages, use more foreach loops
* Updated logging
* Logging update
* README update
* Added block_count
* Evaluate block size when inserting a media
* rasctl display capacity if available
* Info message update
* Added missing product name to NEC vital product data
* MO block size depends on capacity only
* Extended property/status display
* Property display update
* Updated error handling
* (Doc only changes) Fix typos and add clarification that SASI is used on Unix workstations
Co-authored-by: Daniel Markstedt <markstedt@gmail.com>
Co-authored-by: Tony Kuker <akuker@gmail.com>
2021-09-15 01:23:04 +00:00
|
|
|
|
// Return if there is no valid LUN
|
2020-08-28 14:18:02 +00:00
|
|
|
|
if (!HasUnit()) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
2021-02-07 19:00:48 +00:00
|
|
|
|
LOGTRACE("%s Selection Phase ID=%d (with device)", __PRETTY_FUNCTION__, (int)ctrl.m_scsi_id);
|
2020-08-28 14:18:02 +00:00
|
|
|
|
|
|
|
|
|
// Phase change
|
|
|
|
|
ctrl.phase = BUS::selection;
|
|
|
|
|
|
|
|
|
|
// Raiase BSY and respond
|
Refactoring, device handling extensions, additional settings, improved error handling, 64 bit OS support, fixed issues (#184)
* Device type unification, support of removable media
* Added support for .hdr extension
* Removable flag cleanup
* Manpage update
* Enriched PbOperation with PbDevice
* Added file size to PbImageFile
* Added device list support
* Set image_file
* Make remote interface more robust by ignoring SIGPIPE
* Return status only once
* Fixed typo
* Error handling update
* When starting rascsi parse everything before attaching devices
* Added dry run mode
* Comment update
* Updated logging
* Added Device base class, Disk class inherits from it
* Renaming
* Use vectors for controllers and disks, as preparation for using maps
* Updated file support handling
* Comment update
* DaynaPort and Bridge inherit from Device instead of Disk
* ProcessCmd() now works with devices instead of disks
* Renaming
* Added DeviceFactory
* Improved factory
* Comment update
* protected disk_t
* Code cleanup, added translations
* Device name can be set for rascsi
* rasctl can set device name
* Manpage update
* Manpage update
* Formatting update
* Check for missing name
* Initialize fd
* Initialize type
* Fixed string length issue
* Updated capacity formatting
* Fixed typo
* Split PbDevice into device and device definition
* Added TODO
* Renaming
* Renaming
* Device types can be explicitly specified with -t (no FILE:TYPE syntax anymore)
* Fixed compile-time issue
* Removed unused Append mode, updated read-only handling
* Type handling and manpage update
* Cleanup
* rasctl parser cleanup
* Review
* Constructor update
* Added .hdr (SCRM) support to web interface, tested web interface
* Default folder can be set remotely
* Removed deprecated operation
* DETACH supports all parameters in order to detach all devices
* include cleanup
* Logging should not depend on NDEBUG, for RaSCSI it is not peformance-critical
* INFO is default log level
* Exception renaming
* Updated GetPaddedName()
* Inheritance update
* Added BlockDevice class
* Removed unused code
* Updated typedefs
* Revert "Updated typedefs"
This reverts commit 546b46215a4d9b65067a11698e59ab1123cc6d64.
* Removed unused code
* Fixed warnign
* Use standard C++ integer types, use streams to resolve printf data type issues
* Added TODOs
* Added TODO
* Renaming
* Added TODO
* Added TODO
* Improved dry-run
* Code cleanup
* Updated handling of unknown options, code review and cleanup
* Manpage update
* Added PrimaryDevice
* Include cleanup
* Added pure virtual methods
* Comment updates
* Split rasutil
* Replaced some occurrences of BOOL
* Removed obsolete RASCSI definition in xm6.h
* Removed unused code, updated TODOs, replaced BOOL
* Added capacity check (issue #192)
* Fixed (most likely) https://github.com/akuker/RASCSI/issues/191
* Fixed wrong error messages
* For root the default image folder is /home/pi/images, updated error handling
* Dynaport code review
* Improved error handling
* Implemented READ CAPACITY(16)
* Comment update
* Commands can be 16 bytes long
* Implemented READ/WRITE/VERIFY(16)
* Comment update
* Renamed method to reflect the name of the respective SCSI command
* Do not created devices during dryRun
* Fixed padding of SCSIHD_APPLE vendor and product
* Initial implementation
* Updated ReportLuns
* Byte count update
* Fixed typo
* Finalized REPORT LUNS
* Removed TODO
* Updated TODO
* TODO update
* Updated device factory
* Comment update
* 64 bit update, tested on Ubuntu 64 bit system
* Removed assertion
* SCSI hard disks always have Apple specific mode pages (resolves issue #193)
* Error messsage update, 64 bit cleanup
* Reduced streams usage
* Updated handling of device flags
* MOs are protectable
* Removed duplicate error code handling
* Removed duplicate code
* Fixed CmdReadToc buffer overflow (https://github.com/akuker/RASCSI/issues/194)
* Added naive implementation of GET EVENT STATUS NOTIFICATION to avoid wranings
* HD must set removable device bit if the media is removable
* Removed duplicate logging
* Updated daynaport additional length
* Removed broken daynaport REQUEST SENSE. Successfully tested with my Mac.
* EnableInterface should not always return TRUE
* Updated Inquiry
* Updated LUN handling
* Replaced incorrect free by delete
* Updated comments and write-protection handling
* Made default HD name consistent
* STATUS_NOERROR is default
* Fixed Eject
* More eject handling updates
* Manpage updates
* Logging update
* Changed debug level
* Logging update
* Log capacity of all media types
* Logging update
* Encapsulated disk.blocks
* Encapsulated sector size
* Added overrides
* Added more overrides
* Fixed error message
* Fixed typos
* Fixed logging
* Added logging
* Use PrimaryDevice when calling Inquiry
* Comment update
* Changed default buffer size for testing
* Reverted last change
* Removed debug output
* De-inlined methods because optimized code did not work with them inlined
* Web interface can attach Daynaport again
* Improved handling of read-only hard disks
* Fixed issue with "all" semantics of DETACH
* rasctl supports adding removable media devices without providing a filename
* Removed unused flag in PbDeviceDefinition
* Updated rasctl output for ecjected media (resolves issue #199)
* Validate default folder name when changing default folder
2021-08-21 21:45:30 +00:00
|
|
|
|
ctrl.bus->SetBSY(true);
|
2020-08-28 14:18:02 +00:00
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Command phase shifts when selection is completed
|
|
|
|
|
if (!ctrl.bus->GetSEL() && ctrl.bus->GetBSY()) {
|
|
|
|
|
Command();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
//
|
Configurable block size, controller/device cleanup, dispatchers per device, bridge setup (#203)
* Use foreach
* Renaming
* Revert "Renaming"
This reverts commit b0554b9c0a052e282625a4565d429313af2b3cc7.
* Manpage updates
* Removed obsolete assertions
* Replaced QWORD by uint64_t and removed respective typedef
* Removed LPCSTR typedef
* Removed LPCTSTR typedef
* Removed LPTSTR typedef
* Renamed SCSI command interface classes
* Renamed xm6.h to rascsi.h
* Moved interface classes to new interfaces subfolder
* Added include
* Fixed compilation issues of 64 bit Ubuntu
* Renaming
* Sort block sizes
* protobuf interface description update
* Fixed handling for sector size for non-disk devices
* Fixed typo
* Fixed comment
* Translate code commends into English, removing redundant ones (#214)
* Comment update
* For other bridge interfaces than eth0 IP address and netmask can be provided
* Added special rule for testing on x86 PCs
* Translated code comments into English, removing some redundant ones in the process, plus fixing typos (#215)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* Comment update
* Removed unused typedefs
* Added special rule for testing on x86 PCs
* Comment update
* Comment update
* Updated capacity calculation
* Updated protobuf interface to signal parameter support
* Simplified protobuf interface
* Updated rasctl server info output
* Updated logging
* protobuf interface has to return block only if it is configurable
* Updated block size handling
* Improved error message if ID is already in use
* Removed typedef
* Renamed protobuf interface method
* Renaming
* Use protobuf::Messsge instead of protobuf::MessageLite
* default_image_folder cannot be an empty string, removed obsolete check
* Logging update
* Made some error messages more concise
* Removed magic constant
* Updated error message
* Comment update
* Names of removable media drives must be constant and not contain the capacity
* Improved DeviceFactory error handling
* More error handing improvements
* Interface comment update
* Pass interface list to ctapdriver when creating bridge
* Moved initialization code
* Updated rasctl server information output
* Improved handling of MO capacities
* Renaming
* Comment update
* Reject inserting a medium when there is already a medium present (eject first)
* Save list of files in use before dry-run
* Updated rasctl server info message
* Comment update
* Fixed typo
* Cleaned list handling
* Sort devices list by ID *and unit*
* Improved block size check
* Fixed issue with missing method in old Raspberry Pi OS protobuf implementation
* Updated error message
* Improve and fix bugs with saving&loading configuration files for rascsi-web (#218)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Removed unused structures, code and type cleanup
* Use unscoped enums for commands
* SASI Format opcode is 0x06, not 0x04 (see comment in code)
* Removed duplicate command
* Code review, data type updates
* Data type updated, use #pragma once
* Logging update
* Renaming
* Renaming
* Removed duplicate code
* Renaming
* Refactoring
* Removed TODO
* Updated logging
* Comment update
* Comment update
* Updated GetEventStatusNotification
* Removed goto
* Options -h and -v do not require to be the root user (fixes issue #166)
* Updated error messages and exception handling
* Added number of supported LUNs to protobuf interface
* Updated list handling of protobuf interface
* Comment update
* Improved error handling
* Added missing return statement
* Allow empty device list
* Fixed unnecessary detach_all() when config file isn't read (#221)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Protecting/unprotecing a non-ready medium is considered not possible
* Updated error message
* Extract detaching all devices, add parameter list support
* Comment update
* Fixed typos
* Restore files in use if dry-run fails
* Feature configurable reserved id for rascsi-web (#223)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make the reserved SCSI id configurable through an argument to start.sh; make the rascsi-web service reserve 7 by default to maintain current behavior.
* Make it possible to reserve multiple scsi ids in the web ui
* Added support for reserved IDs
* rasctl output update
* Re-ordered logging
* Logging update
* Make use of the newly introduced 'rasctl -r' to have the webui reserve ids on the backend side upon startup (#224)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Updated string to integer conversions
* Improved string to integer conversion
* Move string to integer conversion to rasutil
* Removed unused variable
* Fixed detach, which did not remove the filename from the filenames set
* Re-added folder to gitignore
* Set/Display patch version
* Fix issue where reserved ids were not reserved again when restarting rascsi-service from within the web ui (#226)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Make sure reserved SCSI IDs gets reserved again when restarting rascsi-service from within the web ui
* Updated interface comment
* Accept daynaport as legacy type
* Fixed typo
* Remove file from the list of files in use when ejected with a SCSI command
* Check for attached device for INSERT, EJECT, PROTECT, UNPROTECT
* Fixed error handling
* Fixed filepath handling
* Added more device shortcuts to rasctl
* Fixed function declaration
* Extraced ATTACH and DETACH
* Extracted INSERT
* Simplified ProcessCmd
* Comment update
* Fixed memory leak
* Log information on whether a new device is protected or read-only
* Updated errro message
* Updated error message
* Initialize private fields
* Updated rasctl help message
* Added DEVICE_INFO to protobuf interface
* Improved error handling
* DEVICE_INFO supports device list
* Updated server info handling
* Unified result handling with oneof, all commands now return PbResult
* A result can always return a message string
* Fixed typo
* Simplified sending of commands
* Improved error handling
* Removed unused code
* Updated error handling
* Code cleanup
* Comment update
* Updated logging
* Updated error handling
* Updated handling of removed status for devices without image file support
* Comment update
* Fixed typo
* Updated logging
* Updated parameter handling
* Updated setting default interfaces
* Revert "Updated setting default interfaces"
This reverts commit 210abc775d9a79dd0c631cf3877966a2923f4d5b.
* Revert "Updated parameter handling"
This reverts commit 35302addd59f5f5e1cc032888ba32dcbb426a846.
* rascsi supports reserving IDs
* Updated help message
* Replaced BOOL by bool
* Logging update
* Logging update
* Added default parameters to device properties
* Return parameters a device was set up with
* Improved device initialization
* Updated default parameter handling
* Updated default parameter handling
* Fixed typo
* Comment updates
* Comment update
* Manage default parameters in the respective device
* Do not pass empty parameter string
* Added supports_params flag
* Made comparisons more consistent
* Updated error handling
* Updated exception handling
* Renaming
* Comment update
* NEC sectors size must be 512 bytes
* Updated logging
* Updated vendor name handling
* Updated handling of media loading/unloading
* Added stoppable property and stopped status
* Made MO stoppable
* Removed duplicate code
* Removed duplicate code
* Copy read-only property
* Renaming
* Removed duplicate code, added START/STOP
* Improved default parameter handling
* Updated load/eject handling
* Logging update
* Fixed typo
* Verified START/STOP UNIT
* Updated logging
* Updated status handling
* Updated status handling
* More status handling updates
* Logging update
* Made instance fields local variables
* Made disk_t private
* Made some data structures private
* Fixed ARM compile issue
* Fixed ctapdriver initialization issue
* Reset read-only status when opening an image file
* Made logging more consistent
* Updated log level
* Log load/eject on error level for testing
* Revert "Log load/eject on error level for testing"
This reverts commit d35a15ea8e520517d25e1e1054ad1aeda9f85f2e.
* Assume drive is not ready after having been stopped
* Updated status handling
* Fixed typo
* Rebuild manpage
* Fixed issue #234 (MODE SENSE (10) returns wrong mode parameter header)
* Removed unused code
* Enum data type update
* Removed duplicate range check
* Removed duplicate code
* Removed more duplicate code
* Logging update
* SCCD sector size was not meant to be configurable
* Updated configurable sector size properties
* Removed assertion
* Improved error handling
* Updated error handling
* Re-added special error handling only relevant for SASI
* Added TODOs
* Comment update
* Added override modifier
* Removed obsolete debug flag (related code was not called)
* Comment and logging updates
* Removed obsolete try/catch
* Revert "Removed obsolete try/catch"
This reverts commit 39ca12d8b153c706316ce79f4fec65c9abc60024.
* Comment update
* Removed duplicate code
* Updated error messages, use more foreach loops
* Updated logging
* Logging update
* README update
* Added block_count
* Evaluate block size when inserting a media
* rasctl display capacity if available
* Info message update
* Added missing product name to NEC vital product data
* MO block size depends on capacity only
* Extended property/status display
* Property display update
* Updated error handling
* (Doc only changes) Fix typos and add clarification that SASI is used on Unix workstations
Co-authored-by: Daniel Markstedt <markstedt@gmail.com>
Co-authored-by: Tony Kuker <akuker@gmail.com>
2021-09-15 01:23:04 +00:00
|
|
|
|
// Command phase (used by SASI and SCSI)
|
2020-08-28 14:18:02 +00:00
|
|
|
|
//
|
|
|
|
|
//---------------------------------------------------------------------------
|
2021-07-26 18:33:36 +00:00
|
|
|
|
void SASIDEV::Command()
|
2020-08-28 14:18:02 +00:00
|
|
|
|
{
|
|
|
|
|
// Phase change
|
|
|
|
|
if (ctrl.phase != BUS::command) {
|
2021-02-07 19:00:48 +00:00
|
|
|
|
LOGTRACE("%s Command Phase", __PRETTY_FUNCTION__);
|
2020-08-28 14:18:02 +00:00
|
|
|
|
|
|
|
|
|
// Phase Setting
|
|
|
|
|
ctrl.phase = BUS::command;
|
|
|
|
|
|
|
|
|
|
// Signal line operated by the target
|
|
|
|
|
ctrl.bus->SetMSG(FALSE);
|
|
|
|
|
ctrl.bus->SetCD(TRUE);
|
|
|
|
|
ctrl.bus->SetIO(FALSE);
|
|
|
|
|
|
|
|
|
|
// Data transfer is 6 bytes x 1 block
|
|
|
|
|
ctrl.offset = 0;
|
|
|
|
|
ctrl.length = 6;
|
|
|
|
|
ctrl.blocks = 1;
|
|
|
|
|
|
|
|
|
|
// If no byte can be received move to the status phase
|
2021-10-13 09:03:31 +00:00
|
|
|
|
int count = ctrl.bus->CommandHandShake(ctrl.buffer);
|
|
|
|
|
if (!count) {
|
2020-08-28 14:18:02 +00:00
|
|
|
|
Error();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
Refactoring, device handling extensions, additional settings, improved error handling, 64 bit OS support, fixed issues (#184)
* Device type unification, support of removable media
* Added support for .hdr extension
* Removable flag cleanup
* Manpage update
* Enriched PbOperation with PbDevice
* Added file size to PbImageFile
* Added device list support
* Set image_file
* Make remote interface more robust by ignoring SIGPIPE
* Return status only once
* Fixed typo
* Error handling update
* When starting rascsi parse everything before attaching devices
* Added dry run mode
* Comment update
* Updated logging
* Added Device base class, Disk class inherits from it
* Renaming
* Use vectors for controllers and disks, as preparation for using maps
* Updated file support handling
* Comment update
* DaynaPort and Bridge inherit from Device instead of Disk
* ProcessCmd() now works with devices instead of disks
* Renaming
* Added DeviceFactory
* Improved factory
* Comment update
* protected disk_t
* Code cleanup, added translations
* Device name can be set for rascsi
* rasctl can set device name
* Manpage update
* Manpage update
* Formatting update
* Check for missing name
* Initialize fd
* Initialize type
* Fixed string length issue
* Updated capacity formatting
* Fixed typo
* Split PbDevice into device and device definition
* Added TODO
* Renaming
* Renaming
* Device types can be explicitly specified with -t (no FILE:TYPE syntax anymore)
* Fixed compile-time issue
* Removed unused Append mode, updated read-only handling
* Type handling and manpage update
* Cleanup
* rasctl parser cleanup
* Review
* Constructor update
* Added .hdr (SCRM) support to web interface, tested web interface
* Default folder can be set remotely
* Removed deprecated operation
* DETACH supports all parameters in order to detach all devices
* include cleanup
* Logging should not depend on NDEBUG, for RaSCSI it is not peformance-critical
* INFO is default log level
* Exception renaming
* Updated GetPaddedName()
* Inheritance update
* Added BlockDevice class
* Removed unused code
* Updated typedefs
* Revert "Updated typedefs"
This reverts commit 546b46215a4d9b65067a11698e59ab1123cc6d64.
* Removed unused code
* Fixed warnign
* Use standard C++ integer types, use streams to resolve printf data type issues
* Added TODOs
* Added TODO
* Renaming
* Added TODO
* Added TODO
* Improved dry-run
* Code cleanup
* Updated handling of unknown options, code review and cleanup
* Manpage update
* Added PrimaryDevice
* Include cleanup
* Added pure virtual methods
* Comment updates
* Split rasutil
* Replaced some occurrences of BOOL
* Removed obsolete RASCSI definition in xm6.h
* Removed unused code, updated TODOs, replaced BOOL
* Added capacity check (issue #192)
* Fixed (most likely) https://github.com/akuker/RASCSI/issues/191
* Fixed wrong error messages
* For root the default image folder is /home/pi/images, updated error handling
* Dynaport code review
* Improved error handling
* Implemented READ CAPACITY(16)
* Comment update
* Commands can be 16 bytes long
* Implemented READ/WRITE/VERIFY(16)
* Comment update
* Renamed method to reflect the name of the respective SCSI command
* Do not created devices during dryRun
* Fixed padding of SCSIHD_APPLE vendor and product
* Initial implementation
* Updated ReportLuns
* Byte count update
* Fixed typo
* Finalized REPORT LUNS
* Removed TODO
* Updated TODO
* TODO update
* Updated device factory
* Comment update
* 64 bit update, tested on Ubuntu 64 bit system
* Removed assertion
* SCSI hard disks always have Apple specific mode pages (resolves issue #193)
* Error messsage update, 64 bit cleanup
* Reduced streams usage
* Updated handling of device flags
* MOs are protectable
* Removed duplicate error code handling
* Removed duplicate code
* Fixed CmdReadToc buffer overflow (https://github.com/akuker/RASCSI/issues/194)
* Added naive implementation of GET EVENT STATUS NOTIFICATION to avoid wranings
* HD must set removable device bit if the media is removable
* Removed duplicate logging
* Updated daynaport additional length
* Removed broken daynaport REQUEST SENSE. Successfully tested with my Mac.
* EnableInterface should not always return TRUE
* Updated Inquiry
* Updated LUN handling
* Replaced incorrect free by delete
* Updated comments and write-protection handling
* Made default HD name consistent
* STATUS_NOERROR is default
* Fixed Eject
* More eject handling updates
* Manpage updates
* Logging update
* Changed debug level
* Logging update
* Log capacity of all media types
* Logging update
* Encapsulated disk.blocks
* Encapsulated sector size
* Added overrides
* Added more overrides
* Fixed error message
* Fixed typos
* Fixed logging
* Added logging
* Use PrimaryDevice when calling Inquiry
* Comment update
* Changed default buffer size for testing
* Reverted last change
* Removed debug output
* De-inlined methods because optimized code did not work with them inlined
* Web interface can attach Daynaport again
* Improved handling of read-only hard disks
* Fixed issue with "all" semantics of DETACH
* rasctl supports adding removable media devices without providing a filename
* Removed unused flag in PbDeviceDefinition
* Updated rasctl output for ecjected media (resolves issue #199)
* Validate default folder name when changing default folder
2021-08-21 21:45:30 +00:00
|
|
|
|
ctrl.length = GPIOBUS::GetCommandByteCount(ctrl.buffer[0]);
|
2020-08-28 14:18:02 +00:00
|
|
|
|
|
|
|
|
|
// If not able to receive all, move to the status phase
|
|
|
|
|
if (count != (int)ctrl.length) {
|
|
|
|
|
Error();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Command data transfer
|
Refactoring, device handling extensions, additional settings, improved error handling, 64 bit OS support, fixed issues (#184)
* Device type unification, support of removable media
* Added support for .hdr extension
* Removable flag cleanup
* Manpage update
* Enriched PbOperation with PbDevice
* Added file size to PbImageFile
* Added device list support
* Set image_file
* Make remote interface more robust by ignoring SIGPIPE
* Return status only once
* Fixed typo
* Error handling update
* When starting rascsi parse everything before attaching devices
* Added dry run mode
* Comment update
* Updated logging
* Added Device base class, Disk class inherits from it
* Renaming
* Use vectors for controllers and disks, as preparation for using maps
* Updated file support handling
* Comment update
* DaynaPort and Bridge inherit from Device instead of Disk
* ProcessCmd() now works with devices instead of disks
* Renaming
* Added DeviceFactory
* Improved factory
* Comment update
* protected disk_t
* Code cleanup, added translations
* Device name can be set for rascsi
* rasctl can set device name
* Manpage update
* Manpage update
* Formatting update
* Check for missing name
* Initialize fd
* Initialize type
* Fixed string length issue
* Updated capacity formatting
* Fixed typo
* Split PbDevice into device and device definition
* Added TODO
* Renaming
* Renaming
* Device types can be explicitly specified with -t (no FILE:TYPE syntax anymore)
* Fixed compile-time issue
* Removed unused Append mode, updated read-only handling
* Type handling and manpage update
* Cleanup
* rasctl parser cleanup
* Review
* Constructor update
* Added .hdr (SCRM) support to web interface, tested web interface
* Default folder can be set remotely
* Removed deprecated operation
* DETACH supports all parameters in order to detach all devices
* include cleanup
* Logging should not depend on NDEBUG, for RaSCSI it is not peformance-critical
* INFO is default log level
* Exception renaming
* Updated GetPaddedName()
* Inheritance update
* Added BlockDevice class
* Removed unused code
* Updated typedefs
* Revert "Updated typedefs"
This reverts commit 546b46215a4d9b65067a11698e59ab1123cc6d64.
* Removed unused code
* Fixed warnign
* Use standard C++ integer types, use streams to resolve printf data type issues
* Added TODOs
* Added TODO
* Renaming
* Added TODO
* Added TODO
* Improved dry-run
* Code cleanup
* Updated handling of unknown options, code review and cleanup
* Manpage update
* Added PrimaryDevice
* Include cleanup
* Added pure virtual methods
* Comment updates
* Split rasutil
* Replaced some occurrences of BOOL
* Removed obsolete RASCSI definition in xm6.h
* Removed unused code, updated TODOs, replaced BOOL
* Added capacity check (issue #192)
* Fixed (most likely) https://github.com/akuker/RASCSI/issues/191
* Fixed wrong error messages
* For root the default image folder is /home/pi/images, updated error handling
* Dynaport code review
* Improved error handling
* Implemented READ CAPACITY(16)
* Comment update
* Commands can be 16 bytes long
* Implemented READ/WRITE/VERIFY(16)
* Comment update
* Renamed method to reflect the name of the respective SCSI command
* Do not created devices during dryRun
* Fixed padding of SCSIHD_APPLE vendor and product
* Initial implementation
* Updated ReportLuns
* Byte count update
* Fixed typo
* Finalized REPORT LUNS
* Removed TODO
* Updated TODO
* TODO update
* Updated device factory
* Comment update
* 64 bit update, tested on Ubuntu 64 bit system
* Removed assertion
* SCSI hard disks always have Apple specific mode pages (resolves issue #193)
* Error messsage update, 64 bit cleanup
* Reduced streams usage
* Updated handling of device flags
* MOs are protectable
* Removed duplicate error code handling
* Removed duplicate code
* Fixed CmdReadToc buffer overflow (https://github.com/akuker/RASCSI/issues/194)
* Added naive implementation of GET EVENT STATUS NOTIFICATION to avoid wranings
* HD must set removable device bit if the media is removable
* Removed duplicate logging
* Updated daynaport additional length
* Removed broken daynaport REQUEST SENSE. Successfully tested with my Mac.
* EnableInterface should not always return TRUE
* Updated Inquiry
* Updated LUN handling
* Replaced incorrect free by delete
* Updated comments and write-protection handling
* Made default HD name consistent
* STATUS_NOERROR is default
* Fixed Eject
* More eject handling updates
* Manpage updates
* Logging update
* Changed debug level
* Logging update
* Log capacity of all media types
* Logging update
* Encapsulated disk.blocks
* Encapsulated sector size
* Added overrides
* Added more overrides
* Fixed error message
* Fixed typos
* Fixed logging
* Added logging
* Use PrimaryDevice when calling Inquiry
* Comment update
* Changed default buffer size for testing
* Reverted last change
* Removed debug output
* De-inlined methods because optimized code did not work with them inlined
* Web interface can attach Daynaport again
* Improved handling of read-only hard disks
* Fixed issue with "all" semantics of DETACH
* rasctl supports adding removable media devices without providing a filename
* Removed unused flag in PbDeviceDefinition
* Updated rasctl output for ecjected media (resolves issue #199)
* Validate default folder name when changing default folder
2021-08-21 21:45:30 +00:00
|
|
|
|
for (int i = 0; i < (int)ctrl.length; i++) {
|
2020-08-28 14:18:02 +00:00
|
|
|
|
ctrl.cmd[i] = (DWORD)ctrl.buffer[i];
|
2021-11-19 01:24:36 +00:00
|
|
|
|
LOGTRACE("%s CDB[%d]=$%02X",__PRETTY_FUNCTION__, i, ctrl.cmd[i]);
|
2020-08-28 14:18:02 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Clear length and block
|
|
|
|
|
ctrl.length = 0;
|
|
|
|
|
ctrl.blocks = 0;
|
|
|
|
|
|
|
|
|
|
// Execution Phase
|
Configurable block size, controller/device cleanup, dispatchers per device, bridge setup (#203)
* Use foreach
* Renaming
* Revert "Renaming"
This reverts commit b0554b9c0a052e282625a4565d429313af2b3cc7.
* Manpage updates
* Removed obsolete assertions
* Replaced QWORD by uint64_t and removed respective typedef
* Removed LPCSTR typedef
* Removed LPCTSTR typedef
* Removed LPTSTR typedef
* Renamed SCSI command interface classes
* Renamed xm6.h to rascsi.h
* Moved interface classes to new interfaces subfolder
* Added include
* Fixed compilation issues of 64 bit Ubuntu
* Renaming
* Sort block sizes
* protobuf interface description update
* Fixed handling for sector size for non-disk devices
* Fixed typo
* Fixed comment
* Translate code commends into English, removing redundant ones (#214)
* Comment update
* For other bridge interfaces than eth0 IP address and netmask can be provided
* Added special rule for testing on x86 PCs
* Translated code comments into English, removing some redundant ones in the process, plus fixing typos (#215)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* Comment update
* Removed unused typedefs
* Added special rule for testing on x86 PCs
* Comment update
* Comment update
* Updated capacity calculation
* Updated protobuf interface to signal parameter support
* Simplified protobuf interface
* Updated rasctl server info output
* Updated logging
* protobuf interface has to return block only if it is configurable
* Updated block size handling
* Improved error message if ID is already in use
* Removed typedef
* Renamed protobuf interface method
* Renaming
* Use protobuf::Messsge instead of protobuf::MessageLite
* default_image_folder cannot be an empty string, removed obsolete check
* Logging update
* Made some error messages more concise
* Removed magic constant
* Updated error message
* Comment update
* Names of removable media drives must be constant and not contain the capacity
* Improved DeviceFactory error handling
* More error handing improvements
* Interface comment update
* Pass interface list to ctapdriver when creating bridge
* Moved initialization code
* Updated rasctl server information output
* Improved handling of MO capacities
* Renaming
* Comment update
* Reject inserting a medium when there is already a medium present (eject first)
* Save list of files in use before dry-run
* Updated rasctl server info message
* Comment update
* Fixed typo
* Cleaned list handling
* Sort devices list by ID *and unit*
* Improved block size check
* Fixed issue with missing method in old Raspberry Pi OS protobuf implementation
* Updated error message
* Improve and fix bugs with saving&loading configuration files for rascsi-web (#218)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Removed unused structures, code and type cleanup
* Use unscoped enums for commands
* SASI Format opcode is 0x06, not 0x04 (see comment in code)
* Removed duplicate command
* Code review, data type updates
* Data type updated, use #pragma once
* Logging update
* Renaming
* Renaming
* Removed duplicate code
* Renaming
* Refactoring
* Removed TODO
* Updated logging
* Comment update
* Comment update
* Updated GetEventStatusNotification
* Removed goto
* Options -h and -v do not require to be the root user (fixes issue #166)
* Updated error messages and exception handling
* Added number of supported LUNs to protobuf interface
* Updated list handling of protobuf interface
* Comment update
* Improved error handling
* Added missing return statement
* Allow empty device list
* Fixed unnecessary detach_all() when config file isn't read (#221)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Protecting/unprotecing a non-ready medium is considered not possible
* Updated error message
* Extract detaching all devices, add parameter list support
* Comment update
* Fixed typos
* Restore files in use if dry-run fails
* Feature configurable reserved id for rascsi-web (#223)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make the reserved SCSI id configurable through an argument to start.sh; make the rascsi-web service reserve 7 by default to maintain current behavior.
* Make it possible to reserve multiple scsi ids in the web ui
* Added support for reserved IDs
* rasctl output update
* Re-ordered logging
* Logging update
* Make use of the newly introduced 'rasctl -r' to have the webui reserve ids on the backend side upon startup (#224)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Updated string to integer conversions
* Improved string to integer conversion
* Move string to integer conversion to rasutil
* Removed unused variable
* Fixed detach, which did not remove the filename from the filenames set
* Re-added folder to gitignore
* Set/Display patch version
* Fix issue where reserved ids were not reserved again when restarting rascsi-service from within the web ui (#226)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Make sure reserved SCSI IDs gets reserved again when restarting rascsi-service from within the web ui
* Updated interface comment
* Accept daynaport as legacy type
* Fixed typo
* Remove file from the list of files in use when ejected with a SCSI command
* Check for attached device for INSERT, EJECT, PROTECT, UNPROTECT
* Fixed error handling
* Fixed filepath handling
* Added more device shortcuts to rasctl
* Fixed function declaration
* Extraced ATTACH and DETACH
* Extracted INSERT
* Simplified ProcessCmd
* Comment update
* Fixed memory leak
* Log information on whether a new device is protected or read-only
* Updated errro message
* Updated error message
* Initialize private fields
* Updated rasctl help message
* Added DEVICE_INFO to protobuf interface
* Improved error handling
* DEVICE_INFO supports device list
* Updated server info handling
* Unified result handling with oneof, all commands now return PbResult
* A result can always return a message string
* Fixed typo
* Simplified sending of commands
* Improved error handling
* Removed unused code
* Updated error handling
* Code cleanup
* Comment update
* Updated logging
* Updated error handling
* Updated handling of removed status for devices without image file support
* Comment update
* Fixed typo
* Updated logging
* Updated parameter handling
* Updated setting default interfaces
* Revert "Updated setting default interfaces"
This reverts commit 210abc775d9a79dd0c631cf3877966a2923f4d5b.
* Revert "Updated parameter handling"
This reverts commit 35302addd59f5f5e1cc032888ba32dcbb426a846.
* rascsi supports reserving IDs
* Updated help message
* Replaced BOOL by bool
* Logging update
* Logging update
* Added default parameters to device properties
* Return parameters a device was set up with
* Improved device initialization
* Updated default parameter handling
* Updated default parameter handling
* Fixed typo
* Comment updates
* Comment update
* Manage default parameters in the respective device
* Do not pass empty parameter string
* Added supports_params flag
* Made comparisons more consistent
* Updated error handling
* Updated exception handling
* Renaming
* Comment update
* NEC sectors size must be 512 bytes
* Updated logging
* Updated vendor name handling
* Updated handling of media loading/unloading
* Added stoppable property and stopped status
* Made MO stoppable
* Removed duplicate code
* Removed duplicate code
* Copy read-only property
* Renaming
* Removed duplicate code, added START/STOP
* Improved default parameter handling
* Updated load/eject handling
* Logging update
* Fixed typo
* Verified START/STOP UNIT
* Updated logging
* Updated status handling
* Updated status handling
* More status handling updates
* Logging update
* Made instance fields local variables
* Made disk_t private
* Made some data structures private
* Fixed ARM compile issue
* Fixed ctapdriver initialization issue
* Reset read-only status when opening an image file
* Made logging more consistent
* Updated log level
* Log load/eject on error level for testing
* Revert "Log load/eject on error level for testing"
This reverts commit d35a15ea8e520517d25e1e1054ad1aeda9f85f2e.
* Assume drive is not ready after having been stopped
* Updated status handling
* Fixed typo
* Rebuild manpage
* Fixed issue #234 (MODE SENSE (10) returns wrong mode parameter header)
* Removed unused code
* Enum data type update
* Removed duplicate range check
* Removed duplicate code
* Removed more duplicate code
* Logging update
* SCCD sector size was not meant to be configurable
* Updated configurable sector size properties
* Removed assertion
* Improved error handling
* Updated error handling
* Re-added special error handling only relevant for SASI
* Added TODOs
* Comment update
* Added override modifier
* Removed obsolete debug flag (related code was not called)
* Comment and logging updates
* Removed obsolete try/catch
* Revert "Removed obsolete try/catch"
This reverts commit 39ca12d8b153c706316ce79f4fec65c9abc60024.
* Comment update
* Removed duplicate code
* Updated error messages, use more foreach loops
* Updated logging
* Logging update
* README update
* Added block_count
* Evaluate block size when inserting a media
* rasctl display capacity if available
* Info message update
* Added missing product name to NEC vital product data
* MO block size depends on capacity only
* Extended property/status display
* Property display update
* Updated error handling
* (Doc only changes) Fix typos and add clarification that SASI is used on Unix workstations
Co-authored-by: Daniel Markstedt <markstedt@gmail.com>
Co-authored-by: Tony Kuker <akuker@gmail.com>
2021-09-15 01:23:04 +00:00
|
|
|
|
Execute();
|
2020-08-28 14:18:02 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
//
|
|
|
|
|
// Execution Phase
|
|
|
|
|
//
|
|
|
|
|
//---------------------------------------------------------------------------
|
2021-07-26 18:33:36 +00:00
|
|
|
|
void SASIDEV::Execute()
|
2020-08-28 14:18:02 +00:00
|
|
|
|
{
|
2021-02-07 19:00:48 +00:00
|
|
|
|
LOGTRACE("%s Execution Phase Command %02X", __PRETTY_FUNCTION__, (WORD)ctrl.cmd[0]);
|
2020-08-28 14:18:02 +00:00
|
|
|
|
|
|
|
|
|
// Phase Setting
|
|
|
|
|
ctrl.phase = BUS::execute;
|
|
|
|
|
|
|
|
|
|
// Initialization for data transfer
|
|
|
|
|
ctrl.offset = 0;
|
|
|
|
|
ctrl.blocks = 1;
|
|
|
|
|
ctrl.execstart = SysTimer::GetTimerLow();
|
|
|
|
|
|
2021-10-22 18:16:37 +00:00
|
|
|
|
// Discard pending sense data from the previous command if the current command is not REQUEST SENSE
|
2021-10-24 06:10:31 +00:00
|
|
|
|
if ((SASIDEV::sasi_command)ctrl.cmd[0] != SASIDEV::eCmdRequestSense) {
|
2021-10-22 18:16:37 +00:00
|
|
|
|
ctrl.status = 0;
|
|
|
|
|
ctrl.device->SetStatusCode(0);
|
|
|
|
|
}
|
|
|
|
|
|
2020-08-28 14:18:02 +00:00
|
|
|
|
// Process by command
|
Refactoring, device handling extensions, additional settings, improved error handling, 64 bit OS support, fixed issues (#184)
* Device type unification, support of removable media
* Added support for .hdr extension
* Removable flag cleanup
* Manpage update
* Enriched PbOperation with PbDevice
* Added file size to PbImageFile
* Added device list support
* Set image_file
* Make remote interface more robust by ignoring SIGPIPE
* Return status only once
* Fixed typo
* Error handling update
* When starting rascsi parse everything before attaching devices
* Added dry run mode
* Comment update
* Updated logging
* Added Device base class, Disk class inherits from it
* Renaming
* Use vectors for controllers and disks, as preparation for using maps
* Updated file support handling
* Comment update
* DaynaPort and Bridge inherit from Device instead of Disk
* ProcessCmd() now works with devices instead of disks
* Renaming
* Added DeviceFactory
* Improved factory
* Comment update
* protected disk_t
* Code cleanup, added translations
* Device name can be set for rascsi
* rasctl can set device name
* Manpage update
* Manpage update
* Formatting update
* Check for missing name
* Initialize fd
* Initialize type
* Fixed string length issue
* Updated capacity formatting
* Fixed typo
* Split PbDevice into device and device definition
* Added TODO
* Renaming
* Renaming
* Device types can be explicitly specified with -t (no FILE:TYPE syntax anymore)
* Fixed compile-time issue
* Removed unused Append mode, updated read-only handling
* Type handling and manpage update
* Cleanup
* rasctl parser cleanup
* Review
* Constructor update
* Added .hdr (SCRM) support to web interface, tested web interface
* Default folder can be set remotely
* Removed deprecated operation
* DETACH supports all parameters in order to detach all devices
* include cleanup
* Logging should not depend on NDEBUG, for RaSCSI it is not peformance-critical
* INFO is default log level
* Exception renaming
* Updated GetPaddedName()
* Inheritance update
* Added BlockDevice class
* Removed unused code
* Updated typedefs
* Revert "Updated typedefs"
This reverts commit 546b46215a4d9b65067a11698e59ab1123cc6d64.
* Removed unused code
* Fixed warnign
* Use standard C++ integer types, use streams to resolve printf data type issues
* Added TODOs
* Added TODO
* Renaming
* Added TODO
* Added TODO
* Improved dry-run
* Code cleanup
* Updated handling of unknown options, code review and cleanup
* Manpage update
* Added PrimaryDevice
* Include cleanup
* Added pure virtual methods
* Comment updates
* Split rasutil
* Replaced some occurrences of BOOL
* Removed obsolete RASCSI definition in xm6.h
* Removed unused code, updated TODOs, replaced BOOL
* Added capacity check (issue #192)
* Fixed (most likely) https://github.com/akuker/RASCSI/issues/191
* Fixed wrong error messages
* For root the default image folder is /home/pi/images, updated error handling
* Dynaport code review
* Improved error handling
* Implemented READ CAPACITY(16)
* Comment update
* Commands can be 16 bytes long
* Implemented READ/WRITE/VERIFY(16)
* Comment update
* Renamed method to reflect the name of the respective SCSI command
* Do not created devices during dryRun
* Fixed padding of SCSIHD_APPLE vendor and product
* Initial implementation
* Updated ReportLuns
* Byte count update
* Fixed typo
* Finalized REPORT LUNS
* Removed TODO
* Updated TODO
* TODO update
* Updated device factory
* Comment update
* 64 bit update, tested on Ubuntu 64 bit system
* Removed assertion
* SCSI hard disks always have Apple specific mode pages (resolves issue #193)
* Error messsage update, 64 bit cleanup
* Reduced streams usage
* Updated handling of device flags
* MOs are protectable
* Removed duplicate error code handling
* Removed duplicate code
* Fixed CmdReadToc buffer overflow (https://github.com/akuker/RASCSI/issues/194)
* Added naive implementation of GET EVENT STATUS NOTIFICATION to avoid wranings
* HD must set removable device bit if the media is removable
* Removed duplicate logging
* Updated daynaport additional length
* Removed broken daynaport REQUEST SENSE. Successfully tested with my Mac.
* EnableInterface should not always return TRUE
* Updated Inquiry
* Updated LUN handling
* Replaced incorrect free by delete
* Updated comments and write-protection handling
* Made default HD name consistent
* STATUS_NOERROR is default
* Fixed Eject
* More eject handling updates
* Manpage updates
* Logging update
* Changed debug level
* Logging update
* Log capacity of all media types
* Logging update
* Encapsulated disk.blocks
* Encapsulated sector size
* Added overrides
* Added more overrides
* Fixed error message
* Fixed typos
* Fixed logging
* Added logging
* Use PrimaryDevice when calling Inquiry
* Comment update
* Changed default buffer size for testing
* Reverted last change
* Removed debug output
* De-inlined methods because optimized code did not work with them inlined
* Web interface can attach Daynaport again
* Improved handling of read-only hard disks
* Fixed issue with "all" semantics of DETACH
* rasctl supports adding removable media devices without providing a filename
* Removed unused flag in PbDeviceDefinition
* Updated rasctl output for ecjected media (resolves issue #199)
* Validate default folder name when changing default folder
2021-08-21 21:45:30 +00:00
|
|
|
|
// TODO This code does not belong here. Each device type needs such a dispatcher, which the controller has to call.
|
Configurable block size, controller/device cleanup, dispatchers per device, bridge setup (#203)
* Use foreach
* Renaming
* Revert "Renaming"
This reverts commit b0554b9c0a052e282625a4565d429313af2b3cc7.
* Manpage updates
* Removed obsolete assertions
* Replaced QWORD by uint64_t and removed respective typedef
* Removed LPCSTR typedef
* Removed LPCTSTR typedef
* Removed LPTSTR typedef
* Renamed SCSI command interface classes
* Renamed xm6.h to rascsi.h
* Moved interface classes to new interfaces subfolder
* Added include
* Fixed compilation issues of 64 bit Ubuntu
* Renaming
* Sort block sizes
* protobuf interface description update
* Fixed handling for sector size for non-disk devices
* Fixed typo
* Fixed comment
* Translate code commends into English, removing redundant ones (#214)
* Comment update
* For other bridge interfaces than eth0 IP address and netmask can be provided
* Added special rule for testing on x86 PCs
* Translated code comments into English, removing some redundant ones in the process, plus fixing typos (#215)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* Comment update
* Removed unused typedefs
* Added special rule for testing on x86 PCs
* Comment update
* Comment update
* Updated capacity calculation
* Updated protobuf interface to signal parameter support
* Simplified protobuf interface
* Updated rasctl server info output
* Updated logging
* protobuf interface has to return block only if it is configurable
* Updated block size handling
* Improved error message if ID is already in use
* Removed typedef
* Renamed protobuf interface method
* Renaming
* Use protobuf::Messsge instead of protobuf::MessageLite
* default_image_folder cannot be an empty string, removed obsolete check
* Logging update
* Made some error messages more concise
* Removed magic constant
* Updated error message
* Comment update
* Names of removable media drives must be constant and not contain the capacity
* Improved DeviceFactory error handling
* More error handing improvements
* Interface comment update
* Pass interface list to ctapdriver when creating bridge
* Moved initialization code
* Updated rasctl server information output
* Improved handling of MO capacities
* Renaming
* Comment update
* Reject inserting a medium when there is already a medium present (eject first)
* Save list of files in use before dry-run
* Updated rasctl server info message
* Comment update
* Fixed typo
* Cleaned list handling
* Sort devices list by ID *and unit*
* Improved block size check
* Fixed issue with missing method in old Raspberry Pi OS protobuf implementation
* Updated error message
* Improve and fix bugs with saving&loading configuration files for rascsi-web (#218)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Removed unused structures, code and type cleanup
* Use unscoped enums for commands
* SASI Format opcode is 0x06, not 0x04 (see comment in code)
* Removed duplicate command
* Code review, data type updates
* Data type updated, use #pragma once
* Logging update
* Renaming
* Renaming
* Removed duplicate code
* Renaming
* Refactoring
* Removed TODO
* Updated logging
* Comment update
* Comment update
* Updated GetEventStatusNotification
* Removed goto
* Options -h and -v do not require to be the root user (fixes issue #166)
* Updated error messages and exception handling
* Added number of supported LUNs to protobuf interface
* Updated list handling of protobuf interface
* Comment update
* Improved error handling
* Added missing return statement
* Allow empty device list
* Fixed unnecessary detach_all() when config file isn't read (#221)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Protecting/unprotecing a non-ready medium is considered not possible
* Updated error message
* Extract detaching all devices, add parameter list support
* Comment update
* Fixed typos
* Restore files in use if dry-run fails
* Feature configurable reserved id for rascsi-web (#223)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make the reserved SCSI id configurable through an argument to start.sh; make the rascsi-web service reserve 7 by default to maintain current behavior.
* Make it possible to reserve multiple scsi ids in the web ui
* Added support for reserved IDs
* rasctl output update
* Re-ordered logging
* Logging update
* Make use of the newly introduced 'rasctl -r' to have the webui reserve ids on the backend side upon startup (#224)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Updated string to integer conversions
* Improved string to integer conversion
* Move string to integer conversion to rasutil
* Removed unused variable
* Fixed detach, which did not remove the filename from the filenames set
* Re-added folder to gitignore
* Set/Display patch version
* Fix issue where reserved ids were not reserved again when restarting rascsi-service from within the web ui (#226)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Make sure reserved SCSI IDs gets reserved again when restarting rascsi-service from within the web ui
* Updated interface comment
* Accept daynaport as legacy type
* Fixed typo
* Remove file from the list of files in use when ejected with a SCSI command
* Check for attached device for INSERT, EJECT, PROTECT, UNPROTECT
* Fixed error handling
* Fixed filepath handling
* Added more device shortcuts to rasctl
* Fixed function declaration
* Extraced ATTACH and DETACH
* Extracted INSERT
* Simplified ProcessCmd
* Comment update
* Fixed memory leak
* Log information on whether a new device is protected or read-only
* Updated errro message
* Updated error message
* Initialize private fields
* Updated rasctl help message
* Added DEVICE_INFO to protobuf interface
* Improved error handling
* DEVICE_INFO supports device list
* Updated server info handling
* Unified result handling with oneof, all commands now return PbResult
* A result can always return a message string
* Fixed typo
* Simplified sending of commands
* Improved error handling
* Removed unused code
* Updated error handling
* Code cleanup
* Comment update
* Updated logging
* Updated error handling
* Updated handling of removed status for devices without image file support
* Comment update
* Fixed typo
* Updated logging
* Updated parameter handling
* Updated setting default interfaces
* Revert "Updated setting default interfaces"
This reverts commit 210abc775d9a79dd0c631cf3877966a2923f4d5b.
* Revert "Updated parameter handling"
This reverts commit 35302addd59f5f5e1cc032888ba32dcbb426a846.
* rascsi supports reserving IDs
* Updated help message
* Replaced BOOL by bool
* Logging update
* Logging update
* Added default parameters to device properties
* Return parameters a device was set up with
* Improved device initialization
* Updated default parameter handling
* Updated default parameter handling
* Fixed typo
* Comment updates
* Comment update
* Manage default parameters in the respective device
* Do not pass empty parameter string
* Added supports_params flag
* Made comparisons more consistent
* Updated error handling
* Updated exception handling
* Renaming
* Comment update
* NEC sectors size must be 512 bytes
* Updated logging
* Updated vendor name handling
* Updated handling of media loading/unloading
* Added stoppable property and stopped status
* Made MO stoppable
* Removed duplicate code
* Removed duplicate code
* Copy read-only property
* Renaming
* Removed duplicate code, added START/STOP
* Improved default parameter handling
* Updated load/eject handling
* Logging update
* Fixed typo
* Verified START/STOP UNIT
* Updated logging
* Updated status handling
* Updated status handling
* More status handling updates
* Logging update
* Made instance fields local variables
* Made disk_t private
* Made some data structures private
* Fixed ARM compile issue
* Fixed ctapdriver initialization issue
* Reset read-only status when opening an image file
* Made logging more consistent
* Updated log level
* Log load/eject on error level for testing
* Revert "Log load/eject on error level for testing"
This reverts commit d35a15ea8e520517d25e1e1054ad1aeda9f85f2e.
* Assume drive is not ready after having been stopped
* Updated status handling
* Fixed typo
* Rebuild manpage
* Fixed issue #234 (MODE SENSE (10) returns wrong mode parameter header)
* Removed unused code
* Enum data type update
* Removed duplicate range check
* Removed duplicate code
* Removed more duplicate code
* Logging update
* SCCD sector size was not meant to be configurable
* Updated configurable sector size properties
* Removed assertion
* Improved error handling
* Updated error handling
* Re-added special error handling only relevant for SASI
* Added TODOs
* Comment update
* Added override modifier
* Removed obsolete debug flag (related code was not called)
* Comment and logging updates
* Removed obsolete try/catch
* Revert "Removed obsolete try/catch"
This reverts commit 39ca12d8b153c706316ce79f4fec65c9abc60024.
* Comment update
* Removed duplicate code
* Updated error messages, use more foreach loops
* Updated logging
* Logging update
* README update
* Added block_count
* Evaluate block size when inserting a media
* rasctl display capacity if available
* Info message update
* Added missing product name to NEC vital product data
* MO block size depends on capacity only
* Extended property/status display
* Property display update
* Updated error handling
* (Doc only changes) Fix typos and add clarification that SASI is used on Unix workstations
Co-authored-by: Daniel Markstedt <markstedt@gmail.com>
Co-authored-by: Tony Kuker <akuker@gmail.com>
2021-09-15 01:23:04 +00:00
|
|
|
|
switch ((SASIDEV::sasi_command)ctrl.cmd[0]) {
|
2020-08-28 14:18:02 +00:00
|
|
|
|
// TEST UNIT READY
|
2021-07-05 00:50:24 +00:00
|
|
|
|
case SASIDEV::eCmdTestUnitReady:
|
2020-08-28 14:18:02 +00:00
|
|
|
|
CmdTestUnitReady();
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
// REZERO UNIT
|
2021-07-05 00:50:24 +00:00
|
|
|
|
case SASIDEV::eCmdRezero:
|
2020-08-28 14:18:02 +00:00
|
|
|
|
CmdRezero();
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
// REQUEST SENSE
|
2021-07-05 00:50:24 +00:00
|
|
|
|
case SASIDEV::eCmdRequestSense:
|
2020-08-28 14:18:02 +00:00
|
|
|
|
CmdRequestSense();
|
|
|
|
|
return;
|
|
|
|
|
|
Refactoring, device handling extensions, additional settings, improved error handling, 64 bit OS support, fixed issues (#184)
* Device type unification, support of removable media
* Added support for .hdr extension
* Removable flag cleanup
* Manpage update
* Enriched PbOperation with PbDevice
* Added file size to PbImageFile
* Added device list support
* Set image_file
* Make remote interface more robust by ignoring SIGPIPE
* Return status only once
* Fixed typo
* Error handling update
* When starting rascsi parse everything before attaching devices
* Added dry run mode
* Comment update
* Updated logging
* Added Device base class, Disk class inherits from it
* Renaming
* Use vectors for controllers and disks, as preparation for using maps
* Updated file support handling
* Comment update
* DaynaPort and Bridge inherit from Device instead of Disk
* ProcessCmd() now works with devices instead of disks
* Renaming
* Added DeviceFactory
* Improved factory
* Comment update
* protected disk_t
* Code cleanup, added translations
* Device name can be set for rascsi
* rasctl can set device name
* Manpage update
* Manpage update
* Formatting update
* Check for missing name
* Initialize fd
* Initialize type
* Fixed string length issue
* Updated capacity formatting
* Fixed typo
* Split PbDevice into device and device definition
* Added TODO
* Renaming
* Renaming
* Device types can be explicitly specified with -t (no FILE:TYPE syntax anymore)
* Fixed compile-time issue
* Removed unused Append mode, updated read-only handling
* Type handling and manpage update
* Cleanup
* rasctl parser cleanup
* Review
* Constructor update
* Added .hdr (SCRM) support to web interface, tested web interface
* Default folder can be set remotely
* Removed deprecated operation
* DETACH supports all parameters in order to detach all devices
* include cleanup
* Logging should not depend on NDEBUG, for RaSCSI it is not peformance-critical
* INFO is default log level
* Exception renaming
* Updated GetPaddedName()
* Inheritance update
* Added BlockDevice class
* Removed unused code
* Updated typedefs
* Revert "Updated typedefs"
This reverts commit 546b46215a4d9b65067a11698e59ab1123cc6d64.
* Removed unused code
* Fixed warnign
* Use standard C++ integer types, use streams to resolve printf data type issues
* Added TODOs
* Added TODO
* Renaming
* Added TODO
* Added TODO
* Improved dry-run
* Code cleanup
* Updated handling of unknown options, code review and cleanup
* Manpage update
* Added PrimaryDevice
* Include cleanup
* Added pure virtual methods
* Comment updates
* Split rasutil
* Replaced some occurrences of BOOL
* Removed obsolete RASCSI definition in xm6.h
* Removed unused code, updated TODOs, replaced BOOL
* Added capacity check (issue #192)
* Fixed (most likely) https://github.com/akuker/RASCSI/issues/191
* Fixed wrong error messages
* For root the default image folder is /home/pi/images, updated error handling
* Dynaport code review
* Improved error handling
* Implemented READ CAPACITY(16)
* Comment update
* Commands can be 16 bytes long
* Implemented READ/WRITE/VERIFY(16)
* Comment update
* Renamed method to reflect the name of the respective SCSI command
* Do not created devices during dryRun
* Fixed padding of SCSIHD_APPLE vendor and product
* Initial implementation
* Updated ReportLuns
* Byte count update
* Fixed typo
* Finalized REPORT LUNS
* Removed TODO
* Updated TODO
* TODO update
* Updated device factory
* Comment update
* 64 bit update, tested on Ubuntu 64 bit system
* Removed assertion
* SCSI hard disks always have Apple specific mode pages (resolves issue #193)
* Error messsage update, 64 bit cleanup
* Reduced streams usage
* Updated handling of device flags
* MOs are protectable
* Removed duplicate error code handling
* Removed duplicate code
* Fixed CmdReadToc buffer overflow (https://github.com/akuker/RASCSI/issues/194)
* Added naive implementation of GET EVENT STATUS NOTIFICATION to avoid wranings
* HD must set removable device bit if the media is removable
* Removed duplicate logging
* Updated daynaport additional length
* Removed broken daynaport REQUEST SENSE. Successfully tested with my Mac.
* EnableInterface should not always return TRUE
* Updated Inquiry
* Updated LUN handling
* Replaced incorrect free by delete
* Updated comments and write-protection handling
* Made default HD name consistent
* STATUS_NOERROR is default
* Fixed Eject
* More eject handling updates
* Manpage updates
* Logging update
* Changed debug level
* Logging update
* Log capacity of all media types
* Logging update
* Encapsulated disk.blocks
* Encapsulated sector size
* Added overrides
* Added more overrides
* Fixed error message
* Fixed typos
* Fixed logging
* Added logging
* Use PrimaryDevice when calling Inquiry
* Comment update
* Changed default buffer size for testing
* Reverted last change
* Removed debug output
* De-inlined methods because optimized code did not work with them inlined
* Web interface can attach Daynaport again
* Improved handling of read-only hard disks
* Fixed issue with "all" semantics of DETACH
* rasctl supports adding removable media devices without providing a filename
* Removed unused flag in PbDeviceDefinition
* Updated rasctl output for ecjected media (resolves issue #199)
* Validate default folder name when changing default folder
2021-08-21 21:45:30 +00:00
|
|
|
|
// FORMAT
|
2021-07-05 00:50:24 +00:00
|
|
|
|
case SASIDEV::eCmdFormat:
|
2020-08-28 14:18:02 +00:00
|
|
|
|
CmdFormat();
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
// REASSIGN BLOCKS
|
2021-07-05 00:50:24 +00:00
|
|
|
|
case SASIDEV::eCmdReassign:
|
Configurable block size, controller/device cleanup, dispatchers per device, bridge setup (#203)
* Use foreach
* Renaming
* Revert "Renaming"
This reverts commit b0554b9c0a052e282625a4565d429313af2b3cc7.
* Manpage updates
* Removed obsolete assertions
* Replaced QWORD by uint64_t and removed respective typedef
* Removed LPCSTR typedef
* Removed LPCTSTR typedef
* Removed LPTSTR typedef
* Renamed SCSI command interface classes
* Renamed xm6.h to rascsi.h
* Moved interface classes to new interfaces subfolder
* Added include
* Fixed compilation issues of 64 bit Ubuntu
* Renaming
* Sort block sizes
* protobuf interface description update
* Fixed handling for sector size for non-disk devices
* Fixed typo
* Fixed comment
* Translate code commends into English, removing redundant ones (#214)
* Comment update
* For other bridge interfaces than eth0 IP address and netmask can be provided
* Added special rule for testing on x86 PCs
* Translated code comments into English, removing some redundant ones in the process, plus fixing typos (#215)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* Comment update
* Removed unused typedefs
* Added special rule for testing on x86 PCs
* Comment update
* Comment update
* Updated capacity calculation
* Updated protobuf interface to signal parameter support
* Simplified protobuf interface
* Updated rasctl server info output
* Updated logging
* protobuf interface has to return block only if it is configurable
* Updated block size handling
* Improved error message if ID is already in use
* Removed typedef
* Renamed protobuf interface method
* Renaming
* Use protobuf::Messsge instead of protobuf::MessageLite
* default_image_folder cannot be an empty string, removed obsolete check
* Logging update
* Made some error messages more concise
* Removed magic constant
* Updated error message
* Comment update
* Names of removable media drives must be constant and not contain the capacity
* Improved DeviceFactory error handling
* More error handing improvements
* Interface comment update
* Pass interface list to ctapdriver when creating bridge
* Moved initialization code
* Updated rasctl server information output
* Improved handling of MO capacities
* Renaming
* Comment update
* Reject inserting a medium when there is already a medium present (eject first)
* Save list of files in use before dry-run
* Updated rasctl server info message
* Comment update
* Fixed typo
* Cleaned list handling
* Sort devices list by ID *and unit*
* Improved block size check
* Fixed issue with missing method in old Raspberry Pi OS protobuf implementation
* Updated error message
* Improve and fix bugs with saving&loading configuration files for rascsi-web (#218)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Removed unused structures, code and type cleanup
* Use unscoped enums for commands
* SASI Format opcode is 0x06, not 0x04 (see comment in code)
* Removed duplicate command
* Code review, data type updates
* Data type updated, use #pragma once
* Logging update
* Renaming
* Renaming
* Removed duplicate code
* Renaming
* Refactoring
* Removed TODO
* Updated logging
* Comment update
* Comment update
* Updated GetEventStatusNotification
* Removed goto
* Options -h and -v do not require to be the root user (fixes issue #166)
* Updated error messages and exception handling
* Added number of supported LUNs to protobuf interface
* Updated list handling of protobuf interface
* Comment update
* Improved error handling
* Added missing return statement
* Allow empty device list
* Fixed unnecessary detach_all() when config file isn't read (#221)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Protecting/unprotecing a non-ready medium is considered not possible
* Updated error message
* Extract detaching all devices, add parameter list support
* Comment update
* Fixed typos
* Restore files in use if dry-run fails
* Feature configurable reserved id for rascsi-web (#223)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make the reserved SCSI id configurable through an argument to start.sh; make the rascsi-web service reserve 7 by default to maintain current behavior.
* Make it possible to reserve multiple scsi ids in the web ui
* Added support for reserved IDs
* rasctl output update
* Re-ordered logging
* Logging update
* Make use of the newly introduced 'rasctl -r' to have the webui reserve ids on the backend side upon startup (#224)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Updated string to integer conversions
* Improved string to integer conversion
* Move string to integer conversion to rasutil
* Removed unused variable
* Fixed detach, which did not remove the filename from the filenames set
* Re-added folder to gitignore
* Set/Display patch version
* Fix issue where reserved ids were not reserved again when restarting rascsi-service from within the web ui (#226)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Make sure reserved SCSI IDs gets reserved again when restarting rascsi-service from within the web ui
* Updated interface comment
* Accept daynaport as legacy type
* Fixed typo
* Remove file from the list of files in use when ejected with a SCSI command
* Check for attached device for INSERT, EJECT, PROTECT, UNPROTECT
* Fixed error handling
* Fixed filepath handling
* Added more device shortcuts to rasctl
* Fixed function declaration
* Extraced ATTACH and DETACH
* Extracted INSERT
* Simplified ProcessCmd
* Comment update
* Fixed memory leak
* Log information on whether a new device is protected or read-only
* Updated errro message
* Updated error message
* Initialize private fields
* Updated rasctl help message
* Added DEVICE_INFO to protobuf interface
* Improved error handling
* DEVICE_INFO supports device list
* Updated server info handling
* Unified result handling with oneof, all commands now return PbResult
* A result can always return a message string
* Fixed typo
* Simplified sending of commands
* Improved error handling
* Removed unused code
* Updated error handling
* Code cleanup
* Comment update
* Updated logging
* Updated error handling
* Updated handling of removed status for devices without image file support
* Comment update
* Fixed typo
* Updated logging
* Updated parameter handling
* Updated setting default interfaces
* Revert "Updated setting default interfaces"
This reverts commit 210abc775d9a79dd0c631cf3877966a2923f4d5b.
* Revert "Updated parameter handling"
This reverts commit 35302addd59f5f5e1cc032888ba32dcbb426a846.
* rascsi supports reserving IDs
* Updated help message
* Replaced BOOL by bool
* Logging update
* Logging update
* Added default parameters to device properties
* Return parameters a device was set up with
* Improved device initialization
* Updated default parameter handling
* Updated default parameter handling
* Fixed typo
* Comment updates
* Comment update
* Manage default parameters in the respective device
* Do not pass empty parameter string
* Added supports_params flag
* Made comparisons more consistent
* Updated error handling
* Updated exception handling
* Renaming
* Comment update
* NEC sectors size must be 512 bytes
* Updated logging
* Updated vendor name handling
* Updated handling of media loading/unloading
* Added stoppable property and stopped status
* Made MO stoppable
* Removed duplicate code
* Removed duplicate code
* Copy read-only property
* Renaming
* Removed duplicate code, added START/STOP
* Improved default parameter handling
* Updated load/eject handling
* Logging update
* Fixed typo
* Verified START/STOP UNIT
* Updated logging
* Updated status handling
* Updated status handling
* More status handling updates
* Logging update
* Made instance fields local variables
* Made disk_t private
* Made some data structures private
* Fixed ARM compile issue
* Fixed ctapdriver initialization issue
* Reset read-only status when opening an image file
* Made logging more consistent
* Updated log level
* Log load/eject on error level for testing
* Revert "Log load/eject on error level for testing"
This reverts commit d35a15ea8e520517d25e1e1054ad1aeda9f85f2e.
* Assume drive is not ready after having been stopped
* Updated status handling
* Fixed typo
* Rebuild manpage
* Fixed issue #234 (MODE SENSE (10) returns wrong mode parameter header)
* Removed unused code
* Enum data type update
* Removed duplicate range check
* Removed duplicate code
* Removed more duplicate code
* Logging update
* SCCD sector size was not meant to be configurable
* Updated configurable sector size properties
* Removed assertion
* Improved error handling
* Updated error handling
* Re-added special error handling only relevant for SASI
* Added TODOs
* Comment update
* Added override modifier
* Removed obsolete debug flag (related code was not called)
* Comment and logging updates
* Removed obsolete try/catch
* Revert "Removed obsolete try/catch"
This reverts commit 39ca12d8b153c706316ce79f4fec65c9abc60024.
* Comment update
* Removed duplicate code
* Updated error messages, use more foreach loops
* Updated logging
* Logging update
* README update
* Added block_count
* Evaluate block size when inserting a media
* rasctl display capacity if available
* Info message update
* Added missing product name to NEC vital product data
* MO block size depends on capacity only
* Extended property/status display
* Property display update
* Updated error handling
* (Doc only changes) Fix typos and add clarification that SASI is used on Unix workstations
Co-authored-by: Daniel Markstedt <markstedt@gmail.com>
Co-authored-by: Tony Kuker <akuker@gmail.com>
2021-09-15 01:23:04 +00:00
|
|
|
|
CmdReassignBlocks();
|
2020-08-28 14:18:02 +00:00
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
// READ(6)
|
2021-07-05 00:50:24 +00:00
|
|
|
|
case SASIDEV::eCmdRead6:
|
2020-08-28 14:18:02 +00:00
|
|
|
|
CmdRead6();
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
// WRITE(6)
|
2021-07-05 00:50:24 +00:00
|
|
|
|
case SASIDEV::eCmdWrite6:
|
2020-08-28 14:18:02 +00:00
|
|
|
|
CmdWrite6();
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
// SEEK(6)
|
2021-07-05 00:50:24 +00:00
|
|
|
|
case SASIDEV::eCmdSeek6:
|
2020-08-28 14:18:02 +00:00
|
|
|
|
CmdSeek6();
|
|
|
|
|
return;
|
|
|
|
|
|
Refactoring, device handling extensions, additional settings, improved error handling, 64 bit OS support, fixed issues (#184)
* Device type unification, support of removable media
* Added support for .hdr extension
* Removable flag cleanup
* Manpage update
* Enriched PbOperation with PbDevice
* Added file size to PbImageFile
* Added device list support
* Set image_file
* Make remote interface more robust by ignoring SIGPIPE
* Return status only once
* Fixed typo
* Error handling update
* When starting rascsi parse everything before attaching devices
* Added dry run mode
* Comment update
* Updated logging
* Added Device base class, Disk class inherits from it
* Renaming
* Use vectors for controllers and disks, as preparation for using maps
* Updated file support handling
* Comment update
* DaynaPort and Bridge inherit from Device instead of Disk
* ProcessCmd() now works with devices instead of disks
* Renaming
* Added DeviceFactory
* Improved factory
* Comment update
* protected disk_t
* Code cleanup, added translations
* Device name can be set for rascsi
* rasctl can set device name
* Manpage update
* Manpage update
* Formatting update
* Check for missing name
* Initialize fd
* Initialize type
* Fixed string length issue
* Updated capacity formatting
* Fixed typo
* Split PbDevice into device and device definition
* Added TODO
* Renaming
* Renaming
* Device types can be explicitly specified with -t (no FILE:TYPE syntax anymore)
* Fixed compile-time issue
* Removed unused Append mode, updated read-only handling
* Type handling and manpage update
* Cleanup
* rasctl parser cleanup
* Review
* Constructor update
* Added .hdr (SCRM) support to web interface, tested web interface
* Default folder can be set remotely
* Removed deprecated operation
* DETACH supports all parameters in order to detach all devices
* include cleanup
* Logging should not depend on NDEBUG, for RaSCSI it is not peformance-critical
* INFO is default log level
* Exception renaming
* Updated GetPaddedName()
* Inheritance update
* Added BlockDevice class
* Removed unused code
* Updated typedefs
* Revert "Updated typedefs"
This reverts commit 546b46215a4d9b65067a11698e59ab1123cc6d64.
* Removed unused code
* Fixed warnign
* Use standard C++ integer types, use streams to resolve printf data type issues
* Added TODOs
* Added TODO
* Renaming
* Added TODO
* Added TODO
* Improved dry-run
* Code cleanup
* Updated handling of unknown options, code review and cleanup
* Manpage update
* Added PrimaryDevice
* Include cleanup
* Added pure virtual methods
* Comment updates
* Split rasutil
* Replaced some occurrences of BOOL
* Removed obsolete RASCSI definition in xm6.h
* Removed unused code, updated TODOs, replaced BOOL
* Added capacity check (issue #192)
* Fixed (most likely) https://github.com/akuker/RASCSI/issues/191
* Fixed wrong error messages
* For root the default image folder is /home/pi/images, updated error handling
* Dynaport code review
* Improved error handling
* Implemented READ CAPACITY(16)
* Comment update
* Commands can be 16 bytes long
* Implemented READ/WRITE/VERIFY(16)
* Comment update
* Renamed method to reflect the name of the respective SCSI command
* Do not created devices during dryRun
* Fixed padding of SCSIHD_APPLE vendor and product
* Initial implementation
* Updated ReportLuns
* Byte count update
* Fixed typo
* Finalized REPORT LUNS
* Removed TODO
* Updated TODO
* TODO update
* Updated device factory
* Comment update
* 64 bit update, tested on Ubuntu 64 bit system
* Removed assertion
* SCSI hard disks always have Apple specific mode pages (resolves issue #193)
* Error messsage update, 64 bit cleanup
* Reduced streams usage
* Updated handling of device flags
* MOs are protectable
* Removed duplicate error code handling
* Removed duplicate code
* Fixed CmdReadToc buffer overflow (https://github.com/akuker/RASCSI/issues/194)
* Added naive implementation of GET EVENT STATUS NOTIFICATION to avoid wranings
* HD must set removable device bit if the media is removable
* Removed duplicate logging
* Updated daynaport additional length
* Removed broken daynaport REQUEST SENSE. Successfully tested with my Mac.
* EnableInterface should not always return TRUE
* Updated Inquiry
* Updated LUN handling
* Replaced incorrect free by delete
* Updated comments and write-protection handling
* Made default HD name consistent
* STATUS_NOERROR is default
* Fixed Eject
* More eject handling updates
* Manpage updates
* Logging update
* Changed debug level
* Logging update
* Log capacity of all media types
* Logging update
* Encapsulated disk.blocks
* Encapsulated sector size
* Added overrides
* Added more overrides
* Fixed error message
* Fixed typos
* Fixed logging
* Added logging
* Use PrimaryDevice when calling Inquiry
* Comment update
* Changed default buffer size for testing
* Reverted last change
* Removed debug output
* De-inlined methods because optimized code did not work with them inlined
* Web interface can attach Daynaport again
* Improved handling of read-only hard disks
* Fixed issue with "all" semantics of DETACH
* rasctl supports adding removable media devices without providing a filename
* Removed unused flag in PbDeviceDefinition
* Updated rasctl output for ecjected media (resolves issue #199)
* Validate default folder name when changing default folder
2021-08-21 21:45:30 +00:00
|
|
|
|
// ASSIGN (SASI only)
|
2021-02-07 19:00:48 +00:00
|
|
|
|
// This doesn't exist in the SCSI Spec, but was in the original RaSCSI code.
|
|
|
|
|
// leaving it here for now....
|
2021-07-05 00:50:24 +00:00
|
|
|
|
case SASIDEV::eCmdSasiCmdAssign:
|
2020-08-28 14:18:02 +00:00
|
|
|
|
CmdAssign();
|
|
|
|
|
return;
|
|
|
|
|
|
2021-03-08 01:11:17 +00:00
|
|
|
|
// RESERVE UNIT(16)
|
2021-07-09 16:37:46 +00:00
|
|
|
|
case SASIDEV::eCmdReserve6:
|
2021-03-08 01:11:17 +00:00
|
|
|
|
CmdReserveUnit();
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
// RELEASE UNIT(17)
|
2021-07-09 16:37:46 +00:00
|
|
|
|
case eCmdRelease6:
|
2021-03-08 01:11:17 +00:00
|
|
|
|
CmdReleaseUnit();
|
|
|
|
|
return;
|
|
|
|
|
|
Refactoring, device handling extensions, additional settings, improved error handling, 64 bit OS support, fixed issues (#184)
* Device type unification, support of removable media
* Added support for .hdr extension
* Removable flag cleanup
* Manpage update
* Enriched PbOperation with PbDevice
* Added file size to PbImageFile
* Added device list support
* Set image_file
* Make remote interface more robust by ignoring SIGPIPE
* Return status only once
* Fixed typo
* Error handling update
* When starting rascsi parse everything before attaching devices
* Added dry run mode
* Comment update
* Updated logging
* Added Device base class, Disk class inherits from it
* Renaming
* Use vectors for controllers and disks, as preparation for using maps
* Updated file support handling
* Comment update
* DaynaPort and Bridge inherit from Device instead of Disk
* ProcessCmd() now works with devices instead of disks
* Renaming
* Added DeviceFactory
* Improved factory
* Comment update
* protected disk_t
* Code cleanup, added translations
* Device name can be set for rascsi
* rasctl can set device name
* Manpage update
* Manpage update
* Formatting update
* Check for missing name
* Initialize fd
* Initialize type
* Fixed string length issue
* Updated capacity formatting
* Fixed typo
* Split PbDevice into device and device definition
* Added TODO
* Renaming
* Renaming
* Device types can be explicitly specified with -t (no FILE:TYPE syntax anymore)
* Fixed compile-time issue
* Removed unused Append mode, updated read-only handling
* Type handling and manpage update
* Cleanup
* rasctl parser cleanup
* Review
* Constructor update
* Added .hdr (SCRM) support to web interface, tested web interface
* Default folder can be set remotely
* Removed deprecated operation
* DETACH supports all parameters in order to detach all devices
* include cleanup
* Logging should not depend on NDEBUG, for RaSCSI it is not peformance-critical
* INFO is default log level
* Exception renaming
* Updated GetPaddedName()
* Inheritance update
* Added BlockDevice class
* Removed unused code
* Updated typedefs
* Revert "Updated typedefs"
This reverts commit 546b46215a4d9b65067a11698e59ab1123cc6d64.
* Removed unused code
* Fixed warnign
* Use standard C++ integer types, use streams to resolve printf data type issues
* Added TODOs
* Added TODO
* Renaming
* Added TODO
* Added TODO
* Improved dry-run
* Code cleanup
* Updated handling of unknown options, code review and cleanup
* Manpage update
* Added PrimaryDevice
* Include cleanup
* Added pure virtual methods
* Comment updates
* Split rasutil
* Replaced some occurrences of BOOL
* Removed obsolete RASCSI definition in xm6.h
* Removed unused code, updated TODOs, replaced BOOL
* Added capacity check (issue #192)
* Fixed (most likely) https://github.com/akuker/RASCSI/issues/191
* Fixed wrong error messages
* For root the default image folder is /home/pi/images, updated error handling
* Dynaport code review
* Improved error handling
* Implemented READ CAPACITY(16)
* Comment update
* Commands can be 16 bytes long
* Implemented READ/WRITE/VERIFY(16)
* Comment update
* Renamed method to reflect the name of the respective SCSI command
* Do not created devices during dryRun
* Fixed padding of SCSIHD_APPLE vendor and product
* Initial implementation
* Updated ReportLuns
* Byte count update
* Fixed typo
* Finalized REPORT LUNS
* Removed TODO
* Updated TODO
* TODO update
* Updated device factory
* Comment update
* 64 bit update, tested on Ubuntu 64 bit system
* Removed assertion
* SCSI hard disks always have Apple specific mode pages (resolves issue #193)
* Error messsage update, 64 bit cleanup
* Reduced streams usage
* Updated handling of device flags
* MOs are protectable
* Removed duplicate error code handling
* Removed duplicate code
* Fixed CmdReadToc buffer overflow (https://github.com/akuker/RASCSI/issues/194)
* Added naive implementation of GET EVENT STATUS NOTIFICATION to avoid wranings
* HD must set removable device bit if the media is removable
* Removed duplicate logging
* Updated daynaport additional length
* Removed broken daynaport REQUEST SENSE. Successfully tested with my Mac.
* EnableInterface should not always return TRUE
* Updated Inquiry
* Updated LUN handling
* Replaced incorrect free by delete
* Updated comments and write-protection handling
* Made default HD name consistent
* STATUS_NOERROR is default
* Fixed Eject
* More eject handling updates
* Manpage updates
* Logging update
* Changed debug level
* Logging update
* Log capacity of all media types
* Logging update
* Encapsulated disk.blocks
* Encapsulated sector size
* Added overrides
* Added more overrides
* Fixed error message
* Fixed typos
* Fixed logging
* Added logging
* Use PrimaryDevice when calling Inquiry
* Comment update
* Changed default buffer size for testing
* Reverted last change
* Removed debug output
* De-inlined methods because optimized code did not work with them inlined
* Web interface can attach Daynaport again
* Improved handling of read-only hard disks
* Fixed issue with "all" semantics of DETACH
* rasctl supports adding removable media devices without providing a filename
* Removed unused flag in PbDeviceDefinition
* Updated rasctl output for ecjected media (resolves issue #199)
* Validate default folder name when changing default folder
2021-08-21 21:45:30 +00:00
|
|
|
|
// SPECIFY (SASI only)
|
2021-02-07 19:00:48 +00:00
|
|
|
|
// This doesn't exist in the SCSI Spec, but was in the original RaSCSI code.
|
|
|
|
|
// leaving it here for now....
|
2021-07-05 00:50:24 +00:00
|
|
|
|
case SASIDEV::eCmdInvalid:
|
2020-08-28 14:18:02 +00:00
|
|
|
|
CmdSpecify();
|
|
|
|
|
return;
|
Configurable block size, controller/device cleanup, dispatchers per device, bridge setup (#203)
* Use foreach
* Renaming
* Revert "Renaming"
This reverts commit b0554b9c0a052e282625a4565d429313af2b3cc7.
* Manpage updates
* Removed obsolete assertions
* Replaced QWORD by uint64_t and removed respective typedef
* Removed LPCSTR typedef
* Removed LPCTSTR typedef
* Removed LPTSTR typedef
* Renamed SCSI command interface classes
* Renamed xm6.h to rascsi.h
* Moved interface classes to new interfaces subfolder
* Added include
* Fixed compilation issues of 64 bit Ubuntu
* Renaming
* Sort block sizes
* protobuf interface description update
* Fixed handling for sector size for non-disk devices
* Fixed typo
* Fixed comment
* Translate code commends into English, removing redundant ones (#214)
* Comment update
* For other bridge interfaces than eth0 IP address and netmask can be provided
* Added special rule for testing on x86 PCs
* Translated code comments into English, removing some redundant ones in the process, plus fixing typos (#215)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* Comment update
* Removed unused typedefs
* Added special rule for testing on x86 PCs
* Comment update
* Comment update
* Updated capacity calculation
* Updated protobuf interface to signal parameter support
* Simplified protobuf interface
* Updated rasctl server info output
* Updated logging
* protobuf interface has to return block only if it is configurable
* Updated block size handling
* Improved error message if ID is already in use
* Removed typedef
* Renamed protobuf interface method
* Renaming
* Use protobuf::Messsge instead of protobuf::MessageLite
* default_image_folder cannot be an empty string, removed obsolete check
* Logging update
* Made some error messages more concise
* Removed magic constant
* Updated error message
* Comment update
* Names of removable media drives must be constant and not contain the capacity
* Improved DeviceFactory error handling
* More error handing improvements
* Interface comment update
* Pass interface list to ctapdriver when creating bridge
* Moved initialization code
* Updated rasctl server information output
* Improved handling of MO capacities
* Renaming
* Comment update
* Reject inserting a medium when there is already a medium present (eject first)
* Save list of files in use before dry-run
* Updated rasctl server info message
* Comment update
* Fixed typo
* Cleaned list handling
* Sort devices list by ID *and unit*
* Improved block size check
* Fixed issue with missing method in old Raspberry Pi OS protobuf implementation
* Updated error message
* Improve and fix bugs with saving&loading configuration files for rascsi-web (#218)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Removed unused structures, code and type cleanup
* Use unscoped enums for commands
* SASI Format opcode is 0x06, not 0x04 (see comment in code)
* Removed duplicate command
* Code review, data type updates
* Data type updated, use #pragma once
* Logging update
* Renaming
* Renaming
* Removed duplicate code
* Renaming
* Refactoring
* Removed TODO
* Updated logging
* Comment update
* Comment update
* Updated GetEventStatusNotification
* Removed goto
* Options -h and -v do not require to be the root user (fixes issue #166)
* Updated error messages and exception handling
* Added number of supported LUNs to protobuf interface
* Updated list handling of protobuf interface
* Comment update
* Improved error handling
* Added missing return statement
* Allow empty device list
* Fixed unnecessary detach_all() when config file isn't read (#221)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Protecting/unprotecing a non-ready medium is considered not possible
* Updated error message
* Extract detaching all devices, add parameter list support
* Comment update
* Fixed typos
* Restore files in use if dry-run fails
* Feature configurable reserved id for rascsi-web (#223)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make the reserved SCSI id configurable through an argument to start.sh; make the rascsi-web service reserve 7 by default to maintain current behavior.
* Make it possible to reserve multiple scsi ids in the web ui
* Added support for reserved IDs
* rasctl output update
* Re-ordered logging
* Logging update
* Make use of the newly introduced 'rasctl -r' to have the webui reserve ids on the backend side upon startup (#224)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Updated string to integer conversions
* Improved string to integer conversion
* Move string to integer conversion to rasutil
* Removed unused variable
* Fixed detach, which did not remove the filename from the filenames set
* Re-added folder to gitignore
* Set/Display patch version
* Fix issue where reserved ids were not reserved again when restarting rascsi-service from within the web ui (#226)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Make sure reserved SCSI IDs gets reserved again when restarting rascsi-service from within the web ui
* Updated interface comment
* Accept daynaport as legacy type
* Fixed typo
* Remove file from the list of files in use when ejected with a SCSI command
* Check for attached device for INSERT, EJECT, PROTECT, UNPROTECT
* Fixed error handling
* Fixed filepath handling
* Added more device shortcuts to rasctl
* Fixed function declaration
* Extraced ATTACH and DETACH
* Extracted INSERT
* Simplified ProcessCmd
* Comment update
* Fixed memory leak
* Log information on whether a new device is protected or read-only
* Updated errro message
* Updated error message
* Initialize private fields
* Updated rasctl help message
* Added DEVICE_INFO to protobuf interface
* Improved error handling
* DEVICE_INFO supports device list
* Updated server info handling
* Unified result handling with oneof, all commands now return PbResult
* A result can always return a message string
* Fixed typo
* Simplified sending of commands
* Improved error handling
* Removed unused code
* Updated error handling
* Code cleanup
* Comment update
* Updated logging
* Updated error handling
* Updated handling of removed status for devices without image file support
* Comment update
* Fixed typo
* Updated logging
* Updated parameter handling
* Updated setting default interfaces
* Revert "Updated setting default interfaces"
This reverts commit 210abc775d9a79dd0c631cf3877966a2923f4d5b.
* Revert "Updated parameter handling"
This reverts commit 35302addd59f5f5e1cc032888ba32dcbb426a846.
* rascsi supports reserving IDs
* Updated help message
* Replaced BOOL by bool
* Logging update
* Logging update
* Added default parameters to device properties
* Return parameters a device was set up with
* Improved device initialization
* Updated default parameter handling
* Updated default parameter handling
* Fixed typo
* Comment updates
* Comment update
* Manage default parameters in the respective device
* Do not pass empty parameter string
* Added supports_params flag
* Made comparisons more consistent
* Updated error handling
* Updated exception handling
* Renaming
* Comment update
* NEC sectors size must be 512 bytes
* Updated logging
* Updated vendor name handling
* Updated handling of media loading/unloading
* Added stoppable property and stopped status
* Made MO stoppable
* Removed duplicate code
* Removed duplicate code
* Copy read-only property
* Renaming
* Removed duplicate code, added START/STOP
* Improved default parameter handling
* Updated load/eject handling
* Logging update
* Fixed typo
* Verified START/STOP UNIT
* Updated logging
* Updated status handling
* Updated status handling
* More status handling updates
* Logging update
* Made instance fields local variables
* Made disk_t private
* Made some data structures private
* Fixed ARM compile issue
* Fixed ctapdriver initialization issue
* Reset read-only status when opening an image file
* Made logging more consistent
* Updated log level
* Log load/eject on error level for testing
* Revert "Log load/eject on error level for testing"
This reverts commit d35a15ea8e520517d25e1e1054ad1aeda9f85f2e.
* Assume drive is not ready after having been stopped
* Updated status handling
* Fixed typo
* Rebuild manpage
* Fixed issue #234 (MODE SENSE (10) returns wrong mode parameter header)
* Removed unused code
* Enum data type update
* Removed duplicate range check
* Removed duplicate code
* Removed more duplicate code
* Logging update
* SCCD sector size was not meant to be configurable
* Updated configurable sector size properties
* Removed assertion
* Improved error handling
* Updated error handling
* Re-added special error handling only relevant for SASI
* Added TODOs
* Comment update
* Added override modifier
* Removed obsolete debug flag (related code was not called)
* Comment and logging updates
* Removed obsolete try/catch
* Revert "Removed obsolete try/catch"
This reverts commit 39ca12d8b153c706316ce79f4fec65c9abc60024.
* Comment update
* Removed duplicate code
* Updated error messages, use more foreach loops
* Updated logging
* Logging update
* README update
* Added block_count
* Evaluate block size when inserting a media
* rasctl display capacity if available
* Info message update
* Added missing product name to NEC vital product data
* MO block size depends on capacity only
* Extended property/status display
* Property display update
* Updated error handling
* (Doc only changes) Fix typos and add clarification that SASI is used on Unix workstations
Co-authored-by: Daniel Markstedt <markstedt@gmail.com>
Co-authored-by: Tony Kuker <akuker@gmail.com>
2021-09-15 01:23:04 +00:00
|
|
|
|
|
2021-02-07 19:00:48 +00:00
|
|
|
|
default:
|
|
|
|
|
break;
|
2020-08-28 14:18:02 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Unsupported command
|
2021-10-13 09:03:31 +00:00
|
|
|
|
LOGTRACE("%s ID %d received unsupported command: $%02X", __PRETTY_FUNCTION__, GetSCSIID(), (BYTE)ctrl.cmd[0]);
|
Configurable block size, controller/device cleanup, dispatchers per device, bridge setup (#203)
* Use foreach
* Renaming
* Revert "Renaming"
This reverts commit b0554b9c0a052e282625a4565d429313af2b3cc7.
* Manpage updates
* Removed obsolete assertions
* Replaced QWORD by uint64_t and removed respective typedef
* Removed LPCSTR typedef
* Removed LPCTSTR typedef
* Removed LPTSTR typedef
* Renamed SCSI command interface classes
* Renamed xm6.h to rascsi.h
* Moved interface classes to new interfaces subfolder
* Added include
* Fixed compilation issues of 64 bit Ubuntu
* Renaming
* Sort block sizes
* protobuf interface description update
* Fixed handling for sector size for non-disk devices
* Fixed typo
* Fixed comment
* Translate code commends into English, removing redundant ones (#214)
* Comment update
* For other bridge interfaces than eth0 IP address and netmask can be provided
* Added special rule for testing on x86 PCs
* Translated code comments into English, removing some redundant ones in the process, plus fixing typos (#215)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* Comment update
* Removed unused typedefs
* Added special rule for testing on x86 PCs
* Comment update
* Comment update
* Updated capacity calculation
* Updated protobuf interface to signal parameter support
* Simplified protobuf interface
* Updated rasctl server info output
* Updated logging
* protobuf interface has to return block only if it is configurable
* Updated block size handling
* Improved error message if ID is already in use
* Removed typedef
* Renamed protobuf interface method
* Renaming
* Use protobuf::Messsge instead of protobuf::MessageLite
* default_image_folder cannot be an empty string, removed obsolete check
* Logging update
* Made some error messages more concise
* Removed magic constant
* Updated error message
* Comment update
* Names of removable media drives must be constant and not contain the capacity
* Improved DeviceFactory error handling
* More error handing improvements
* Interface comment update
* Pass interface list to ctapdriver when creating bridge
* Moved initialization code
* Updated rasctl server information output
* Improved handling of MO capacities
* Renaming
* Comment update
* Reject inserting a medium when there is already a medium present (eject first)
* Save list of files in use before dry-run
* Updated rasctl server info message
* Comment update
* Fixed typo
* Cleaned list handling
* Sort devices list by ID *and unit*
* Improved block size check
* Fixed issue with missing method in old Raspberry Pi OS protobuf implementation
* Updated error message
* Improve and fix bugs with saving&loading configuration files for rascsi-web (#218)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Removed unused structures, code and type cleanup
* Use unscoped enums for commands
* SASI Format opcode is 0x06, not 0x04 (see comment in code)
* Removed duplicate command
* Code review, data type updates
* Data type updated, use #pragma once
* Logging update
* Renaming
* Renaming
* Removed duplicate code
* Renaming
* Refactoring
* Removed TODO
* Updated logging
* Comment update
* Comment update
* Updated GetEventStatusNotification
* Removed goto
* Options -h and -v do not require to be the root user (fixes issue #166)
* Updated error messages and exception handling
* Added number of supported LUNs to protobuf interface
* Updated list handling of protobuf interface
* Comment update
* Improved error handling
* Added missing return statement
* Allow empty device list
* Fixed unnecessary detach_all() when config file isn't read (#221)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Protecting/unprotecing a non-ready medium is considered not possible
* Updated error message
* Extract detaching all devices, add parameter list support
* Comment update
* Fixed typos
* Restore files in use if dry-run fails
* Feature configurable reserved id for rascsi-web (#223)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make the reserved SCSI id configurable through an argument to start.sh; make the rascsi-web service reserve 7 by default to maintain current behavior.
* Make it possible to reserve multiple scsi ids in the web ui
* Added support for reserved IDs
* rasctl output update
* Re-ordered logging
* Logging update
* Make use of the newly introduced 'rasctl -r' to have the webui reserve ids on the backend side upon startup (#224)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Updated string to integer conversions
* Improved string to integer conversion
* Move string to integer conversion to rasutil
* Removed unused variable
* Fixed detach, which did not remove the filename from the filenames set
* Re-added folder to gitignore
* Set/Display patch version
* Fix issue where reserved ids were not reserved again when restarting rascsi-service from within the web ui (#226)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Make sure reserved SCSI IDs gets reserved again when restarting rascsi-service from within the web ui
* Updated interface comment
* Accept daynaport as legacy type
* Fixed typo
* Remove file from the list of files in use when ejected with a SCSI command
* Check for attached device for INSERT, EJECT, PROTECT, UNPROTECT
* Fixed error handling
* Fixed filepath handling
* Added more device shortcuts to rasctl
* Fixed function declaration
* Extraced ATTACH and DETACH
* Extracted INSERT
* Simplified ProcessCmd
* Comment update
* Fixed memory leak
* Log information on whether a new device is protected or read-only
* Updated errro message
* Updated error message
* Initialize private fields
* Updated rasctl help message
* Added DEVICE_INFO to protobuf interface
* Improved error handling
* DEVICE_INFO supports device list
* Updated server info handling
* Unified result handling with oneof, all commands now return PbResult
* A result can always return a message string
* Fixed typo
* Simplified sending of commands
* Improved error handling
* Removed unused code
* Updated error handling
* Code cleanup
* Comment update
* Updated logging
* Updated error handling
* Updated handling of removed status for devices without image file support
* Comment update
* Fixed typo
* Updated logging
* Updated parameter handling
* Updated setting default interfaces
* Revert "Updated setting default interfaces"
This reverts commit 210abc775d9a79dd0c631cf3877966a2923f4d5b.
* Revert "Updated parameter handling"
This reverts commit 35302addd59f5f5e1cc032888ba32dcbb426a846.
* rascsi supports reserving IDs
* Updated help message
* Replaced BOOL by bool
* Logging update
* Logging update
* Added default parameters to device properties
* Return parameters a device was set up with
* Improved device initialization
* Updated default parameter handling
* Updated default parameter handling
* Fixed typo
* Comment updates
* Comment update
* Manage default parameters in the respective device
* Do not pass empty parameter string
* Added supports_params flag
* Made comparisons more consistent
* Updated error handling
* Updated exception handling
* Renaming
* Comment update
* NEC sectors size must be 512 bytes
* Updated logging
* Updated vendor name handling
* Updated handling of media loading/unloading
* Added stoppable property and stopped status
* Made MO stoppable
* Removed duplicate code
* Removed duplicate code
* Copy read-only property
* Renaming
* Removed duplicate code, added START/STOP
* Improved default parameter handling
* Updated load/eject handling
* Logging update
* Fixed typo
* Verified START/STOP UNIT
* Updated logging
* Updated status handling
* Updated status handling
* More status handling updates
* Logging update
* Made instance fields local variables
* Made disk_t private
* Made some data structures private
* Fixed ARM compile issue
* Fixed ctapdriver initialization issue
* Reset read-only status when opening an image file
* Made logging more consistent
* Updated log level
* Log load/eject on error level for testing
* Revert "Log load/eject on error level for testing"
This reverts commit d35a15ea8e520517d25e1e1054ad1aeda9f85f2e.
* Assume drive is not ready after having been stopped
* Updated status handling
* Fixed typo
* Rebuild manpage
* Fixed issue #234 (MODE SENSE (10) returns wrong mode parameter header)
* Removed unused code
* Enum data type update
* Removed duplicate range check
* Removed duplicate code
* Removed more duplicate code
* Logging update
* SCCD sector size was not meant to be configurable
* Updated configurable sector size properties
* Removed assertion
* Improved error handling
* Updated error handling
* Re-added special error handling only relevant for SASI
* Added TODOs
* Comment update
* Added override modifier
* Removed obsolete debug flag (related code was not called)
* Comment and logging updates
* Removed obsolete try/catch
* Revert "Removed obsolete try/catch"
This reverts commit 39ca12d8b153c706316ce79f4fec65c9abc60024.
* Comment update
* Removed duplicate code
* Updated error messages, use more foreach loops
* Updated logging
* Logging update
* README update
* Added block_count
* Evaluate block size when inserting a media
* rasctl display capacity if available
* Info message update
* Added missing product name to NEC vital product data
* MO block size depends on capacity only
* Extended property/status display
* Property display update
* Updated error handling
* (Doc only changes) Fix typos and add clarification that SASI is used on Unix workstations
Co-authored-by: Daniel Markstedt <markstedt@gmail.com>
Co-authored-by: Tony Kuker <akuker@gmail.com>
2021-09-15 01:23:04 +00:00
|
|
|
|
|
|
|
|
|
// Logical Unit
|
2021-10-13 09:03:31 +00:00
|
|
|
|
DWORD lun = GetEffectiveLun();
|
Configurable block size, controller/device cleanup, dispatchers per device, bridge setup (#203)
* Use foreach
* Renaming
* Revert "Renaming"
This reverts commit b0554b9c0a052e282625a4565d429313af2b3cc7.
* Manpage updates
* Removed obsolete assertions
* Replaced QWORD by uint64_t and removed respective typedef
* Removed LPCSTR typedef
* Removed LPCTSTR typedef
* Removed LPTSTR typedef
* Renamed SCSI command interface classes
* Renamed xm6.h to rascsi.h
* Moved interface classes to new interfaces subfolder
* Added include
* Fixed compilation issues of 64 bit Ubuntu
* Renaming
* Sort block sizes
* protobuf interface description update
* Fixed handling for sector size for non-disk devices
* Fixed typo
* Fixed comment
* Translate code commends into English, removing redundant ones (#214)
* Comment update
* For other bridge interfaces than eth0 IP address and netmask can be provided
* Added special rule for testing on x86 PCs
* Translated code comments into English, removing some redundant ones in the process, plus fixing typos (#215)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* Comment update
* Removed unused typedefs
* Added special rule for testing on x86 PCs
* Comment update
* Comment update
* Updated capacity calculation
* Updated protobuf interface to signal parameter support
* Simplified protobuf interface
* Updated rasctl server info output
* Updated logging
* protobuf interface has to return block only if it is configurable
* Updated block size handling
* Improved error message if ID is already in use
* Removed typedef
* Renamed protobuf interface method
* Renaming
* Use protobuf::Messsge instead of protobuf::MessageLite
* default_image_folder cannot be an empty string, removed obsolete check
* Logging update
* Made some error messages more concise
* Removed magic constant
* Updated error message
* Comment update
* Names of removable media drives must be constant and not contain the capacity
* Improved DeviceFactory error handling
* More error handing improvements
* Interface comment update
* Pass interface list to ctapdriver when creating bridge
* Moved initialization code
* Updated rasctl server information output
* Improved handling of MO capacities
* Renaming
* Comment update
* Reject inserting a medium when there is already a medium present (eject first)
* Save list of files in use before dry-run
* Updated rasctl server info message
* Comment update
* Fixed typo
* Cleaned list handling
* Sort devices list by ID *and unit*
* Improved block size check
* Fixed issue with missing method in old Raspberry Pi OS protobuf implementation
* Updated error message
* Improve and fix bugs with saving&loading configuration files for rascsi-web (#218)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Removed unused structures, code and type cleanup
* Use unscoped enums for commands
* SASI Format opcode is 0x06, not 0x04 (see comment in code)
* Removed duplicate command
* Code review, data type updates
* Data type updated, use #pragma once
* Logging update
* Renaming
* Renaming
* Removed duplicate code
* Renaming
* Refactoring
* Removed TODO
* Updated logging
* Comment update
* Comment update
* Updated GetEventStatusNotification
* Removed goto
* Options -h and -v do not require to be the root user (fixes issue #166)
* Updated error messages and exception handling
* Added number of supported LUNs to protobuf interface
* Updated list handling of protobuf interface
* Comment update
* Improved error handling
* Added missing return statement
* Allow empty device list
* Fixed unnecessary detach_all() when config file isn't read (#221)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Protecting/unprotecing a non-ready medium is considered not possible
* Updated error message
* Extract detaching all devices, add parameter list support
* Comment update
* Fixed typos
* Restore files in use if dry-run fails
* Feature configurable reserved id for rascsi-web (#223)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make the reserved SCSI id configurable through an argument to start.sh; make the rascsi-web service reserve 7 by default to maintain current behavior.
* Make it possible to reserve multiple scsi ids in the web ui
* Added support for reserved IDs
* rasctl output update
* Re-ordered logging
* Logging update
* Make use of the newly introduced 'rasctl -r' to have the webui reserve ids on the backend side upon startup (#224)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Updated string to integer conversions
* Improved string to integer conversion
* Move string to integer conversion to rasutil
* Removed unused variable
* Fixed detach, which did not remove the filename from the filenames set
* Re-added folder to gitignore
* Set/Display patch version
* Fix issue where reserved ids were not reserved again when restarting rascsi-service from within the web ui (#226)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Make sure reserved SCSI IDs gets reserved again when restarting rascsi-service from within the web ui
* Updated interface comment
* Accept daynaport as legacy type
* Fixed typo
* Remove file from the list of files in use when ejected with a SCSI command
* Check for attached device for INSERT, EJECT, PROTECT, UNPROTECT
* Fixed error handling
* Fixed filepath handling
* Added more device shortcuts to rasctl
* Fixed function declaration
* Extraced ATTACH and DETACH
* Extracted INSERT
* Simplified ProcessCmd
* Comment update
* Fixed memory leak
* Log information on whether a new device is protected or read-only
* Updated errro message
* Updated error message
* Initialize private fields
* Updated rasctl help message
* Added DEVICE_INFO to protobuf interface
* Improved error handling
* DEVICE_INFO supports device list
* Updated server info handling
* Unified result handling with oneof, all commands now return PbResult
* A result can always return a message string
* Fixed typo
* Simplified sending of commands
* Improved error handling
* Removed unused code
* Updated error handling
* Code cleanup
* Comment update
* Updated logging
* Updated error handling
* Updated handling of removed status for devices without image file support
* Comment update
* Fixed typo
* Updated logging
* Updated parameter handling
* Updated setting default interfaces
* Revert "Updated setting default interfaces"
This reverts commit 210abc775d9a79dd0c631cf3877966a2923f4d5b.
* Revert "Updated parameter handling"
This reverts commit 35302addd59f5f5e1cc032888ba32dcbb426a846.
* rascsi supports reserving IDs
* Updated help message
* Replaced BOOL by bool
* Logging update
* Logging update
* Added default parameters to device properties
* Return parameters a device was set up with
* Improved device initialization
* Updated default parameter handling
* Updated default parameter handling
* Fixed typo
* Comment updates
* Comment update
* Manage default parameters in the respective device
* Do not pass empty parameter string
* Added supports_params flag
* Made comparisons more consistent
* Updated error handling
* Updated exception handling
* Renaming
* Comment update
* NEC sectors size must be 512 bytes
* Updated logging
* Updated vendor name handling
* Updated handling of media loading/unloading
* Added stoppable property and stopped status
* Made MO stoppable
* Removed duplicate code
* Removed duplicate code
* Copy read-only property
* Renaming
* Removed duplicate code, added START/STOP
* Improved default parameter handling
* Updated load/eject handling
* Logging update
* Fixed typo
* Verified START/STOP UNIT
* Updated logging
* Updated status handling
* Updated status handling
* More status handling updates
* Logging update
* Made instance fields local variables
* Made disk_t private
* Made some data structures private
* Fixed ARM compile issue
* Fixed ctapdriver initialization issue
* Reset read-only status when opening an image file
* Made logging more consistent
* Updated log level
* Log load/eject on error level for testing
* Revert "Log load/eject on error level for testing"
This reverts commit d35a15ea8e520517d25e1e1054ad1aeda9f85f2e.
* Assume drive is not ready after having been stopped
* Updated status handling
* Fixed typo
* Rebuild manpage
* Fixed issue #234 (MODE SENSE (10) returns wrong mode parameter header)
* Removed unused code
* Enum data type update
* Removed duplicate range check
* Removed duplicate code
* Removed more duplicate code
* Logging update
* SCCD sector size was not meant to be configurable
* Updated configurable sector size properties
* Removed assertion
* Improved error handling
* Updated error handling
* Re-added special error handling only relevant for SASI
* Added TODOs
* Comment update
* Added override modifier
* Removed obsolete debug flag (related code was not called)
* Comment and logging updates
* Removed obsolete try/catch
* Revert "Removed obsolete try/catch"
This reverts commit 39ca12d8b153c706316ce79f4fec65c9abc60024.
* Comment update
* Removed duplicate code
* Updated error messages, use more foreach loops
* Updated logging
* Logging update
* README update
* Added block_count
* Evaluate block size when inserting a media
* rasctl display capacity if available
* Info message update
* Added missing product name to NEC vital product data
* MO block size depends on capacity only
* Extended property/status display
* Property display update
* Updated error handling
* (Doc only changes) Fix typos and add clarification that SASI is used on Unix workstations
Co-authored-by: Daniel Markstedt <markstedt@gmail.com>
Co-authored-by: Tony Kuker <akuker@gmail.com>
2021-09-15 01:23:04 +00:00
|
|
|
|
if (ctrl.unit[lun]) {
|
|
|
|
|
// Command processing on drive
|
|
|
|
|
ctrl.unit[lun]->SetStatusCode(STATUS_INVALIDCMD);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Failure (Error)
|
|
|
|
|
Error();
|
2020-08-28 14:18:02 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
//
|
|
|
|
|
// Status phase
|
|
|
|
|
//
|
|
|
|
|
//---------------------------------------------------------------------------
|
2021-07-26 18:33:36 +00:00
|
|
|
|
void SASIDEV::Status()
|
2020-08-28 14:18:02 +00:00
|
|
|
|
{
|
|
|
|
|
// Phase change
|
|
|
|
|
if (ctrl.phase != BUS::status) {
|
|
|
|
|
// Minimum execution time
|
|
|
|
|
if (ctrl.execstart > 0) {
|
Refactoring, device handling extensions, additional settings, improved error handling, 64 bit OS support, fixed issues (#184)
* Device type unification, support of removable media
* Added support for .hdr extension
* Removable flag cleanup
* Manpage update
* Enriched PbOperation with PbDevice
* Added file size to PbImageFile
* Added device list support
* Set image_file
* Make remote interface more robust by ignoring SIGPIPE
* Return status only once
* Fixed typo
* Error handling update
* When starting rascsi parse everything before attaching devices
* Added dry run mode
* Comment update
* Updated logging
* Added Device base class, Disk class inherits from it
* Renaming
* Use vectors for controllers and disks, as preparation for using maps
* Updated file support handling
* Comment update
* DaynaPort and Bridge inherit from Device instead of Disk
* ProcessCmd() now works with devices instead of disks
* Renaming
* Added DeviceFactory
* Improved factory
* Comment update
* protected disk_t
* Code cleanup, added translations
* Device name can be set for rascsi
* rasctl can set device name
* Manpage update
* Manpage update
* Formatting update
* Check for missing name
* Initialize fd
* Initialize type
* Fixed string length issue
* Updated capacity formatting
* Fixed typo
* Split PbDevice into device and device definition
* Added TODO
* Renaming
* Renaming
* Device types can be explicitly specified with -t (no FILE:TYPE syntax anymore)
* Fixed compile-time issue
* Removed unused Append mode, updated read-only handling
* Type handling and manpage update
* Cleanup
* rasctl parser cleanup
* Review
* Constructor update
* Added .hdr (SCRM) support to web interface, tested web interface
* Default folder can be set remotely
* Removed deprecated operation
* DETACH supports all parameters in order to detach all devices
* include cleanup
* Logging should not depend on NDEBUG, for RaSCSI it is not peformance-critical
* INFO is default log level
* Exception renaming
* Updated GetPaddedName()
* Inheritance update
* Added BlockDevice class
* Removed unused code
* Updated typedefs
* Revert "Updated typedefs"
This reverts commit 546b46215a4d9b65067a11698e59ab1123cc6d64.
* Removed unused code
* Fixed warnign
* Use standard C++ integer types, use streams to resolve printf data type issues
* Added TODOs
* Added TODO
* Renaming
* Added TODO
* Added TODO
* Improved dry-run
* Code cleanup
* Updated handling of unknown options, code review and cleanup
* Manpage update
* Added PrimaryDevice
* Include cleanup
* Added pure virtual methods
* Comment updates
* Split rasutil
* Replaced some occurrences of BOOL
* Removed obsolete RASCSI definition in xm6.h
* Removed unused code, updated TODOs, replaced BOOL
* Added capacity check (issue #192)
* Fixed (most likely) https://github.com/akuker/RASCSI/issues/191
* Fixed wrong error messages
* For root the default image folder is /home/pi/images, updated error handling
* Dynaport code review
* Improved error handling
* Implemented READ CAPACITY(16)
* Comment update
* Commands can be 16 bytes long
* Implemented READ/WRITE/VERIFY(16)
* Comment update
* Renamed method to reflect the name of the respective SCSI command
* Do not created devices during dryRun
* Fixed padding of SCSIHD_APPLE vendor and product
* Initial implementation
* Updated ReportLuns
* Byte count update
* Fixed typo
* Finalized REPORT LUNS
* Removed TODO
* Updated TODO
* TODO update
* Updated device factory
* Comment update
* 64 bit update, tested on Ubuntu 64 bit system
* Removed assertion
* SCSI hard disks always have Apple specific mode pages (resolves issue #193)
* Error messsage update, 64 bit cleanup
* Reduced streams usage
* Updated handling of device flags
* MOs are protectable
* Removed duplicate error code handling
* Removed duplicate code
* Fixed CmdReadToc buffer overflow (https://github.com/akuker/RASCSI/issues/194)
* Added naive implementation of GET EVENT STATUS NOTIFICATION to avoid wranings
* HD must set removable device bit if the media is removable
* Removed duplicate logging
* Updated daynaport additional length
* Removed broken daynaport REQUEST SENSE. Successfully tested with my Mac.
* EnableInterface should not always return TRUE
* Updated Inquiry
* Updated LUN handling
* Replaced incorrect free by delete
* Updated comments and write-protection handling
* Made default HD name consistent
* STATUS_NOERROR is default
* Fixed Eject
* More eject handling updates
* Manpage updates
* Logging update
* Changed debug level
* Logging update
* Log capacity of all media types
* Logging update
* Encapsulated disk.blocks
* Encapsulated sector size
* Added overrides
* Added more overrides
* Fixed error message
* Fixed typos
* Fixed logging
* Added logging
* Use PrimaryDevice when calling Inquiry
* Comment update
* Changed default buffer size for testing
* Reverted last change
* Removed debug output
* De-inlined methods because optimized code did not work with them inlined
* Web interface can attach Daynaport again
* Improved handling of read-only hard disks
* Fixed issue with "all" semantics of DETACH
* rasctl supports adding removable media devices without providing a filename
* Removed unused flag in PbDeviceDefinition
* Updated rasctl output for ecjected media (resolves issue #199)
* Validate default folder name when changing default folder
2021-08-21 21:45:30 +00:00
|
|
|
|
DWORD min_exec_time = IsSASI() ? min_exec_time_sasi : min_exec_time_scsi;
|
|
|
|
|
DWORD time = SysTimer::GetTimerLow() - ctrl.execstart;
|
2020-08-28 14:18:02 +00:00
|
|
|
|
if (time < min_exec_time) {
|
|
|
|
|
SysTimer::SleepUsec(min_exec_time - time);
|
|
|
|
|
}
|
|
|
|
|
ctrl.execstart = 0;
|
|
|
|
|
} else {
|
|
|
|
|
SysTimer::SleepUsec(5);
|
|
|
|
|
}
|
|
|
|
|
|
Configurable block size, controller/device cleanup, dispatchers per device, bridge setup (#203)
* Use foreach
* Renaming
* Revert "Renaming"
This reverts commit b0554b9c0a052e282625a4565d429313af2b3cc7.
* Manpage updates
* Removed obsolete assertions
* Replaced QWORD by uint64_t and removed respective typedef
* Removed LPCSTR typedef
* Removed LPCTSTR typedef
* Removed LPTSTR typedef
* Renamed SCSI command interface classes
* Renamed xm6.h to rascsi.h
* Moved interface classes to new interfaces subfolder
* Added include
* Fixed compilation issues of 64 bit Ubuntu
* Renaming
* Sort block sizes
* protobuf interface description update
* Fixed handling for sector size for non-disk devices
* Fixed typo
* Fixed comment
* Translate code commends into English, removing redundant ones (#214)
* Comment update
* For other bridge interfaces than eth0 IP address and netmask can be provided
* Added special rule for testing on x86 PCs
* Translated code comments into English, removing some redundant ones in the process, plus fixing typos (#215)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* Comment update
* Removed unused typedefs
* Added special rule for testing on x86 PCs
* Comment update
* Comment update
* Updated capacity calculation
* Updated protobuf interface to signal parameter support
* Simplified protobuf interface
* Updated rasctl server info output
* Updated logging
* protobuf interface has to return block only if it is configurable
* Updated block size handling
* Improved error message if ID is already in use
* Removed typedef
* Renamed protobuf interface method
* Renaming
* Use protobuf::Messsge instead of protobuf::MessageLite
* default_image_folder cannot be an empty string, removed obsolete check
* Logging update
* Made some error messages more concise
* Removed magic constant
* Updated error message
* Comment update
* Names of removable media drives must be constant and not contain the capacity
* Improved DeviceFactory error handling
* More error handing improvements
* Interface comment update
* Pass interface list to ctapdriver when creating bridge
* Moved initialization code
* Updated rasctl server information output
* Improved handling of MO capacities
* Renaming
* Comment update
* Reject inserting a medium when there is already a medium present (eject first)
* Save list of files in use before dry-run
* Updated rasctl server info message
* Comment update
* Fixed typo
* Cleaned list handling
* Sort devices list by ID *and unit*
* Improved block size check
* Fixed issue with missing method in old Raspberry Pi OS protobuf implementation
* Updated error message
* Improve and fix bugs with saving&loading configuration files for rascsi-web (#218)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Removed unused structures, code and type cleanup
* Use unscoped enums for commands
* SASI Format opcode is 0x06, not 0x04 (see comment in code)
* Removed duplicate command
* Code review, data type updates
* Data type updated, use #pragma once
* Logging update
* Renaming
* Renaming
* Removed duplicate code
* Renaming
* Refactoring
* Removed TODO
* Updated logging
* Comment update
* Comment update
* Updated GetEventStatusNotification
* Removed goto
* Options -h and -v do not require to be the root user (fixes issue #166)
* Updated error messages and exception handling
* Added number of supported LUNs to protobuf interface
* Updated list handling of protobuf interface
* Comment update
* Improved error handling
* Added missing return statement
* Allow empty device list
* Fixed unnecessary detach_all() when config file isn't read (#221)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Protecting/unprotecing a non-ready medium is considered not possible
* Updated error message
* Extract detaching all devices, add parameter list support
* Comment update
* Fixed typos
* Restore files in use if dry-run fails
* Feature configurable reserved id for rascsi-web (#223)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make the reserved SCSI id configurable through an argument to start.sh; make the rascsi-web service reserve 7 by default to maintain current behavior.
* Make it possible to reserve multiple scsi ids in the web ui
* Added support for reserved IDs
* rasctl output update
* Re-ordered logging
* Logging update
* Make use of the newly introduced 'rasctl -r' to have the webui reserve ids on the backend side upon startup (#224)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Updated string to integer conversions
* Improved string to integer conversion
* Move string to integer conversion to rasutil
* Removed unused variable
* Fixed detach, which did not remove the filename from the filenames set
* Re-added folder to gitignore
* Set/Display patch version
* Fix issue where reserved ids were not reserved again when restarting rascsi-service from within the web ui (#226)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Make sure reserved SCSI IDs gets reserved again when restarting rascsi-service from within the web ui
* Updated interface comment
* Accept daynaport as legacy type
* Fixed typo
* Remove file from the list of files in use when ejected with a SCSI command
* Check for attached device for INSERT, EJECT, PROTECT, UNPROTECT
* Fixed error handling
* Fixed filepath handling
* Added more device shortcuts to rasctl
* Fixed function declaration
* Extraced ATTACH and DETACH
* Extracted INSERT
* Simplified ProcessCmd
* Comment update
* Fixed memory leak
* Log information on whether a new device is protected or read-only
* Updated errro message
* Updated error message
* Initialize private fields
* Updated rasctl help message
* Added DEVICE_INFO to protobuf interface
* Improved error handling
* DEVICE_INFO supports device list
* Updated server info handling
* Unified result handling with oneof, all commands now return PbResult
* A result can always return a message string
* Fixed typo
* Simplified sending of commands
* Improved error handling
* Removed unused code
* Updated error handling
* Code cleanup
* Comment update
* Updated logging
* Updated error handling
* Updated handling of removed status for devices without image file support
* Comment update
* Fixed typo
* Updated logging
* Updated parameter handling
* Updated setting default interfaces
* Revert "Updated setting default interfaces"
This reverts commit 210abc775d9a79dd0c631cf3877966a2923f4d5b.
* Revert "Updated parameter handling"
This reverts commit 35302addd59f5f5e1cc032888ba32dcbb426a846.
* rascsi supports reserving IDs
* Updated help message
* Replaced BOOL by bool
* Logging update
* Logging update
* Added default parameters to device properties
* Return parameters a device was set up with
* Improved device initialization
* Updated default parameter handling
* Updated default parameter handling
* Fixed typo
* Comment updates
* Comment update
* Manage default parameters in the respective device
* Do not pass empty parameter string
* Added supports_params flag
* Made comparisons more consistent
* Updated error handling
* Updated exception handling
* Renaming
* Comment update
* NEC sectors size must be 512 bytes
* Updated logging
* Updated vendor name handling
* Updated handling of media loading/unloading
* Added stoppable property and stopped status
* Made MO stoppable
* Removed duplicate code
* Removed duplicate code
* Copy read-only property
* Renaming
* Removed duplicate code, added START/STOP
* Improved default parameter handling
* Updated load/eject handling
* Logging update
* Fixed typo
* Verified START/STOP UNIT
* Updated logging
* Updated status handling
* Updated status handling
* More status handling updates
* Logging update
* Made instance fields local variables
* Made disk_t private
* Made some data structures private
* Fixed ARM compile issue
* Fixed ctapdriver initialization issue
* Reset read-only status when opening an image file
* Made logging more consistent
* Updated log level
* Log load/eject on error level for testing
* Revert "Log load/eject on error level for testing"
This reverts commit d35a15ea8e520517d25e1e1054ad1aeda9f85f2e.
* Assume drive is not ready after having been stopped
* Updated status handling
* Fixed typo
* Rebuild manpage
* Fixed issue #234 (MODE SENSE (10) returns wrong mode parameter header)
* Removed unused code
* Enum data type update
* Removed duplicate range check
* Removed duplicate code
* Removed more duplicate code
* Logging update
* SCCD sector size was not meant to be configurable
* Updated configurable sector size properties
* Removed assertion
* Improved error handling
* Updated error handling
* Re-added special error handling only relevant for SASI
* Added TODOs
* Comment update
* Added override modifier
* Removed obsolete debug flag (related code was not called)
* Comment and logging updates
* Removed obsolete try/catch
* Revert "Removed obsolete try/catch"
This reverts commit 39ca12d8b153c706316ce79f4fec65c9abc60024.
* Comment update
* Removed duplicate code
* Updated error messages, use more foreach loops
* Updated logging
* Logging update
* README update
* Added block_count
* Evaluate block size when inserting a media
* rasctl display capacity if available
* Info message update
* Added missing product name to NEC vital product data
* MO block size depends on capacity only
* Extended property/status display
* Property display update
* Updated error handling
* (Doc only changes) Fix typos and add clarification that SASI is used on Unix workstations
Co-authored-by: Daniel Markstedt <markstedt@gmail.com>
Co-authored-by: Tony Kuker <akuker@gmail.com>
2021-09-15 01:23:04 +00:00
|
|
|
|
LOGTRACE("%s Status phase", __PRETTY_FUNCTION__);
|
|
|
|
|
|
2020-08-28 14:18:02 +00:00
|
|
|
|
// Phase Setting
|
|
|
|
|
ctrl.phase = BUS::status;
|
|
|
|
|
|
|
|
|
|
// Signal line operated by the target
|
|
|
|
|
ctrl.bus->SetMSG(FALSE);
|
|
|
|
|
ctrl.bus->SetCD(TRUE);
|
|
|
|
|
ctrl.bus->SetIO(TRUE);
|
|
|
|
|
|
|
|
|
|
// Data transfer is 1 byte x 1 block
|
|
|
|
|
ctrl.offset = 0;
|
|
|
|
|
ctrl.length = 1;
|
|
|
|
|
ctrl.blocks = 1;
|
|
|
|
|
ctrl.buffer[0] = (BYTE)ctrl.status;
|
|
|
|
|
|
2021-02-07 19:00:48 +00:00
|
|
|
|
LOGTRACE( "%s Status Phase $%02X",__PRETTY_FUNCTION__, (unsigned int)ctrl.status);
|
2021-07-05 00:50:24 +00:00
|
|
|
|
|
2020-08-28 14:18:02 +00:00
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Send
|
|
|
|
|
Send();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
//
|
Configurable block size, controller/device cleanup, dispatchers per device, bridge setup (#203)
* Use foreach
* Renaming
* Revert "Renaming"
This reverts commit b0554b9c0a052e282625a4565d429313af2b3cc7.
* Manpage updates
* Removed obsolete assertions
* Replaced QWORD by uint64_t and removed respective typedef
* Removed LPCSTR typedef
* Removed LPCTSTR typedef
* Removed LPTSTR typedef
* Renamed SCSI command interface classes
* Renamed xm6.h to rascsi.h
* Moved interface classes to new interfaces subfolder
* Added include
* Fixed compilation issues of 64 bit Ubuntu
* Renaming
* Sort block sizes
* protobuf interface description update
* Fixed handling for sector size for non-disk devices
* Fixed typo
* Fixed comment
* Translate code commends into English, removing redundant ones (#214)
* Comment update
* For other bridge interfaces than eth0 IP address and netmask can be provided
* Added special rule for testing on x86 PCs
* Translated code comments into English, removing some redundant ones in the process, plus fixing typos (#215)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* Comment update
* Removed unused typedefs
* Added special rule for testing on x86 PCs
* Comment update
* Comment update
* Updated capacity calculation
* Updated protobuf interface to signal parameter support
* Simplified protobuf interface
* Updated rasctl server info output
* Updated logging
* protobuf interface has to return block only if it is configurable
* Updated block size handling
* Improved error message if ID is already in use
* Removed typedef
* Renamed protobuf interface method
* Renaming
* Use protobuf::Messsge instead of protobuf::MessageLite
* default_image_folder cannot be an empty string, removed obsolete check
* Logging update
* Made some error messages more concise
* Removed magic constant
* Updated error message
* Comment update
* Names of removable media drives must be constant and not contain the capacity
* Improved DeviceFactory error handling
* More error handing improvements
* Interface comment update
* Pass interface list to ctapdriver when creating bridge
* Moved initialization code
* Updated rasctl server information output
* Improved handling of MO capacities
* Renaming
* Comment update
* Reject inserting a medium when there is already a medium present (eject first)
* Save list of files in use before dry-run
* Updated rasctl server info message
* Comment update
* Fixed typo
* Cleaned list handling
* Sort devices list by ID *and unit*
* Improved block size check
* Fixed issue with missing method in old Raspberry Pi OS protobuf implementation
* Updated error message
* Improve and fix bugs with saving&loading configuration files for rascsi-web (#218)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Removed unused structures, code and type cleanup
* Use unscoped enums for commands
* SASI Format opcode is 0x06, not 0x04 (see comment in code)
* Removed duplicate command
* Code review, data type updates
* Data type updated, use #pragma once
* Logging update
* Renaming
* Renaming
* Removed duplicate code
* Renaming
* Refactoring
* Removed TODO
* Updated logging
* Comment update
* Comment update
* Updated GetEventStatusNotification
* Removed goto
* Options -h and -v do not require to be the root user (fixes issue #166)
* Updated error messages and exception handling
* Added number of supported LUNs to protobuf interface
* Updated list handling of protobuf interface
* Comment update
* Improved error handling
* Added missing return statement
* Allow empty device list
* Fixed unnecessary detach_all() when config file isn't read (#221)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Protecting/unprotecing a non-ready medium is considered not possible
* Updated error message
* Extract detaching all devices, add parameter list support
* Comment update
* Fixed typos
* Restore files in use if dry-run fails
* Feature configurable reserved id for rascsi-web (#223)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make the reserved SCSI id configurable through an argument to start.sh; make the rascsi-web service reserve 7 by default to maintain current behavior.
* Make it possible to reserve multiple scsi ids in the web ui
* Added support for reserved IDs
* rasctl output update
* Re-ordered logging
* Logging update
* Make use of the newly introduced 'rasctl -r' to have the webui reserve ids on the backend side upon startup (#224)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Updated string to integer conversions
* Improved string to integer conversion
* Move string to integer conversion to rasutil
* Removed unused variable
* Fixed detach, which did not remove the filename from the filenames set
* Re-added folder to gitignore
* Set/Display patch version
* Fix issue where reserved ids were not reserved again when restarting rascsi-service from within the web ui (#226)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Make sure reserved SCSI IDs gets reserved again when restarting rascsi-service from within the web ui
* Updated interface comment
* Accept daynaport as legacy type
* Fixed typo
* Remove file from the list of files in use when ejected with a SCSI command
* Check for attached device for INSERT, EJECT, PROTECT, UNPROTECT
* Fixed error handling
* Fixed filepath handling
* Added more device shortcuts to rasctl
* Fixed function declaration
* Extraced ATTACH and DETACH
* Extracted INSERT
* Simplified ProcessCmd
* Comment update
* Fixed memory leak
* Log information on whether a new device is protected or read-only
* Updated errro message
* Updated error message
* Initialize private fields
* Updated rasctl help message
* Added DEVICE_INFO to protobuf interface
* Improved error handling
* DEVICE_INFO supports device list
* Updated server info handling
* Unified result handling with oneof, all commands now return PbResult
* A result can always return a message string
* Fixed typo
* Simplified sending of commands
* Improved error handling
* Removed unused code
* Updated error handling
* Code cleanup
* Comment update
* Updated logging
* Updated error handling
* Updated handling of removed status for devices without image file support
* Comment update
* Fixed typo
* Updated logging
* Updated parameter handling
* Updated setting default interfaces
* Revert "Updated setting default interfaces"
This reverts commit 210abc775d9a79dd0c631cf3877966a2923f4d5b.
* Revert "Updated parameter handling"
This reverts commit 35302addd59f5f5e1cc032888ba32dcbb426a846.
* rascsi supports reserving IDs
* Updated help message
* Replaced BOOL by bool
* Logging update
* Logging update
* Added default parameters to device properties
* Return parameters a device was set up with
* Improved device initialization
* Updated default parameter handling
* Updated default parameter handling
* Fixed typo
* Comment updates
* Comment update
* Manage default parameters in the respective device
* Do not pass empty parameter string
* Added supports_params flag
* Made comparisons more consistent
* Updated error handling
* Updated exception handling
* Renaming
* Comment update
* NEC sectors size must be 512 bytes
* Updated logging
* Updated vendor name handling
* Updated handling of media loading/unloading
* Added stoppable property and stopped status
* Made MO stoppable
* Removed duplicate code
* Removed duplicate code
* Copy read-only property
* Renaming
* Removed duplicate code, added START/STOP
* Improved default parameter handling
* Updated load/eject handling
* Logging update
* Fixed typo
* Verified START/STOP UNIT
* Updated logging
* Updated status handling
* Updated status handling
* More status handling updates
* Logging update
* Made instance fields local variables
* Made disk_t private
* Made some data structures private
* Fixed ARM compile issue
* Fixed ctapdriver initialization issue
* Reset read-only status when opening an image file
* Made logging more consistent
* Updated log level
* Log load/eject on error level for testing
* Revert "Log load/eject on error level for testing"
This reverts commit d35a15ea8e520517d25e1e1054ad1aeda9f85f2e.
* Assume drive is not ready after having been stopped
* Updated status handling
* Fixed typo
* Rebuild manpage
* Fixed issue #234 (MODE SENSE (10) returns wrong mode parameter header)
* Removed unused code
* Enum data type update
* Removed duplicate range check
* Removed duplicate code
* Removed more duplicate code
* Logging update
* SCCD sector size was not meant to be configurable
* Updated configurable sector size properties
* Removed assertion
* Improved error handling
* Updated error handling
* Re-added special error handling only relevant for SASI
* Added TODOs
* Comment update
* Added override modifier
* Removed obsolete debug flag (related code was not called)
* Comment and logging updates
* Removed obsolete try/catch
* Revert "Removed obsolete try/catch"
This reverts commit 39ca12d8b153c706316ce79f4fec65c9abc60024.
* Comment update
* Removed duplicate code
* Updated error messages, use more foreach loops
* Updated logging
* Logging update
* README update
* Added block_count
* Evaluate block size when inserting a media
* rasctl display capacity if available
* Info message update
* Added missing product name to NEC vital product data
* MO block size depends on capacity only
* Extended property/status display
* Property display update
* Updated error handling
* (Doc only changes) Fix typos and add clarification that SASI is used on Unix workstations
Co-authored-by: Daniel Markstedt <markstedt@gmail.com>
Co-authored-by: Tony Kuker <akuker@gmail.com>
2021-09-15 01:23:04 +00:00
|
|
|
|
// Message in phase (used by SASI and SCSI)
|
2020-08-28 14:18:02 +00:00
|
|
|
|
//
|
|
|
|
|
//---------------------------------------------------------------------------
|
2021-07-26 18:33:36 +00:00
|
|
|
|
void SASIDEV::MsgIn()
|
2020-08-28 14:18:02 +00:00
|
|
|
|
{
|
|
|
|
|
// Phase change
|
|
|
|
|
if (ctrl.phase != BUS::msgin) {
|
2021-02-07 19:00:48 +00:00
|
|
|
|
LOGTRACE("%s Starting Message in phase", __PRETTY_FUNCTION__);
|
2020-08-28 14:18:02 +00:00
|
|
|
|
|
|
|
|
|
// Phase Setting
|
|
|
|
|
ctrl.phase = BUS::msgin;
|
|
|
|
|
|
|
|
|
|
// Signal line operated by the target
|
|
|
|
|
ctrl.bus->SetMSG(TRUE);
|
|
|
|
|
ctrl.bus->SetCD(TRUE);
|
|
|
|
|
ctrl.bus->SetIO(TRUE);
|
|
|
|
|
|
|
|
|
|
// length, blocks are already set
|
|
|
|
|
ASSERT(ctrl.length > 0);
|
|
|
|
|
ASSERT(ctrl.blocks > 0);
|
|
|
|
|
ctrl.offset = 0;
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//Send
|
2021-02-07 19:00:48 +00:00
|
|
|
|
LOGTRACE("%s Transitioning to Send()", __PRETTY_FUNCTION__);
|
2020-08-28 14:18:02 +00:00
|
|
|
|
Send();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
//
|
Configurable block size, controller/device cleanup, dispatchers per device, bridge setup (#203)
* Use foreach
* Renaming
* Revert "Renaming"
This reverts commit b0554b9c0a052e282625a4565d429313af2b3cc7.
* Manpage updates
* Removed obsolete assertions
* Replaced QWORD by uint64_t and removed respective typedef
* Removed LPCSTR typedef
* Removed LPCTSTR typedef
* Removed LPTSTR typedef
* Renamed SCSI command interface classes
* Renamed xm6.h to rascsi.h
* Moved interface classes to new interfaces subfolder
* Added include
* Fixed compilation issues of 64 bit Ubuntu
* Renaming
* Sort block sizes
* protobuf interface description update
* Fixed handling for sector size for non-disk devices
* Fixed typo
* Fixed comment
* Translate code commends into English, removing redundant ones (#214)
* Comment update
* For other bridge interfaces than eth0 IP address and netmask can be provided
* Added special rule for testing on x86 PCs
* Translated code comments into English, removing some redundant ones in the process, plus fixing typos (#215)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* Comment update
* Removed unused typedefs
* Added special rule for testing on x86 PCs
* Comment update
* Comment update
* Updated capacity calculation
* Updated protobuf interface to signal parameter support
* Simplified protobuf interface
* Updated rasctl server info output
* Updated logging
* protobuf interface has to return block only if it is configurable
* Updated block size handling
* Improved error message if ID is already in use
* Removed typedef
* Renamed protobuf interface method
* Renaming
* Use protobuf::Messsge instead of protobuf::MessageLite
* default_image_folder cannot be an empty string, removed obsolete check
* Logging update
* Made some error messages more concise
* Removed magic constant
* Updated error message
* Comment update
* Names of removable media drives must be constant and not contain the capacity
* Improved DeviceFactory error handling
* More error handing improvements
* Interface comment update
* Pass interface list to ctapdriver when creating bridge
* Moved initialization code
* Updated rasctl server information output
* Improved handling of MO capacities
* Renaming
* Comment update
* Reject inserting a medium when there is already a medium present (eject first)
* Save list of files in use before dry-run
* Updated rasctl server info message
* Comment update
* Fixed typo
* Cleaned list handling
* Sort devices list by ID *and unit*
* Improved block size check
* Fixed issue with missing method in old Raspberry Pi OS protobuf implementation
* Updated error message
* Improve and fix bugs with saving&loading configuration files for rascsi-web (#218)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Removed unused structures, code and type cleanup
* Use unscoped enums for commands
* SASI Format opcode is 0x06, not 0x04 (see comment in code)
* Removed duplicate command
* Code review, data type updates
* Data type updated, use #pragma once
* Logging update
* Renaming
* Renaming
* Removed duplicate code
* Renaming
* Refactoring
* Removed TODO
* Updated logging
* Comment update
* Comment update
* Updated GetEventStatusNotification
* Removed goto
* Options -h and -v do not require to be the root user (fixes issue #166)
* Updated error messages and exception handling
* Added number of supported LUNs to protobuf interface
* Updated list handling of protobuf interface
* Comment update
* Improved error handling
* Added missing return statement
* Allow empty device list
* Fixed unnecessary detach_all() when config file isn't read (#221)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Protecting/unprotecing a non-ready medium is considered not possible
* Updated error message
* Extract detaching all devices, add parameter list support
* Comment update
* Fixed typos
* Restore files in use if dry-run fails
* Feature configurable reserved id for rascsi-web (#223)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make the reserved SCSI id configurable through an argument to start.sh; make the rascsi-web service reserve 7 by default to maintain current behavior.
* Make it possible to reserve multiple scsi ids in the web ui
* Added support for reserved IDs
* rasctl output update
* Re-ordered logging
* Logging update
* Make use of the newly introduced 'rasctl -r' to have the webui reserve ids on the backend side upon startup (#224)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Updated string to integer conversions
* Improved string to integer conversion
* Move string to integer conversion to rasutil
* Removed unused variable
* Fixed detach, which did not remove the filename from the filenames set
* Re-added folder to gitignore
* Set/Display patch version
* Fix issue where reserved ids were not reserved again when restarting rascsi-service from within the web ui (#226)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Make sure reserved SCSI IDs gets reserved again when restarting rascsi-service from within the web ui
* Updated interface comment
* Accept daynaport as legacy type
* Fixed typo
* Remove file from the list of files in use when ejected with a SCSI command
* Check for attached device for INSERT, EJECT, PROTECT, UNPROTECT
* Fixed error handling
* Fixed filepath handling
* Added more device shortcuts to rasctl
* Fixed function declaration
* Extraced ATTACH and DETACH
* Extracted INSERT
* Simplified ProcessCmd
* Comment update
* Fixed memory leak
* Log information on whether a new device is protected or read-only
* Updated errro message
* Updated error message
* Initialize private fields
* Updated rasctl help message
* Added DEVICE_INFO to protobuf interface
* Improved error handling
* DEVICE_INFO supports device list
* Updated server info handling
* Unified result handling with oneof, all commands now return PbResult
* A result can always return a message string
* Fixed typo
* Simplified sending of commands
* Improved error handling
* Removed unused code
* Updated error handling
* Code cleanup
* Comment update
* Updated logging
* Updated error handling
* Updated handling of removed status for devices without image file support
* Comment update
* Fixed typo
* Updated logging
* Updated parameter handling
* Updated setting default interfaces
* Revert "Updated setting default interfaces"
This reverts commit 210abc775d9a79dd0c631cf3877966a2923f4d5b.
* Revert "Updated parameter handling"
This reverts commit 35302addd59f5f5e1cc032888ba32dcbb426a846.
* rascsi supports reserving IDs
* Updated help message
* Replaced BOOL by bool
* Logging update
* Logging update
* Added default parameters to device properties
* Return parameters a device was set up with
* Improved device initialization
* Updated default parameter handling
* Updated default parameter handling
* Fixed typo
* Comment updates
* Comment update
* Manage default parameters in the respective device
* Do not pass empty parameter string
* Added supports_params flag
* Made comparisons more consistent
* Updated error handling
* Updated exception handling
* Renaming
* Comment update
* NEC sectors size must be 512 bytes
* Updated logging
* Updated vendor name handling
* Updated handling of media loading/unloading
* Added stoppable property and stopped status
* Made MO stoppable
* Removed duplicate code
* Removed duplicate code
* Copy read-only property
* Renaming
* Removed duplicate code, added START/STOP
* Improved default parameter handling
* Updated load/eject handling
* Logging update
* Fixed typo
* Verified START/STOP UNIT
* Updated logging
* Updated status handling
* Updated status handling
* More status handling updates
* Logging update
* Made instance fields local variables
* Made disk_t private
* Made some data structures private
* Fixed ARM compile issue
* Fixed ctapdriver initialization issue
* Reset read-only status when opening an image file
* Made logging more consistent
* Updated log level
* Log load/eject on error level for testing
* Revert "Log load/eject on error level for testing"
This reverts commit d35a15ea8e520517d25e1e1054ad1aeda9f85f2e.
* Assume drive is not ready after having been stopped
* Updated status handling
* Fixed typo
* Rebuild manpage
* Fixed issue #234 (MODE SENSE (10) returns wrong mode parameter header)
* Removed unused code
* Enum data type update
* Removed duplicate range check
* Removed duplicate code
* Removed more duplicate code
* Logging update
* SCCD sector size was not meant to be configurable
* Updated configurable sector size properties
* Removed assertion
* Improved error handling
* Updated error handling
* Re-added special error handling only relevant for SASI
* Added TODOs
* Comment update
* Added override modifier
* Removed obsolete debug flag (related code was not called)
* Comment and logging updates
* Removed obsolete try/catch
* Revert "Removed obsolete try/catch"
This reverts commit 39ca12d8b153c706316ce79f4fec65c9abc60024.
* Comment update
* Removed duplicate code
* Updated error messages, use more foreach loops
* Updated logging
* Logging update
* README update
* Added block_count
* Evaluate block size when inserting a media
* rasctl display capacity if available
* Info message update
* Added missing product name to NEC vital product data
* MO block size depends on capacity only
* Extended property/status display
* Property display update
* Updated error handling
* (Doc only changes) Fix typos and add clarification that SASI is used on Unix workstations
Co-authored-by: Daniel Markstedt <markstedt@gmail.com>
Co-authored-by: Tony Kuker <akuker@gmail.com>
2021-09-15 01:23:04 +00:00
|
|
|
|
// Data-in Phase (used by SASI and SCSI)
|
2020-08-28 14:18:02 +00:00
|
|
|
|
//
|
|
|
|
|
//---------------------------------------------------------------------------
|
2021-07-26 18:33:36 +00:00
|
|
|
|
void SASIDEV::DataIn()
|
2020-08-28 14:18:02 +00:00
|
|
|
|
{
|
|
|
|
|
ASSERT(ctrl.length >= 0);
|
|
|
|
|
|
|
|
|
|
// Phase change
|
|
|
|
|
if (ctrl.phase != BUS::datain) {
|
|
|
|
|
// Minimum execution time
|
|
|
|
|
if (ctrl.execstart > 0) {
|
Refactoring, device handling extensions, additional settings, improved error handling, 64 bit OS support, fixed issues (#184)
* Device type unification, support of removable media
* Added support for .hdr extension
* Removable flag cleanup
* Manpage update
* Enriched PbOperation with PbDevice
* Added file size to PbImageFile
* Added device list support
* Set image_file
* Make remote interface more robust by ignoring SIGPIPE
* Return status only once
* Fixed typo
* Error handling update
* When starting rascsi parse everything before attaching devices
* Added dry run mode
* Comment update
* Updated logging
* Added Device base class, Disk class inherits from it
* Renaming
* Use vectors for controllers and disks, as preparation for using maps
* Updated file support handling
* Comment update
* DaynaPort and Bridge inherit from Device instead of Disk
* ProcessCmd() now works with devices instead of disks
* Renaming
* Added DeviceFactory
* Improved factory
* Comment update
* protected disk_t
* Code cleanup, added translations
* Device name can be set for rascsi
* rasctl can set device name
* Manpage update
* Manpage update
* Formatting update
* Check for missing name
* Initialize fd
* Initialize type
* Fixed string length issue
* Updated capacity formatting
* Fixed typo
* Split PbDevice into device and device definition
* Added TODO
* Renaming
* Renaming
* Device types can be explicitly specified with -t (no FILE:TYPE syntax anymore)
* Fixed compile-time issue
* Removed unused Append mode, updated read-only handling
* Type handling and manpage update
* Cleanup
* rasctl parser cleanup
* Review
* Constructor update
* Added .hdr (SCRM) support to web interface, tested web interface
* Default folder can be set remotely
* Removed deprecated operation
* DETACH supports all parameters in order to detach all devices
* include cleanup
* Logging should not depend on NDEBUG, for RaSCSI it is not peformance-critical
* INFO is default log level
* Exception renaming
* Updated GetPaddedName()
* Inheritance update
* Added BlockDevice class
* Removed unused code
* Updated typedefs
* Revert "Updated typedefs"
This reverts commit 546b46215a4d9b65067a11698e59ab1123cc6d64.
* Removed unused code
* Fixed warnign
* Use standard C++ integer types, use streams to resolve printf data type issues
* Added TODOs
* Added TODO
* Renaming
* Added TODO
* Added TODO
* Improved dry-run
* Code cleanup
* Updated handling of unknown options, code review and cleanup
* Manpage update
* Added PrimaryDevice
* Include cleanup
* Added pure virtual methods
* Comment updates
* Split rasutil
* Replaced some occurrences of BOOL
* Removed obsolete RASCSI definition in xm6.h
* Removed unused code, updated TODOs, replaced BOOL
* Added capacity check (issue #192)
* Fixed (most likely) https://github.com/akuker/RASCSI/issues/191
* Fixed wrong error messages
* For root the default image folder is /home/pi/images, updated error handling
* Dynaport code review
* Improved error handling
* Implemented READ CAPACITY(16)
* Comment update
* Commands can be 16 bytes long
* Implemented READ/WRITE/VERIFY(16)
* Comment update
* Renamed method to reflect the name of the respective SCSI command
* Do not created devices during dryRun
* Fixed padding of SCSIHD_APPLE vendor and product
* Initial implementation
* Updated ReportLuns
* Byte count update
* Fixed typo
* Finalized REPORT LUNS
* Removed TODO
* Updated TODO
* TODO update
* Updated device factory
* Comment update
* 64 bit update, tested on Ubuntu 64 bit system
* Removed assertion
* SCSI hard disks always have Apple specific mode pages (resolves issue #193)
* Error messsage update, 64 bit cleanup
* Reduced streams usage
* Updated handling of device flags
* MOs are protectable
* Removed duplicate error code handling
* Removed duplicate code
* Fixed CmdReadToc buffer overflow (https://github.com/akuker/RASCSI/issues/194)
* Added naive implementation of GET EVENT STATUS NOTIFICATION to avoid wranings
* HD must set removable device bit if the media is removable
* Removed duplicate logging
* Updated daynaport additional length
* Removed broken daynaport REQUEST SENSE. Successfully tested with my Mac.
* EnableInterface should not always return TRUE
* Updated Inquiry
* Updated LUN handling
* Replaced incorrect free by delete
* Updated comments and write-protection handling
* Made default HD name consistent
* STATUS_NOERROR is default
* Fixed Eject
* More eject handling updates
* Manpage updates
* Logging update
* Changed debug level
* Logging update
* Log capacity of all media types
* Logging update
* Encapsulated disk.blocks
* Encapsulated sector size
* Added overrides
* Added more overrides
* Fixed error message
* Fixed typos
* Fixed logging
* Added logging
* Use PrimaryDevice when calling Inquiry
* Comment update
* Changed default buffer size for testing
* Reverted last change
* Removed debug output
* De-inlined methods because optimized code did not work with them inlined
* Web interface can attach Daynaport again
* Improved handling of read-only hard disks
* Fixed issue with "all" semantics of DETACH
* rasctl supports adding removable media devices without providing a filename
* Removed unused flag in PbDeviceDefinition
* Updated rasctl output for ecjected media (resolves issue #199)
* Validate default folder name when changing default folder
2021-08-21 21:45:30 +00:00
|
|
|
|
DWORD min_exec_time = IsSASI() ? min_exec_time_sasi : min_exec_time_scsi;
|
|
|
|
|
DWORD time = SysTimer::GetTimerLow() - ctrl.execstart;
|
2020-08-28 14:18:02 +00:00
|
|
|
|
if (time < min_exec_time) {
|
|
|
|
|
SysTimer::SleepUsec(min_exec_time - time);
|
|
|
|
|
}
|
|
|
|
|
ctrl.execstart = 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// If the length is 0, go to the status phase
|
|
|
|
|
if (ctrl.length == 0) {
|
|
|
|
|
Status();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
2021-02-07 19:00:48 +00:00
|
|
|
|
LOGTRACE("%s Going into Data-in Phase", __PRETTY_FUNCTION__);
|
2020-08-28 14:18:02 +00:00
|
|
|
|
// Phase Setting
|
|
|
|
|
ctrl.phase = BUS::datain;
|
|
|
|
|
|
|
|
|
|
// Signal line operated by the target
|
|
|
|
|
ctrl.bus->SetMSG(FALSE);
|
|
|
|
|
ctrl.bus->SetCD(FALSE);
|
|
|
|
|
ctrl.bus->SetIO(TRUE);
|
|
|
|
|
|
|
|
|
|
// length, blocks are already set
|
|
|
|
|
ASSERT(ctrl.length > 0);
|
|
|
|
|
ASSERT(ctrl.blocks > 0);
|
|
|
|
|
ctrl.offset = 0;
|
|
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Send
|
|
|
|
|
Send();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
//
|
Configurable block size, controller/device cleanup, dispatchers per device, bridge setup (#203)
* Use foreach
* Renaming
* Revert "Renaming"
This reverts commit b0554b9c0a052e282625a4565d429313af2b3cc7.
* Manpage updates
* Removed obsolete assertions
* Replaced QWORD by uint64_t and removed respective typedef
* Removed LPCSTR typedef
* Removed LPCTSTR typedef
* Removed LPTSTR typedef
* Renamed SCSI command interface classes
* Renamed xm6.h to rascsi.h
* Moved interface classes to new interfaces subfolder
* Added include
* Fixed compilation issues of 64 bit Ubuntu
* Renaming
* Sort block sizes
* protobuf interface description update
* Fixed handling for sector size for non-disk devices
* Fixed typo
* Fixed comment
* Translate code commends into English, removing redundant ones (#214)
* Comment update
* For other bridge interfaces than eth0 IP address and netmask can be provided
* Added special rule for testing on x86 PCs
* Translated code comments into English, removing some redundant ones in the process, plus fixing typos (#215)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* Comment update
* Removed unused typedefs
* Added special rule for testing on x86 PCs
* Comment update
* Comment update
* Updated capacity calculation
* Updated protobuf interface to signal parameter support
* Simplified protobuf interface
* Updated rasctl server info output
* Updated logging
* protobuf interface has to return block only if it is configurable
* Updated block size handling
* Improved error message if ID is already in use
* Removed typedef
* Renamed protobuf interface method
* Renaming
* Use protobuf::Messsge instead of protobuf::MessageLite
* default_image_folder cannot be an empty string, removed obsolete check
* Logging update
* Made some error messages more concise
* Removed magic constant
* Updated error message
* Comment update
* Names of removable media drives must be constant and not contain the capacity
* Improved DeviceFactory error handling
* More error handing improvements
* Interface comment update
* Pass interface list to ctapdriver when creating bridge
* Moved initialization code
* Updated rasctl server information output
* Improved handling of MO capacities
* Renaming
* Comment update
* Reject inserting a medium when there is already a medium present (eject first)
* Save list of files in use before dry-run
* Updated rasctl server info message
* Comment update
* Fixed typo
* Cleaned list handling
* Sort devices list by ID *and unit*
* Improved block size check
* Fixed issue with missing method in old Raspberry Pi OS protobuf implementation
* Updated error message
* Improve and fix bugs with saving&loading configuration files for rascsi-web (#218)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Removed unused structures, code and type cleanup
* Use unscoped enums for commands
* SASI Format opcode is 0x06, not 0x04 (see comment in code)
* Removed duplicate command
* Code review, data type updates
* Data type updated, use #pragma once
* Logging update
* Renaming
* Renaming
* Removed duplicate code
* Renaming
* Refactoring
* Removed TODO
* Updated logging
* Comment update
* Comment update
* Updated GetEventStatusNotification
* Removed goto
* Options -h and -v do not require to be the root user (fixes issue #166)
* Updated error messages and exception handling
* Added number of supported LUNs to protobuf interface
* Updated list handling of protobuf interface
* Comment update
* Improved error handling
* Added missing return statement
* Allow empty device list
* Fixed unnecessary detach_all() when config file isn't read (#221)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Protecting/unprotecing a non-ready medium is considered not possible
* Updated error message
* Extract detaching all devices, add parameter list support
* Comment update
* Fixed typos
* Restore files in use if dry-run fails
* Feature configurable reserved id for rascsi-web (#223)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make the reserved SCSI id configurable through an argument to start.sh; make the rascsi-web service reserve 7 by default to maintain current behavior.
* Make it possible to reserve multiple scsi ids in the web ui
* Added support for reserved IDs
* rasctl output update
* Re-ordered logging
* Logging update
* Make use of the newly introduced 'rasctl -r' to have the webui reserve ids on the backend side upon startup (#224)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Updated string to integer conversions
* Improved string to integer conversion
* Move string to integer conversion to rasutil
* Removed unused variable
* Fixed detach, which did not remove the filename from the filenames set
* Re-added folder to gitignore
* Set/Display patch version
* Fix issue where reserved ids were not reserved again when restarting rascsi-service from within the web ui (#226)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Make sure reserved SCSI IDs gets reserved again when restarting rascsi-service from within the web ui
* Updated interface comment
* Accept daynaport as legacy type
* Fixed typo
* Remove file from the list of files in use when ejected with a SCSI command
* Check for attached device for INSERT, EJECT, PROTECT, UNPROTECT
* Fixed error handling
* Fixed filepath handling
* Added more device shortcuts to rasctl
* Fixed function declaration
* Extraced ATTACH and DETACH
* Extracted INSERT
* Simplified ProcessCmd
* Comment update
* Fixed memory leak
* Log information on whether a new device is protected or read-only
* Updated errro message
* Updated error message
* Initialize private fields
* Updated rasctl help message
* Added DEVICE_INFO to protobuf interface
* Improved error handling
* DEVICE_INFO supports device list
* Updated server info handling
* Unified result handling with oneof, all commands now return PbResult
* A result can always return a message string
* Fixed typo
* Simplified sending of commands
* Improved error handling
* Removed unused code
* Updated error handling
* Code cleanup
* Comment update
* Updated logging
* Updated error handling
* Updated handling of removed status for devices without image file support
* Comment update
* Fixed typo
* Updated logging
* Updated parameter handling
* Updated setting default interfaces
* Revert "Updated setting default interfaces"
This reverts commit 210abc775d9a79dd0c631cf3877966a2923f4d5b.
* Revert "Updated parameter handling"
This reverts commit 35302addd59f5f5e1cc032888ba32dcbb426a846.
* rascsi supports reserving IDs
* Updated help message
* Replaced BOOL by bool
* Logging update
* Logging update
* Added default parameters to device properties
* Return parameters a device was set up with
* Improved device initialization
* Updated default parameter handling
* Updated default parameter handling
* Fixed typo
* Comment updates
* Comment update
* Manage default parameters in the respective device
* Do not pass empty parameter string
* Added supports_params flag
* Made comparisons more consistent
* Updated error handling
* Updated exception handling
* Renaming
* Comment update
* NEC sectors size must be 512 bytes
* Updated logging
* Updated vendor name handling
* Updated handling of media loading/unloading
* Added stoppable property and stopped status
* Made MO stoppable
* Removed duplicate code
* Removed duplicate code
* Copy read-only property
* Renaming
* Removed duplicate code, added START/STOP
* Improved default parameter handling
* Updated load/eject handling
* Logging update
* Fixed typo
* Verified START/STOP UNIT
* Updated logging
* Updated status handling
* Updated status handling
* More status handling updates
* Logging update
* Made instance fields local variables
* Made disk_t private
* Made some data structures private
* Fixed ARM compile issue
* Fixed ctapdriver initialization issue
* Reset read-only status when opening an image file
* Made logging more consistent
* Updated log level
* Log load/eject on error level for testing
* Revert "Log load/eject on error level for testing"
This reverts commit d35a15ea8e520517d25e1e1054ad1aeda9f85f2e.
* Assume drive is not ready after having been stopped
* Updated status handling
* Fixed typo
* Rebuild manpage
* Fixed issue #234 (MODE SENSE (10) returns wrong mode parameter header)
* Removed unused code
* Enum data type update
* Removed duplicate range check
* Removed duplicate code
* Removed more duplicate code
* Logging update
* SCCD sector size was not meant to be configurable
* Updated configurable sector size properties
* Removed assertion
* Improved error handling
* Updated error handling
* Re-added special error handling only relevant for SASI
* Added TODOs
* Comment update
* Added override modifier
* Removed obsolete debug flag (related code was not called)
* Comment and logging updates
* Removed obsolete try/catch
* Revert "Removed obsolete try/catch"
This reverts commit 39ca12d8b153c706316ce79f4fec65c9abc60024.
* Comment update
* Removed duplicate code
* Updated error messages, use more foreach loops
* Updated logging
* Logging update
* README update
* Added block_count
* Evaluate block size when inserting a media
* rasctl display capacity if available
* Info message update
* Added missing product name to NEC vital product data
* MO block size depends on capacity only
* Extended property/status display
* Property display update
* Updated error handling
* (Doc only changes) Fix typos and add clarification that SASI is used on Unix workstations
Co-authored-by: Daniel Markstedt <markstedt@gmail.com>
Co-authored-by: Tony Kuker <akuker@gmail.com>
2021-09-15 01:23:04 +00:00
|
|
|
|
// Data out phase (used by SASI and SCSI)
|
2020-08-28 14:18:02 +00:00
|
|
|
|
//
|
|
|
|
|
//---------------------------------------------------------------------------
|
2021-07-26 18:33:36 +00:00
|
|
|
|
void SASIDEV::DataOut()
|
2020-08-28 14:18:02 +00:00
|
|
|
|
{
|
|
|
|
|
ASSERT(ctrl.length >= 0);
|
|
|
|
|
|
|
|
|
|
// Phase change
|
|
|
|
|
if (ctrl.phase != BUS::dataout) {
|
|
|
|
|
// Minimum execution time
|
|
|
|
|
if (ctrl.execstart > 0) {
|
Refactoring, device handling extensions, additional settings, improved error handling, 64 bit OS support, fixed issues (#184)
* Device type unification, support of removable media
* Added support for .hdr extension
* Removable flag cleanup
* Manpage update
* Enriched PbOperation with PbDevice
* Added file size to PbImageFile
* Added device list support
* Set image_file
* Make remote interface more robust by ignoring SIGPIPE
* Return status only once
* Fixed typo
* Error handling update
* When starting rascsi parse everything before attaching devices
* Added dry run mode
* Comment update
* Updated logging
* Added Device base class, Disk class inherits from it
* Renaming
* Use vectors for controllers and disks, as preparation for using maps
* Updated file support handling
* Comment update
* DaynaPort and Bridge inherit from Device instead of Disk
* ProcessCmd() now works with devices instead of disks
* Renaming
* Added DeviceFactory
* Improved factory
* Comment update
* protected disk_t
* Code cleanup, added translations
* Device name can be set for rascsi
* rasctl can set device name
* Manpage update
* Manpage update
* Formatting update
* Check for missing name
* Initialize fd
* Initialize type
* Fixed string length issue
* Updated capacity formatting
* Fixed typo
* Split PbDevice into device and device definition
* Added TODO
* Renaming
* Renaming
* Device types can be explicitly specified with -t (no FILE:TYPE syntax anymore)
* Fixed compile-time issue
* Removed unused Append mode, updated read-only handling
* Type handling and manpage update
* Cleanup
* rasctl parser cleanup
* Review
* Constructor update
* Added .hdr (SCRM) support to web interface, tested web interface
* Default folder can be set remotely
* Removed deprecated operation
* DETACH supports all parameters in order to detach all devices
* include cleanup
* Logging should not depend on NDEBUG, for RaSCSI it is not peformance-critical
* INFO is default log level
* Exception renaming
* Updated GetPaddedName()
* Inheritance update
* Added BlockDevice class
* Removed unused code
* Updated typedefs
* Revert "Updated typedefs"
This reverts commit 546b46215a4d9b65067a11698e59ab1123cc6d64.
* Removed unused code
* Fixed warnign
* Use standard C++ integer types, use streams to resolve printf data type issues
* Added TODOs
* Added TODO
* Renaming
* Added TODO
* Added TODO
* Improved dry-run
* Code cleanup
* Updated handling of unknown options, code review and cleanup
* Manpage update
* Added PrimaryDevice
* Include cleanup
* Added pure virtual methods
* Comment updates
* Split rasutil
* Replaced some occurrences of BOOL
* Removed obsolete RASCSI definition in xm6.h
* Removed unused code, updated TODOs, replaced BOOL
* Added capacity check (issue #192)
* Fixed (most likely) https://github.com/akuker/RASCSI/issues/191
* Fixed wrong error messages
* For root the default image folder is /home/pi/images, updated error handling
* Dynaport code review
* Improved error handling
* Implemented READ CAPACITY(16)
* Comment update
* Commands can be 16 bytes long
* Implemented READ/WRITE/VERIFY(16)
* Comment update
* Renamed method to reflect the name of the respective SCSI command
* Do not created devices during dryRun
* Fixed padding of SCSIHD_APPLE vendor and product
* Initial implementation
* Updated ReportLuns
* Byte count update
* Fixed typo
* Finalized REPORT LUNS
* Removed TODO
* Updated TODO
* TODO update
* Updated device factory
* Comment update
* 64 bit update, tested on Ubuntu 64 bit system
* Removed assertion
* SCSI hard disks always have Apple specific mode pages (resolves issue #193)
* Error messsage update, 64 bit cleanup
* Reduced streams usage
* Updated handling of device flags
* MOs are protectable
* Removed duplicate error code handling
* Removed duplicate code
* Fixed CmdReadToc buffer overflow (https://github.com/akuker/RASCSI/issues/194)
* Added naive implementation of GET EVENT STATUS NOTIFICATION to avoid wranings
* HD must set removable device bit if the media is removable
* Removed duplicate logging
* Updated daynaport additional length
* Removed broken daynaport REQUEST SENSE. Successfully tested with my Mac.
* EnableInterface should not always return TRUE
* Updated Inquiry
* Updated LUN handling
* Replaced incorrect free by delete
* Updated comments and write-protection handling
* Made default HD name consistent
* STATUS_NOERROR is default
* Fixed Eject
* More eject handling updates
* Manpage updates
* Logging update
* Changed debug level
* Logging update
* Log capacity of all media types
* Logging update
* Encapsulated disk.blocks
* Encapsulated sector size
* Added overrides
* Added more overrides
* Fixed error message
* Fixed typos
* Fixed logging
* Added logging
* Use PrimaryDevice when calling Inquiry
* Comment update
* Changed default buffer size for testing
* Reverted last change
* Removed debug output
* De-inlined methods because optimized code did not work with them inlined
* Web interface can attach Daynaport again
* Improved handling of read-only hard disks
* Fixed issue with "all" semantics of DETACH
* rasctl supports adding removable media devices without providing a filename
* Removed unused flag in PbDeviceDefinition
* Updated rasctl output for ecjected media (resolves issue #199)
* Validate default folder name when changing default folder
2021-08-21 21:45:30 +00:00
|
|
|
|
DWORD min_exec_time = IsSASI() ? min_exec_time_sasi : min_exec_time_scsi;
|
|
|
|
|
DWORD time = SysTimer::GetTimerLow() - ctrl.execstart;
|
2020-08-28 14:18:02 +00:00
|
|
|
|
if (time < min_exec_time) {
|
|
|
|
|
SysTimer::SleepUsec(min_exec_time - time);
|
|
|
|
|
}
|
|
|
|
|
ctrl.execstart = 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// If the length is 0, go to the status phase
|
|
|
|
|
if (ctrl.length == 0) {
|
|
|
|
|
Status();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
2021-02-07 19:00:48 +00:00
|
|
|
|
LOGTRACE("%s Data out phase", __PRETTY_FUNCTION__);
|
2020-08-28 14:18:02 +00:00
|
|
|
|
|
|
|
|
|
// Phase Setting
|
|
|
|
|
ctrl.phase = BUS::dataout;
|
|
|
|
|
|
|
|
|
|
// Signal line operated by the target
|
|
|
|
|
ctrl.bus->SetMSG(FALSE);
|
|
|
|
|
ctrl.bus->SetCD(FALSE);
|
|
|
|
|
ctrl.bus->SetIO(FALSE);
|
|
|
|
|
|
2022-02-17 02:04:42 +00:00
|
|
|
|
// Length has already been calculated
|
2020-08-28 14:18:02 +00:00
|
|
|
|
ASSERT(ctrl.length > 0);
|
|
|
|
|
ctrl.offset = 0;
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Receive
|
|
|
|
|
Receive();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
//
|
|
|
|
|
// Error
|
|
|
|
|
//
|
|
|
|
|
//---------------------------------------------------------------------------
|
2022-02-17 02:04:42 +00:00
|
|
|
|
void SASIDEV::Error(ERROR_CODES::sense_key sense_key, ERROR_CODES::asc asc, ERROR_CODES::status status)
|
2020-08-28 14:18:02 +00:00
|
|
|
|
{
|
|
|
|
|
// Get bus information
|
2020-10-19 12:31:06 +00:00
|
|
|
|
((GPIOBUS*)ctrl.bus)->Aquire();
|
2020-08-28 14:18:02 +00:00
|
|
|
|
|
|
|
|
|
// Reset check
|
|
|
|
|
if (ctrl.bus->GetRST()) {
|
|
|
|
|
// Reset the controller
|
|
|
|
|
Reset();
|
|
|
|
|
|
|
|
|
|
// Reset the bus
|
|
|
|
|
ctrl.bus->Reset();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Bus free for status phase and message in phase
|
|
|
|
|
if (ctrl.phase == BUS::status || ctrl.phase == BUS::msgin) {
|
|
|
|
|
BusFree();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Logical Unit
|
2021-10-13 09:03:31 +00:00
|
|
|
|
DWORD lun = GetEffectiveLun();
|
2020-08-28 14:18:02 +00:00
|
|
|
|
|
2022-02-17 02:04:42 +00:00
|
|
|
|
// Set status and message
|
|
|
|
|
ctrl.status = (lun << 5) | status;
|
2020-08-28 14:18:02 +00:00
|
|
|
|
|
|
|
|
|
// status phase
|
|
|
|
|
Status();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
//
|
|
|
|
|
// TEST UNIT READY
|
|
|
|
|
//
|
|
|
|
|
//---------------------------------------------------------------------------
|
2021-07-26 18:33:36 +00:00
|
|
|
|
void SASIDEV::CmdTestUnitReady()
|
2020-08-28 14:18:02 +00:00
|
|
|
|
{
|
2021-02-07 19:00:48 +00:00
|
|
|
|
LOGTRACE("%s TEST UNIT READY Command ", __PRETTY_FUNCTION__);
|
2020-08-28 14:18:02 +00:00
|
|
|
|
|
|
|
|
|
// Command processing on drive
|
2022-02-10 18:54:48 +00:00
|
|
|
|
((Disk *)ctrl.device)->TestUnitReady(this);
|
2020-08-28 14:18:02 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
//
|
|
|
|
|
// REZERO UNIT
|
|
|
|
|
//
|
|
|
|
|
//---------------------------------------------------------------------------
|
2021-07-26 18:33:36 +00:00
|
|
|
|
void SASIDEV::CmdRezero()
|
2020-08-28 14:18:02 +00:00
|
|
|
|
{
|
2021-02-07 19:00:48 +00:00
|
|
|
|
LOGTRACE( "%s REZERO UNIT Command ", __PRETTY_FUNCTION__);
|
2020-08-28 14:18:02 +00:00
|
|
|
|
|
|
|
|
|
// Command processing on drive
|
2022-02-10 18:54:48 +00:00
|
|
|
|
((Disk *)ctrl.device)->Rezero(this);
|
2020-08-28 14:18:02 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
//
|
|
|
|
|
// REQUEST SENSE
|
|
|
|
|
//
|
|
|
|
|
//---------------------------------------------------------------------------
|
2021-07-26 18:33:36 +00:00
|
|
|
|
void SASIDEV::CmdRequestSense()
|
2020-08-28 14:18:02 +00:00
|
|
|
|
{
|
2021-02-07 19:00:48 +00:00
|
|
|
|
LOGTRACE( "%s REQUEST SENSE Command ", __PRETTY_FUNCTION__);
|
2020-08-28 14:18:02 +00:00
|
|
|
|
|
Configurable block size, controller/device cleanup, dispatchers per device, bridge setup (#203)
* Use foreach
* Renaming
* Revert "Renaming"
This reverts commit b0554b9c0a052e282625a4565d429313af2b3cc7.
* Manpage updates
* Removed obsolete assertions
* Replaced QWORD by uint64_t and removed respective typedef
* Removed LPCSTR typedef
* Removed LPCTSTR typedef
* Removed LPTSTR typedef
* Renamed SCSI command interface classes
* Renamed xm6.h to rascsi.h
* Moved interface classes to new interfaces subfolder
* Added include
* Fixed compilation issues of 64 bit Ubuntu
* Renaming
* Sort block sizes
* protobuf interface description update
* Fixed handling for sector size for non-disk devices
* Fixed typo
* Fixed comment
* Translate code commends into English, removing redundant ones (#214)
* Comment update
* For other bridge interfaces than eth0 IP address and netmask can be provided
* Added special rule for testing on x86 PCs
* Translated code comments into English, removing some redundant ones in the process, plus fixing typos (#215)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* Comment update
* Removed unused typedefs
* Added special rule for testing on x86 PCs
* Comment update
* Comment update
* Updated capacity calculation
* Updated protobuf interface to signal parameter support
* Simplified protobuf interface
* Updated rasctl server info output
* Updated logging
* protobuf interface has to return block only if it is configurable
* Updated block size handling
* Improved error message if ID is already in use
* Removed typedef
* Renamed protobuf interface method
* Renaming
* Use protobuf::Messsge instead of protobuf::MessageLite
* default_image_folder cannot be an empty string, removed obsolete check
* Logging update
* Made some error messages more concise
* Removed magic constant
* Updated error message
* Comment update
* Names of removable media drives must be constant and not contain the capacity
* Improved DeviceFactory error handling
* More error handing improvements
* Interface comment update
* Pass interface list to ctapdriver when creating bridge
* Moved initialization code
* Updated rasctl server information output
* Improved handling of MO capacities
* Renaming
* Comment update
* Reject inserting a medium when there is already a medium present (eject first)
* Save list of files in use before dry-run
* Updated rasctl server info message
* Comment update
* Fixed typo
* Cleaned list handling
* Sort devices list by ID *and unit*
* Improved block size check
* Fixed issue with missing method in old Raspberry Pi OS protobuf implementation
* Updated error message
* Improve and fix bugs with saving&loading configuration files for rascsi-web (#218)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Removed unused structures, code and type cleanup
* Use unscoped enums for commands
* SASI Format opcode is 0x06, not 0x04 (see comment in code)
* Removed duplicate command
* Code review, data type updates
* Data type updated, use #pragma once
* Logging update
* Renaming
* Renaming
* Removed duplicate code
* Renaming
* Refactoring
* Removed TODO
* Updated logging
* Comment update
* Comment update
* Updated GetEventStatusNotification
* Removed goto
* Options -h and -v do not require to be the root user (fixes issue #166)
* Updated error messages and exception handling
* Added number of supported LUNs to protobuf interface
* Updated list handling of protobuf interface
* Comment update
* Improved error handling
* Added missing return statement
* Allow empty device list
* Fixed unnecessary detach_all() when config file isn't read (#221)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Protecting/unprotecing a non-ready medium is considered not possible
* Updated error message
* Extract detaching all devices, add parameter list support
* Comment update
* Fixed typos
* Restore files in use if dry-run fails
* Feature configurable reserved id for rascsi-web (#223)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make the reserved SCSI id configurable through an argument to start.sh; make the rascsi-web service reserve 7 by default to maintain current behavior.
* Make it possible to reserve multiple scsi ids in the web ui
* Added support for reserved IDs
* rasctl output update
* Re-ordered logging
* Logging update
* Make use of the newly introduced 'rasctl -r' to have the webui reserve ids on the backend side upon startup (#224)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Updated string to integer conversions
* Improved string to integer conversion
* Move string to integer conversion to rasutil
* Removed unused variable
* Fixed detach, which did not remove the filename from the filenames set
* Re-added folder to gitignore
* Set/Display patch version
* Fix issue where reserved ids were not reserved again when restarting rascsi-service from within the web ui (#226)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Make sure reserved SCSI IDs gets reserved again when restarting rascsi-service from within the web ui
* Updated interface comment
* Accept daynaport as legacy type
* Fixed typo
* Remove file from the list of files in use when ejected with a SCSI command
* Check for attached device for INSERT, EJECT, PROTECT, UNPROTECT
* Fixed error handling
* Fixed filepath handling
* Added more device shortcuts to rasctl
* Fixed function declaration
* Extraced ATTACH and DETACH
* Extracted INSERT
* Simplified ProcessCmd
* Comment update
* Fixed memory leak
* Log information on whether a new device is protected or read-only
* Updated errro message
* Updated error message
* Initialize private fields
* Updated rasctl help message
* Added DEVICE_INFO to protobuf interface
* Improved error handling
* DEVICE_INFO supports device list
* Updated server info handling
* Unified result handling with oneof, all commands now return PbResult
* A result can always return a message string
* Fixed typo
* Simplified sending of commands
* Improved error handling
* Removed unused code
* Updated error handling
* Code cleanup
* Comment update
* Updated logging
* Updated error handling
* Updated handling of removed status for devices without image file support
* Comment update
* Fixed typo
* Updated logging
* Updated parameter handling
* Updated setting default interfaces
* Revert "Updated setting default interfaces"
This reverts commit 210abc775d9a79dd0c631cf3877966a2923f4d5b.
* Revert "Updated parameter handling"
This reverts commit 35302addd59f5f5e1cc032888ba32dcbb426a846.
* rascsi supports reserving IDs
* Updated help message
* Replaced BOOL by bool
* Logging update
* Logging update
* Added default parameters to device properties
* Return parameters a device was set up with
* Improved device initialization
* Updated default parameter handling
* Updated default parameter handling
* Fixed typo
* Comment updates
* Comment update
* Manage default parameters in the respective device
* Do not pass empty parameter string
* Added supports_params flag
* Made comparisons more consistent
* Updated error handling
* Updated exception handling
* Renaming
* Comment update
* NEC sectors size must be 512 bytes
* Updated logging
* Updated vendor name handling
* Updated handling of media loading/unloading
* Added stoppable property and stopped status
* Made MO stoppable
* Removed duplicate code
* Removed duplicate code
* Copy read-only property
* Renaming
* Removed duplicate code, added START/STOP
* Improved default parameter handling
* Updated load/eject handling
* Logging update
* Fixed typo
* Verified START/STOP UNIT
* Updated logging
* Updated status handling
* Updated status handling
* More status handling updates
* Logging update
* Made instance fields local variables
* Made disk_t private
* Made some data structures private
* Fixed ARM compile issue
* Fixed ctapdriver initialization issue
* Reset read-only status when opening an image file
* Made logging more consistent
* Updated log level
* Log load/eject on error level for testing
* Revert "Log load/eject on error level for testing"
This reverts commit d35a15ea8e520517d25e1e1054ad1aeda9f85f2e.
* Assume drive is not ready after having been stopped
* Updated status handling
* Fixed typo
* Rebuild manpage
* Fixed issue #234 (MODE SENSE (10) returns wrong mode parameter header)
* Removed unused code
* Enum data type update
* Removed duplicate range check
* Removed duplicate code
* Removed more duplicate code
* Logging update
* SCCD sector size was not meant to be configurable
* Updated configurable sector size properties
* Removed assertion
* Improved error handling
* Updated error handling
* Re-added special error handling only relevant for SASI
* Added TODOs
* Comment update
* Added override modifier
* Removed obsolete debug flag (related code was not called)
* Comment and logging updates
* Removed obsolete try/catch
* Revert "Removed obsolete try/catch"
This reverts commit 39ca12d8b153c706316ce79f4fec65c9abc60024.
* Comment update
* Removed duplicate code
* Updated error messages, use more foreach loops
* Updated logging
* Logging update
* README update
* Added block_count
* Evaluate block size when inserting a media
* rasctl display capacity if available
* Info message update
* Added missing product name to NEC vital product data
* MO block size depends on capacity only
* Extended property/status display
* Property display update
* Updated error handling
* (Doc only changes) Fix typos and add clarification that SASI is used on Unix workstations
Co-authored-by: Daniel Markstedt <markstedt@gmail.com>
Co-authored-by: Tony Kuker <akuker@gmail.com>
2021-09-15 01:23:04 +00:00
|
|
|
|
// Command processing on drive
|
2022-02-10 18:54:48 +00:00
|
|
|
|
((Disk *)ctrl.device)->RequestSense(this);
|
2020-08-28 14:18:02 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
//
|
|
|
|
|
// FORMAT UNIT
|
|
|
|
|
//
|
|
|
|
|
//---------------------------------------------------------------------------
|
2021-07-26 18:33:36 +00:00
|
|
|
|
void SASIDEV::CmdFormat()
|
2020-08-28 14:18:02 +00:00
|
|
|
|
{
|
2021-02-07 19:00:48 +00:00
|
|
|
|
LOGTRACE( "%s FORMAT UNIT Command ", __PRETTY_FUNCTION__);
|
2020-08-28 14:18:02 +00:00
|
|
|
|
|
|
|
|
|
// Command processing on drive
|
2022-02-10 18:54:48 +00:00
|
|
|
|
((Disk *)ctrl.device)->FormatUnit(this);
|
2020-08-28 14:18:02 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
//
|
|
|
|
|
// REASSIGN BLOCKS
|
|
|
|
|
//
|
|
|
|
|
//---------------------------------------------------------------------------
|
Configurable block size, controller/device cleanup, dispatchers per device, bridge setup (#203)
* Use foreach
* Renaming
* Revert "Renaming"
This reverts commit b0554b9c0a052e282625a4565d429313af2b3cc7.
* Manpage updates
* Removed obsolete assertions
* Replaced QWORD by uint64_t and removed respective typedef
* Removed LPCSTR typedef
* Removed LPCTSTR typedef
* Removed LPTSTR typedef
* Renamed SCSI command interface classes
* Renamed xm6.h to rascsi.h
* Moved interface classes to new interfaces subfolder
* Added include
* Fixed compilation issues of 64 bit Ubuntu
* Renaming
* Sort block sizes
* protobuf interface description update
* Fixed handling for sector size for non-disk devices
* Fixed typo
* Fixed comment
* Translate code commends into English, removing redundant ones (#214)
* Comment update
* For other bridge interfaces than eth0 IP address and netmask can be provided
* Added special rule for testing on x86 PCs
* Translated code comments into English, removing some redundant ones in the process, plus fixing typos (#215)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* Comment update
* Removed unused typedefs
* Added special rule for testing on x86 PCs
* Comment update
* Comment update
* Updated capacity calculation
* Updated protobuf interface to signal parameter support
* Simplified protobuf interface
* Updated rasctl server info output
* Updated logging
* protobuf interface has to return block only if it is configurable
* Updated block size handling
* Improved error message if ID is already in use
* Removed typedef
* Renamed protobuf interface method
* Renaming
* Use protobuf::Messsge instead of protobuf::MessageLite
* default_image_folder cannot be an empty string, removed obsolete check
* Logging update
* Made some error messages more concise
* Removed magic constant
* Updated error message
* Comment update
* Names of removable media drives must be constant and not contain the capacity
* Improved DeviceFactory error handling
* More error handing improvements
* Interface comment update
* Pass interface list to ctapdriver when creating bridge
* Moved initialization code
* Updated rasctl server information output
* Improved handling of MO capacities
* Renaming
* Comment update
* Reject inserting a medium when there is already a medium present (eject first)
* Save list of files in use before dry-run
* Updated rasctl server info message
* Comment update
* Fixed typo
* Cleaned list handling
* Sort devices list by ID *and unit*
* Improved block size check
* Fixed issue with missing method in old Raspberry Pi OS protobuf implementation
* Updated error message
* Improve and fix bugs with saving&loading configuration files for rascsi-web (#218)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Removed unused structures, code and type cleanup
* Use unscoped enums for commands
* SASI Format opcode is 0x06, not 0x04 (see comment in code)
* Removed duplicate command
* Code review, data type updates
* Data type updated, use #pragma once
* Logging update
* Renaming
* Renaming
* Removed duplicate code
* Renaming
* Refactoring
* Removed TODO
* Updated logging
* Comment update
* Comment update
* Updated GetEventStatusNotification
* Removed goto
* Options -h and -v do not require to be the root user (fixes issue #166)
* Updated error messages and exception handling
* Added number of supported LUNs to protobuf interface
* Updated list handling of protobuf interface
* Comment update
* Improved error handling
* Added missing return statement
* Allow empty device list
* Fixed unnecessary detach_all() when config file isn't read (#221)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Protecting/unprotecing a non-ready medium is considered not possible
* Updated error message
* Extract detaching all devices, add parameter list support
* Comment update
* Fixed typos
* Restore files in use if dry-run fails
* Feature configurable reserved id for rascsi-web (#223)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make the reserved SCSI id configurable through an argument to start.sh; make the rascsi-web service reserve 7 by default to maintain current behavior.
* Make it possible to reserve multiple scsi ids in the web ui
* Added support for reserved IDs
* rasctl output update
* Re-ordered logging
* Logging update
* Make use of the newly introduced 'rasctl -r' to have the webui reserve ids on the backend side upon startup (#224)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Updated string to integer conversions
* Improved string to integer conversion
* Move string to integer conversion to rasutil
* Removed unused variable
* Fixed detach, which did not remove the filename from the filenames set
* Re-added folder to gitignore
* Set/Display patch version
* Fix issue where reserved ids were not reserved again when restarting rascsi-service from within the web ui (#226)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Make sure reserved SCSI IDs gets reserved again when restarting rascsi-service from within the web ui
* Updated interface comment
* Accept daynaport as legacy type
* Fixed typo
* Remove file from the list of files in use when ejected with a SCSI command
* Check for attached device for INSERT, EJECT, PROTECT, UNPROTECT
* Fixed error handling
* Fixed filepath handling
* Added more device shortcuts to rasctl
* Fixed function declaration
* Extraced ATTACH and DETACH
* Extracted INSERT
* Simplified ProcessCmd
* Comment update
* Fixed memory leak
* Log information on whether a new device is protected or read-only
* Updated errro message
* Updated error message
* Initialize private fields
* Updated rasctl help message
* Added DEVICE_INFO to protobuf interface
* Improved error handling
* DEVICE_INFO supports device list
* Updated server info handling
* Unified result handling with oneof, all commands now return PbResult
* A result can always return a message string
* Fixed typo
* Simplified sending of commands
* Improved error handling
* Removed unused code
* Updated error handling
* Code cleanup
* Comment update
* Updated logging
* Updated error handling
* Updated handling of removed status for devices without image file support
* Comment update
* Fixed typo
* Updated logging
* Updated parameter handling
* Updated setting default interfaces
* Revert "Updated setting default interfaces"
This reverts commit 210abc775d9a79dd0c631cf3877966a2923f4d5b.
* Revert "Updated parameter handling"
This reverts commit 35302addd59f5f5e1cc032888ba32dcbb426a846.
* rascsi supports reserving IDs
* Updated help message
* Replaced BOOL by bool
* Logging update
* Logging update
* Added default parameters to device properties
* Return parameters a device was set up with
* Improved device initialization
* Updated default parameter handling
* Updated default parameter handling
* Fixed typo
* Comment updates
* Comment update
* Manage default parameters in the respective device
* Do not pass empty parameter string
* Added supports_params flag
* Made comparisons more consistent
* Updated error handling
* Updated exception handling
* Renaming
* Comment update
* NEC sectors size must be 512 bytes
* Updated logging
* Updated vendor name handling
* Updated handling of media loading/unloading
* Added stoppable property and stopped status
* Made MO stoppable
* Removed duplicate code
* Removed duplicate code
* Copy read-only property
* Renaming
* Removed duplicate code, added START/STOP
* Improved default parameter handling
* Updated load/eject handling
* Logging update
* Fixed typo
* Verified START/STOP UNIT
* Updated logging
* Updated status handling
* Updated status handling
* More status handling updates
* Logging update
* Made instance fields local variables
* Made disk_t private
* Made some data structures private
* Fixed ARM compile issue
* Fixed ctapdriver initialization issue
* Reset read-only status when opening an image file
* Made logging more consistent
* Updated log level
* Log load/eject on error level for testing
* Revert "Log load/eject on error level for testing"
This reverts commit d35a15ea8e520517d25e1e1054ad1aeda9f85f2e.
* Assume drive is not ready after having been stopped
* Updated status handling
* Fixed typo
* Rebuild manpage
* Fixed issue #234 (MODE SENSE (10) returns wrong mode parameter header)
* Removed unused code
* Enum data type update
* Removed duplicate range check
* Removed duplicate code
* Removed more duplicate code
* Logging update
* SCCD sector size was not meant to be configurable
* Updated configurable sector size properties
* Removed assertion
* Improved error handling
* Updated error handling
* Re-added special error handling only relevant for SASI
* Added TODOs
* Comment update
* Added override modifier
* Removed obsolete debug flag (related code was not called)
* Comment and logging updates
* Removed obsolete try/catch
* Revert "Removed obsolete try/catch"
This reverts commit 39ca12d8b153c706316ce79f4fec65c9abc60024.
* Comment update
* Removed duplicate code
* Updated error messages, use more foreach loops
* Updated logging
* Logging update
* README update
* Added block_count
* Evaluate block size when inserting a media
* rasctl display capacity if available
* Info message update
* Added missing product name to NEC vital product data
* MO block size depends on capacity only
* Extended property/status display
* Property display update
* Updated error handling
* (Doc only changes) Fix typos and add clarification that SASI is used on Unix workstations
Co-authored-by: Daniel Markstedt <markstedt@gmail.com>
Co-authored-by: Tony Kuker <akuker@gmail.com>
2021-09-15 01:23:04 +00:00
|
|
|
|
void SASIDEV::CmdReassignBlocks()
|
2020-08-28 14:18:02 +00:00
|
|
|
|
{
|
2021-02-07 19:00:48 +00:00
|
|
|
|
LOGTRACE("%s REASSIGN BLOCKS Command ", __PRETTY_FUNCTION__);
|
2020-08-28 14:18:02 +00:00
|
|
|
|
|
|
|
|
|
// Command processing on drive
|
2022-02-10 18:54:48 +00:00
|
|
|
|
((Disk *)ctrl.device)->ReassignBlocks(this);
|
2020-08-28 14:18:02 +00:00
|
|
|
|
}
|
|
|
|
|
|
2021-03-08 01:11:17 +00:00
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
//
|
|
|
|
|
// RESERVE UNIT(16)
|
|
|
|
|
//
|
2021-04-05 21:11:54 +00:00
|
|
|
|
// The reserve/release commands are only used in multi-initiator
|
|
|
|
|
// environments. RaSCSI doesn't support this use case. However, some old
|
|
|
|
|
// versions of Solaris will issue the reserve/release commands. We will
|
|
|
|
|
// just respond with an OK status.
|
|
|
|
|
//
|
2021-03-08 01:11:17 +00:00
|
|
|
|
//---------------------------------------------------------------------------
|
2021-07-26 18:33:36 +00:00
|
|
|
|
void SASIDEV::CmdReserveUnit()
|
2021-03-08 01:11:17 +00:00
|
|
|
|
{
|
2021-04-05 21:11:54 +00:00
|
|
|
|
LOGTRACE( "%s Reserve(6) Command", __PRETTY_FUNCTION__);
|
2021-03-08 01:11:17 +00:00
|
|
|
|
|
|
|
|
|
// status phase
|
2021-04-05 21:11:54 +00:00
|
|
|
|
Status();
|
2021-03-08 01:11:17 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
//
|
|
|
|
|
// RELEASE UNIT(17)
|
|
|
|
|
//
|
2021-04-05 21:11:54 +00:00
|
|
|
|
// The reserve/release commands are only used in multi-initiator
|
|
|
|
|
// environments. RaSCSI doesn't support this use case. However, some old
|
|
|
|
|
// versions of Solaris will issue the reserve/release commands. We will
|
|
|
|
|
// just respond with an OK status.
|
|
|
|
|
//
|
2021-03-08 01:11:17 +00:00
|
|
|
|
//---------------------------------------------------------------------------
|
2021-07-26 18:33:36 +00:00
|
|
|
|
void SASIDEV::CmdReleaseUnit()
|
2021-03-08 01:11:17 +00:00
|
|
|
|
{
|
2021-04-05 21:11:54 +00:00
|
|
|
|
LOGTRACE( "%s Release(6) Command", __PRETTY_FUNCTION__);
|
2021-03-08 01:11:17 +00:00
|
|
|
|
|
|
|
|
|
// status phase
|
2021-04-05 21:11:54 +00:00
|
|
|
|
Status();
|
2021-03-08 01:11:17 +00:00
|
|
|
|
}
|
|
|
|
|
|
2020-08-28 14:18:02 +00:00
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
//
|
|
|
|
|
// READ(6)
|
|
|
|
|
//
|
|
|
|
|
//---------------------------------------------------------------------------
|
2021-07-26 18:33:36 +00:00
|
|
|
|
void SASIDEV::CmdRead6()
|
2020-08-28 14:18:02 +00:00
|
|
|
|
{
|
|
|
|
|
// Get record number and block number
|
2021-07-07 21:46:45 +00:00
|
|
|
|
DWORD record = ctrl.cmd[1] & 0x1f;
|
2020-08-28 14:18:02 +00:00
|
|
|
|
record <<= 8;
|
|
|
|
|
record |= ctrl.cmd[2];
|
|
|
|
|
record <<= 8;
|
|
|
|
|
record |= ctrl.cmd[3];
|
|
|
|
|
ctrl.blocks = ctrl.cmd[4];
|
|
|
|
|
if (ctrl.blocks == 0) {
|
|
|
|
|
ctrl.blocks = 0x100;
|
|
|
|
|
}
|
|
|
|
|
|
Refactoring, device handling extensions, additional settings, improved error handling, 64 bit OS support, fixed issues (#184)
* Device type unification, support of removable media
* Added support for .hdr extension
* Removable flag cleanup
* Manpage update
* Enriched PbOperation with PbDevice
* Added file size to PbImageFile
* Added device list support
* Set image_file
* Make remote interface more robust by ignoring SIGPIPE
* Return status only once
* Fixed typo
* Error handling update
* When starting rascsi parse everything before attaching devices
* Added dry run mode
* Comment update
* Updated logging
* Added Device base class, Disk class inherits from it
* Renaming
* Use vectors for controllers and disks, as preparation for using maps
* Updated file support handling
* Comment update
* DaynaPort and Bridge inherit from Device instead of Disk
* ProcessCmd() now works with devices instead of disks
* Renaming
* Added DeviceFactory
* Improved factory
* Comment update
* protected disk_t
* Code cleanup, added translations
* Device name can be set for rascsi
* rasctl can set device name
* Manpage update
* Manpage update
* Formatting update
* Check for missing name
* Initialize fd
* Initialize type
* Fixed string length issue
* Updated capacity formatting
* Fixed typo
* Split PbDevice into device and device definition
* Added TODO
* Renaming
* Renaming
* Device types can be explicitly specified with -t (no FILE:TYPE syntax anymore)
* Fixed compile-time issue
* Removed unused Append mode, updated read-only handling
* Type handling and manpage update
* Cleanup
* rasctl parser cleanup
* Review
* Constructor update
* Added .hdr (SCRM) support to web interface, tested web interface
* Default folder can be set remotely
* Removed deprecated operation
* DETACH supports all parameters in order to detach all devices
* include cleanup
* Logging should not depend on NDEBUG, for RaSCSI it is not peformance-critical
* INFO is default log level
* Exception renaming
* Updated GetPaddedName()
* Inheritance update
* Added BlockDevice class
* Removed unused code
* Updated typedefs
* Revert "Updated typedefs"
This reverts commit 546b46215a4d9b65067a11698e59ab1123cc6d64.
* Removed unused code
* Fixed warnign
* Use standard C++ integer types, use streams to resolve printf data type issues
* Added TODOs
* Added TODO
* Renaming
* Added TODO
* Added TODO
* Improved dry-run
* Code cleanup
* Updated handling of unknown options, code review and cleanup
* Manpage update
* Added PrimaryDevice
* Include cleanup
* Added pure virtual methods
* Comment updates
* Split rasutil
* Replaced some occurrences of BOOL
* Removed obsolete RASCSI definition in xm6.h
* Removed unused code, updated TODOs, replaced BOOL
* Added capacity check (issue #192)
* Fixed (most likely) https://github.com/akuker/RASCSI/issues/191
* Fixed wrong error messages
* For root the default image folder is /home/pi/images, updated error handling
* Dynaport code review
* Improved error handling
* Implemented READ CAPACITY(16)
* Comment update
* Commands can be 16 bytes long
* Implemented READ/WRITE/VERIFY(16)
* Comment update
* Renamed method to reflect the name of the respective SCSI command
* Do not created devices during dryRun
* Fixed padding of SCSIHD_APPLE vendor and product
* Initial implementation
* Updated ReportLuns
* Byte count update
* Fixed typo
* Finalized REPORT LUNS
* Removed TODO
* Updated TODO
* TODO update
* Updated device factory
* Comment update
* 64 bit update, tested on Ubuntu 64 bit system
* Removed assertion
* SCSI hard disks always have Apple specific mode pages (resolves issue #193)
* Error messsage update, 64 bit cleanup
* Reduced streams usage
* Updated handling of device flags
* MOs are protectable
* Removed duplicate error code handling
* Removed duplicate code
* Fixed CmdReadToc buffer overflow (https://github.com/akuker/RASCSI/issues/194)
* Added naive implementation of GET EVENT STATUS NOTIFICATION to avoid wranings
* HD must set removable device bit if the media is removable
* Removed duplicate logging
* Updated daynaport additional length
* Removed broken daynaport REQUEST SENSE. Successfully tested with my Mac.
* EnableInterface should not always return TRUE
* Updated Inquiry
* Updated LUN handling
* Replaced incorrect free by delete
* Updated comments and write-protection handling
* Made default HD name consistent
* STATUS_NOERROR is default
* Fixed Eject
* More eject handling updates
* Manpage updates
* Logging update
* Changed debug level
* Logging update
* Log capacity of all media types
* Logging update
* Encapsulated disk.blocks
* Encapsulated sector size
* Added overrides
* Added more overrides
* Fixed error message
* Fixed typos
* Fixed logging
* Added logging
* Use PrimaryDevice when calling Inquiry
* Comment update
* Changed default buffer size for testing
* Reverted last change
* Removed debug output
* De-inlined methods because optimized code did not work with them inlined
* Web interface can attach Daynaport again
* Improved handling of read-only hard disks
* Fixed issue with "all" semantics of DETACH
* rasctl supports adding removable media devices without providing a filename
* Removed unused flag in PbDeviceDefinition
* Updated rasctl output for ecjected media (resolves issue #199)
* Validate default folder name when changing default folder
2021-08-21 21:45:30 +00:00
|
|
|
|
LOGTRACE("%s READ(6) command record=%d blocks=%d", __PRETTY_FUNCTION__, (unsigned int)record, (int)ctrl.blocks);
|
2020-08-28 14:18:02 +00:00
|
|
|
|
|
|
|
|
|
// Command processing on drive
|
2022-02-10 18:54:48 +00:00
|
|
|
|
ctrl.length = ((Disk *)ctrl.device)->Read(ctrl.cmd, ctrl.buffer, record);
|
Configurable block size, controller/device cleanup, dispatchers per device, bridge setup (#203)
* Use foreach
* Renaming
* Revert "Renaming"
This reverts commit b0554b9c0a052e282625a4565d429313af2b3cc7.
* Manpage updates
* Removed obsolete assertions
* Replaced QWORD by uint64_t and removed respective typedef
* Removed LPCSTR typedef
* Removed LPCTSTR typedef
* Removed LPTSTR typedef
* Renamed SCSI command interface classes
* Renamed xm6.h to rascsi.h
* Moved interface classes to new interfaces subfolder
* Added include
* Fixed compilation issues of 64 bit Ubuntu
* Renaming
* Sort block sizes
* protobuf interface description update
* Fixed handling for sector size for non-disk devices
* Fixed typo
* Fixed comment
* Translate code commends into English, removing redundant ones (#214)
* Comment update
* For other bridge interfaces than eth0 IP address and netmask can be provided
* Added special rule for testing on x86 PCs
* Translated code comments into English, removing some redundant ones in the process, plus fixing typos (#215)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* Comment update
* Removed unused typedefs
* Added special rule for testing on x86 PCs
* Comment update
* Comment update
* Updated capacity calculation
* Updated protobuf interface to signal parameter support
* Simplified protobuf interface
* Updated rasctl server info output
* Updated logging
* protobuf interface has to return block only if it is configurable
* Updated block size handling
* Improved error message if ID is already in use
* Removed typedef
* Renamed protobuf interface method
* Renaming
* Use protobuf::Messsge instead of protobuf::MessageLite
* default_image_folder cannot be an empty string, removed obsolete check
* Logging update
* Made some error messages more concise
* Removed magic constant
* Updated error message
* Comment update
* Names of removable media drives must be constant and not contain the capacity
* Improved DeviceFactory error handling
* More error handing improvements
* Interface comment update
* Pass interface list to ctapdriver when creating bridge
* Moved initialization code
* Updated rasctl server information output
* Improved handling of MO capacities
* Renaming
* Comment update
* Reject inserting a medium when there is already a medium present (eject first)
* Save list of files in use before dry-run
* Updated rasctl server info message
* Comment update
* Fixed typo
* Cleaned list handling
* Sort devices list by ID *and unit*
* Improved block size check
* Fixed issue with missing method in old Raspberry Pi OS protobuf implementation
* Updated error message
* Improve and fix bugs with saving&loading configuration files for rascsi-web (#218)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Removed unused structures, code and type cleanup
* Use unscoped enums for commands
* SASI Format opcode is 0x06, not 0x04 (see comment in code)
* Removed duplicate command
* Code review, data type updates
* Data type updated, use #pragma once
* Logging update
* Renaming
* Renaming
* Removed duplicate code
* Renaming
* Refactoring
* Removed TODO
* Updated logging
* Comment update
* Comment update
* Updated GetEventStatusNotification
* Removed goto
* Options -h and -v do not require to be the root user (fixes issue #166)
* Updated error messages and exception handling
* Added number of supported LUNs to protobuf interface
* Updated list handling of protobuf interface
* Comment update
* Improved error handling
* Added missing return statement
* Allow empty device list
* Fixed unnecessary detach_all() when config file isn't read (#221)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Protecting/unprotecing a non-ready medium is considered not possible
* Updated error message
* Extract detaching all devices, add parameter list support
* Comment update
* Fixed typos
* Restore files in use if dry-run fails
* Feature configurable reserved id for rascsi-web (#223)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make the reserved SCSI id configurable through an argument to start.sh; make the rascsi-web service reserve 7 by default to maintain current behavior.
* Make it possible to reserve multiple scsi ids in the web ui
* Added support for reserved IDs
* rasctl output update
* Re-ordered logging
* Logging update
* Make use of the newly introduced 'rasctl -r' to have the webui reserve ids on the backend side upon startup (#224)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Updated string to integer conversions
* Improved string to integer conversion
* Move string to integer conversion to rasutil
* Removed unused variable
* Fixed detach, which did not remove the filename from the filenames set
* Re-added folder to gitignore
* Set/Display patch version
* Fix issue where reserved ids were not reserved again when restarting rascsi-service from within the web ui (#226)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Make sure reserved SCSI IDs gets reserved again when restarting rascsi-service from within the web ui
* Updated interface comment
* Accept daynaport as legacy type
* Fixed typo
* Remove file from the list of files in use when ejected with a SCSI command
* Check for attached device for INSERT, EJECT, PROTECT, UNPROTECT
* Fixed error handling
* Fixed filepath handling
* Added more device shortcuts to rasctl
* Fixed function declaration
* Extraced ATTACH and DETACH
* Extracted INSERT
* Simplified ProcessCmd
* Comment update
* Fixed memory leak
* Log information on whether a new device is protected or read-only
* Updated errro message
* Updated error message
* Initialize private fields
* Updated rasctl help message
* Added DEVICE_INFO to protobuf interface
* Improved error handling
* DEVICE_INFO supports device list
* Updated server info handling
* Unified result handling with oneof, all commands now return PbResult
* A result can always return a message string
* Fixed typo
* Simplified sending of commands
* Improved error handling
* Removed unused code
* Updated error handling
* Code cleanup
* Comment update
* Updated logging
* Updated error handling
* Updated handling of removed status for devices without image file support
* Comment update
* Fixed typo
* Updated logging
* Updated parameter handling
* Updated setting default interfaces
* Revert "Updated setting default interfaces"
This reverts commit 210abc775d9a79dd0c631cf3877966a2923f4d5b.
* Revert "Updated parameter handling"
This reverts commit 35302addd59f5f5e1cc032888ba32dcbb426a846.
* rascsi supports reserving IDs
* Updated help message
* Replaced BOOL by bool
* Logging update
* Logging update
* Added default parameters to device properties
* Return parameters a device was set up with
* Improved device initialization
* Updated default parameter handling
* Updated default parameter handling
* Fixed typo
* Comment updates
* Comment update
* Manage default parameters in the respective device
* Do not pass empty parameter string
* Added supports_params flag
* Made comparisons more consistent
* Updated error handling
* Updated exception handling
* Renaming
* Comment update
* NEC sectors size must be 512 bytes
* Updated logging
* Updated vendor name handling
* Updated handling of media loading/unloading
* Added stoppable property and stopped status
* Made MO stoppable
* Removed duplicate code
* Removed duplicate code
* Copy read-only property
* Renaming
* Removed duplicate code, added START/STOP
* Improved default parameter handling
* Updated load/eject handling
* Logging update
* Fixed typo
* Verified START/STOP UNIT
* Updated logging
* Updated status handling
* Updated status handling
* More status handling updates
* Logging update
* Made instance fields local variables
* Made disk_t private
* Made some data structures private
* Fixed ARM compile issue
* Fixed ctapdriver initialization issue
* Reset read-only status when opening an image file
* Made logging more consistent
* Updated log level
* Log load/eject on error level for testing
* Revert "Log load/eject on error level for testing"
This reverts commit d35a15ea8e520517d25e1e1054ad1aeda9f85f2e.
* Assume drive is not ready after having been stopped
* Updated status handling
* Fixed typo
* Rebuild manpage
* Fixed issue #234 (MODE SENSE (10) returns wrong mode parameter header)
* Removed unused code
* Enum data type update
* Removed duplicate range check
* Removed duplicate code
* Removed more duplicate code
* Logging update
* SCCD sector size was not meant to be configurable
* Updated configurable sector size properties
* Removed assertion
* Improved error handling
* Updated error handling
* Re-added special error handling only relevant for SASI
* Added TODOs
* Comment update
* Added override modifier
* Removed obsolete debug flag (related code was not called)
* Comment and logging updates
* Removed obsolete try/catch
* Revert "Removed obsolete try/catch"
This reverts commit 39ca12d8b153c706316ce79f4fec65c9abc60024.
* Comment update
* Removed duplicate code
* Updated error messages, use more foreach loops
* Updated logging
* Logging update
* README update
* Added block_count
* Evaluate block size when inserting a media
* rasctl display capacity if available
* Info message update
* Added missing product name to NEC vital product data
* MO block size depends on capacity only
* Extended property/status display
* Property display update
* Updated error handling
* (Doc only changes) Fix typos and add clarification that SASI is used on Unix workstations
Co-authored-by: Daniel Markstedt <markstedt@gmail.com>
Co-authored-by: Tony Kuker <akuker@gmail.com>
2021-09-15 01:23:04 +00:00
|
|
|
|
if (ctrl.length <= 0) {
|
2020-08-28 14:18:02 +00:00
|
|
|
|
// Failure (Error)
|
|
|
|
|
Error();
|
|
|
|
|
return;
|
|
|
|
|
}
|
2021-02-07 19:00:48 +00:00
|
|
|
|
|
2020-08-28 14:18:02 +00:00
|
|
|
|
// Set next block
|
|
|
|
|
ctrl.next = record + 1;
|
|
|
|
|
|
|
|
|
|
// Read phase
|
|
|
|
|
DataIn();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
//
|
|
|
|
|
// WRITE(6)
|
|
|
|
|
//
|
|
|
|
|
//---------------------------------------------------------------------------
|
2021-07-26 18:33:36 +00:00
|
|
|
|
void SASIDEV::CmdWrite6()
|
2020-08-28 14:18:02 +00:00
|
|
|
|
{
|
|
|
|
|
// Get record number and block number
|
2021-07-07 21:46:45 +00:00
|
|
|
|
DWORD record = ctrl.cmd[1] & 0x1f;
|
2020-08-28 14:18:02 +00:00
|
|
|
|
record <<= 8;
|
|
|
|
|
record |= ctrl.cmd[2];
|
|
|
|
|
record <<= 8;
|
|
|
|
|
record |= ctrl.cmd[3];
|
|
|
|
|
ctrl.blocks = ctrl.cmd[4];
|
|
|
|
|
if (ctrl.blocks == 0) {
|
|
|
|
|
ctrl.blocks = 0x100;
|
|
|
|
|
}
|
|
|
|
|
|
Refactoring, device handling extensions, additional settings, improved error handling, 64 bit OS support, fixed issues (#184)
* Device type unification, support of removable media
* Added support for .hdr extension
* Removable flag cleanup
* Manpage update
* Enriched PbOperation with PbDevice
* Added file size to PbImageFile
* Added device list support
* Set image_file
* Make remote interface more robust by ignoring SIGPIPE
* Return status only once
* Fixed typo
* Error handling update
* When starting rascsi parse everything before attaching devices
* Added dry run mode
* Comment update
* Updated logging
* Added Device base class, Disk class inherits from it
* Renaming
* Use vectors for controllers and disks, as preparation for using maps
* Updated file support handling
* Comment update
* DaynaPort and Bridge inherit from Device instead of Disk
* ProcessCmd() now works with devices instead of disks
* Renaming
* Added DeviceFactory
* Improved factory
* Comment update
* protected disk_t
* Code cleanup, added translations
* Device name can be set for rascsi
* rasctl can set device name
* Manpage update
* Manpage update
* Formatting update
* Check for missing name
* Initialize fd
* Initialize type
* Fixed string length issue
* Updated capacity formatting
* Fixed typo
* Split PbDevice into device and device definition
* Added TODO
* Renaming
* Renaming
* Device types can be explicitly specified with -t (no FILE:TYPE syntax anymore)
* Fixed compile-time issue
* Removed unused Append mode, updated read-only handling
* Type handling and manpage update
* Cleanup
* rasctl parser cleanup
* Review
* Constructor update
* Added .hdr (SCRM) support to web interface, tested web interface
* Default folder can be set remotely
* Removed deprecated operation
* DETACH supports all parameters in order to detach all devices
* include cleanup
* Logging should not depend on NDEBUG, for RaSCSI it is not peformance-critical
* INFO is default log level
* Exception renaming
* Updated GetPaddedName()
* Inheritance update
* Added BlockDevice class
* Removed unused code
* Updated typedefs
* Revert "Updated typedefs"
This reverts commit 546b46215a4d9b65067a11698e59ab1123cc6d64.
* Removed unused code
* Fixed warnign
* Use standard C++ integer types, use streams to resolve printf data type issues
* Added TODOs
* Added TODO
* Renaming
* Added TODO
* Added TODO
* Improved dry-run
* Code cleanup
* Updated handling of unknown options, code review and cleanup
* Manpage update
* Added PrimaryDevice
* Include cleanup
* Added pure virtual methods
* Comment updates
* Split rasutil
* Replaced some occurrences of BOOL
* Removed obsolete RASCSI definition in xm6.h
* Removed unused code, updated TODOs, replaced BOOL
* Added capacity check (issue #192)
* Fixed (most likely) https://github.com/akuker/RASCSI/issues/191
* Fixed wrong error messages
* For root the default image folder is /home/pi/images, updated error handling
* Dynaport code review
* Improved error handling
* Implemented READ CAPACITY(16)
* Comment update
* Commands can be 16 bytes long
* Implemented READ/WRITE/VERIFY(16)
* Comment update
* Renamed method to reflect the name of the respective SCSI command
* Do not created devices during dryRun
* Fixed padding of SCSIHD_APPLE vendor and product
* Initial implementation
* Updated ReportLuns
* Byte count update
* Fixed typo
* Finalized REPORT LUNS
* Removed TODO
* Updated TODO
* TODO update
* Updated device factory
* Comment update
* 64 bit update, tested on Ubuntu 64 bit system
* Removed assertion
* SCSI hard disks always have Apple specific mode pages (resolves issue #193)
* Error messsage update, 64 bit cleanup
* Reduced streams usage
* Updated handling of device flags
* MOs are protectable
* Removed duplicate error code handling
* Removed duplicate code
* Fixed CmdReadToc buffer overflow (https://github.com/akuker/RASCSI/issues/194)
* Added naive implementation of GET EVENT STATUS NOTIFICATION to avoid wranings
* HD must set removable device bit if the media is removable
* Removed duplicate logging
* Updated daynaport additional length
* Removed broken daynaport REQUEST SENSE. Successfully tested with my Mac.
* EnableInterface should not always return TRUE
* Updated Inquiry
* Updated LUN handling
* Replaced incorrect free by delete
* Updated comments and write-protection handling
* Made default HD name consistent
* STATUS_NOERROR is default
* Fixed Eject
* More eject handling updates
* Manpage updates
* Logging update
* Changed debug level
* Logging update
* Log capacity of all media types
* Logging update
* Encapsulated disk.blocks
* Encapsulated sector size
* Added overrides
* Added more overrides
* Fixed error message
* Fixed typos
* Fixed logging
* Added logging
* Use PrimaryDevice when calling Inquiry
* Comment update
* Changed default buffer size for testing
* Reverted last change
* Removed debug output
* De-inlined methods because optimized code did not work with them inlined
* Web interface can attach Daynaport again
* Improved handling of read-only hard disks
* Fixed issue with "all" semantics of DETACH
* rasctl supports adding removable media devices without providing a filename
* Removed unused flag in PbDeviceDefinition
* Updated rasctl output for ecjected media (resolves issue #199)
* Validate default folder name when changing default folder
2021-08-21 21:45:30 +00:00
|
|
|
|
LOGTRACE("%s WRITE(6) command record=%d blocks=%d", __PRETTY_FUNCTION__, (WORD)record, (WORD)ctrl.blocks);
|
2020-08-28 14:18:02 +00:00
|
|
|
|
|
|
|
|
|
// Command processing on drive
|
2022-02-10 18:54:48 +00:00
|
|
|
|
ctrl.length = ((Disk *)ctrl.device)->WriteCheck(record);
|
2020-08-28 14:18:02 +00:00
|
|
|
|
if (ctrl.length <= 0) {
|
|
|
|
|
// Failure (Error)
|
Configurable block size, controller/device cleanup, dispatchers per device, bridge setup (#203)
* Use foreach
* Renaming
* Revert "Renaming"
This reverts commit b0554b9c0a052e282625a4565d429313af2b3cc7.
* Manpage updates
* Removed obsolete assertions
* Replaced QWORD by uint64_t and removed respective typedef
* Removed LPCSTR typedef
* Removed LPCTSTR typedef
* Removed LPTSTR typedef
* Renamed SCSI command interface classes
* Renamed xm6.h to rascsi.h
* Moved interface classes to new interfaces subfolder
* Added include
* Fixed compilation issues of 64 bit Ubuntu
* Renaming
* Sort block sizes
* protobuf interface description update
* Fixed handling for sector size for non-disk devices
* Fixed typo
* Fixed comment
* Translate code commends into English, removing redundant ones (#214)
* Comment update
* For other bridge interfaces than eth0 IP address and netmask can be provided
* Added special rule for testing on x86 PCs
* Translated code comments into English, removing some redundant ones in the process, plus fixing typos (#215)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* Comment update
* Removed unused typedefs
* Added special rule for testing on x86 PCs
* Comment update
* Comment update
* Updated capacity calculation
* Updated protobuf interface to signal parameter support
* Simplified protobuf interface
* Updated rasctl server info output
* Updated logging
* protobuf interface has to return block only if it is configurable
* Updated block size handling
* Improved error message if ID is already in use
* Removed typedef
* Renamed protobuf interface method
* Renaming
* Use protobuf::Messsge instead of protobuf::MessageLite
* default_image_folder cannot be an empty string, removed obsolete check
* Logging update
* Made some error messages more concise
* Removed magic constant
* Updated error message
* Comment update
* Names of removable media drives must be constant and not contain the capacity
* Improved DeviceFactory error handling
* More error handing improvements
* Interface comment update
* Pass interface list to ctapdriver when creating bridge
* Moved initialization code
* Updated rasctl server information output
* Improved handling of MO capacities
* Renaming
* Comment update
* Reject inserting a medium when there is already a medium present (eject first)
* Save list of files in use before dry-run
* Updated rasctl server info message
* Comment update
* Fixed typo
* Cleaned list handling
* Sort devices list by ID *and unit*
* Improved block size check
* Fixed issue with missing method in old Raspberry Pi OS protobuf implementation
* Updated error message
* Improve and fix bugs with saving&loading configuration files for rascsi-web (#218)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Removed unused structures, code and type cleanup
* Use unscoped enums for commands
* SASI Format opcode is 0x06, not 0x04 (see comment in code)
* Removed duplicate command
* Code review, data type updates
* Data type updated, use #pragma once
* Logging update
* Renaming
* Renaming
* Removed duplicate code
* Renaming
* Refactoring
* Removed TODO
* Updated logging
* Comment update
* Comment update
* Updated GetEventStatusNotification
* Removed goto
* Options -h and -v do not require to be the root user (fixes issue #166)
* Updated error messages and exception handling
* Added number of supported LUNs to protobuf interface
* Updated list handling of protobuf interface
* Comment update
* Improved error handling
* Added missing return statement
* Allow empty device list
* Fixed unnecessary detach_all() when config file isn't read (#221)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Protecting/unprotecing a non-ready medium is considered not possible
* Updated error message
* Extract detaching all devices, add parameter list support
* Comment update
* Fixed typos
* Restore files in use if dry-run fails
* Feature configurable reserved id for rascsi-web (#223)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make the reserved SCSI id configurable through an argument to start.sh; make the rascsi-web service reserve 7 by default to maintain current behavior.
* Make it possible to reserve multiple scsi ids in the web ui
* Added support for reserved IDs
* rasctl output update
* Re-ordered logging
* Logging update
* Make use of the newly introduced 'rasctl -r' to have the webui reserve ids on the backend side upon startup (#224)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Updated string to integer conversions
* Improved string to integer conversion
* Move string to integer conversion to rasutil
* Removed unused variable
* Fixed detach, which did not remove the filename from the filenames set
* Re-added folder to gitignore
* Set/Display patch version
* Fix issue where reserved ids were not reserved again when restarting rascsi-service from within the web ui (#226)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Make sure reserved SCSI IDs gets reserved again when restarting rascsi-service from within the web ui
* Updated interface comment
* Accept daynaport as legacy type
* Fixed typo
* Remove file from the list of files in use when ejected with a SCSI command
* Check for attached device for INSERT, EJECT, PROTECT, UNPROTECT
* Fixed error handling
* Fixed filepath handling
* Added more device shortcuts to rasctl
* Fixed function declaration
* Extraced ATTACH and DETACH
* Extracted INSERT
* Simplified ProcessCmd
* Comment update
* Fixed memory leak
* Log information on whether a new device is protected or read-only
* Updated errro message
* Updated error message
* Initialize private fields
* Updated rasctl help message
* Added DEVICE_INFO to protobuf interface
* Improved error handling
* DEVICE_INFO supports device list
* Updated server info handling
* Unified result handling with oneof, all commands now return PbResult
* A result can always return a message string
* Fixed typo
* Simplified sending of commands
* Improved error handling
* Removed unused code
* Updated error handling
* Code cleanup
* Comment update
* Updated logging
* Updated error handling
* Updated handling of removed status for devices without image file support
* Comment update
* Fixed typo
* Updated logging
* Updated parameter handling
* Updated setting default interfaces
* Revert "Updated setting default interfaces"
This reverts commit 210abc775d9a79dd0c631cf3877966a2923f4d5b.
* Revert "Updated parameter handling"
This reverts commit 35302addd59f5f5e1cc032888ba32dcbb426a846.
* rascsi supports reserving IDs
* Updated help message
* Replaced BOOL by bool
* Logging update
* Logging update
* Added default parameters to device properties
* Return parameters a device was set up with
* Improved device initialization
* Updated default parameter handling
* Updated default parameter handling
* Fixed typo
* Comment updates
* Comment update
* Manage default parameters in the respective device
* Do not pass empty parameter string
* Added supports_params flag
* Made comparisons more consistent
* Updated error handling
* Updated exception handling
* Renaming
* Comment update
* NEC sectors size must be 512 bytes
* Updated logging
* Updated vendor name handling
* Updated handling of media loading/unloading
* Added stoppable property and stopped status
* Made MO stoppable
* Removed duplicate code
* Removed duplicate code
* Copy read-only property
* Renaming
* Removed duplicate code, added START/STOP
* Improved default parameter handling
* Updated load/eject handling
* Logging update
* Fixed typo
* Verified START/STOP UNIT
* Updated logging
* Updated status handling
* Updated status handling
* More status handling updates
* Logging update
* Made instance fields local variables
* Made disk_t private
* Made some data structures private
* Fixed ARM compile issue
* Fixed ctapdriver initialization issue
* Reset read-only status when opening an image file
* Made logging more consistent
* Updated log level
* Log load/eject on error level for testing
* Revert "Log load/eject on error level for testing"
This reverts commit d35a15ea8e520517d25e1e1054ad1aeda9f85f2e.
* Assume drive is not ready after having been stopped
* Updated status handling
* Fixed typo
* Rebuild manpage
* Fixed issue #234 (MODE SENSE (10) returns wrong mode parameter header)
* Removed unused code
* Enum data type update
* Removed duplicate range check
* Removed duplicate code
* Removed more duplicate code
* Logging update
* SCCD sector size was not meant to be configurable
* Updated configurable sector size properties
* Removed assertion
* Improved error handling
* Updated error handling
* Re-added special error handling only relevant for SASI
* Added TODOs
* Comment update
* Added override modifier
* Removed obsolete debug flag (related code was not called)
* Comment and logging updates
* Removed obsolete try/catch
* Revert "Removed obsolete try/catch"
This reverts commit 39ca12d8b153c706316ce79f4fec65c9abc60024.
* Comment update
* Removed duplicate code
* Updated error messages, use more foreach loops
* Updated logging
* Logging update
* README update
* Added block_count
* Evaluate block size when inserting a media
* rasctl display capacity if available
* Info message update
* Added missing product name to NEC vital product data
* MO block size depends on capacity only
* Extended property/status display
* Property display update
* Updated error handling
* (Doc only changes) Fix typos and add clarification that SASI is used on Unix workstations
Co-authored-by: Daniel Markstedt <markstedt@gmail.com>
Co-authored-by: Tony Kuker <akuker@gmail.com>
2021-09-15 01:23:04 +00:00
|
|
|
|
Error();
|
2020-08-28 14:18:02 +00:00
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Set next block
|
|
|
|
|
ctrl.next = record + 1;
|
|
|
|
|
|
|
|
|
|
// Write phase
|
|
|
|
|
DataOut();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
//
|
|
|
|
|
// SEEK(6)
|
|
|
|
|
//
|
|
|
|
|
//---------------------------------------------------------------------------
|
2021-07-26 18:33:36 +00:00
|
|
|
|
void SASIDEV::CmdSeek6()
|
2020-08-28 14:18:02 +00:00
|
|
|
|
{
|
2021-02-07 19:00:48 +00:00
|
|
|
|
LOGTRACE("%s SEEK(6) Command ", __PRETTY_FUNCTION__);
|
2020-08-28 14:18:02 +00:00
|
|
|
|
|
|
|
|
|
// Command processing on drive
|
2022-02-10 18:54:48 +00:00
|
|
|
|
((Disk *)ctrl.device)->Seek6(this);
|
2020-08-28 14:18:02 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
//
|
|
|
|
|
// ASSIGN
|
|
|
|
|
//
|
|
|
|
|
//---------------------------------------------------------------------------
|
2021-07-26 18:33:36 +00:00
|
|
|
|
void SASIDEV::CmdAssign()
|
2020-08-28 14:18:02 +00:00
|
|
|
|
{
|
2021-02-07 19:00:48 +00:00
|
|
|
|
LOGTRACE("%s ASSIGN Command ", __PRETTY_FUNCTION__);
|
2020-08-28 14:18:02 +00:00
|
|
|
|
|
|
|
|
|
// Command processing on drive
|
2022-02-10 18:54:48 +00:00
|
|
|
|
bool status = ((Disk *)ctrl.device)->CheckReady();
|
2020-08-28 14:18:02 +00:00
|
|
|
|
if (!status) {
|
|
|
|
|
// Failure (Error)
|
|
|
|
|
Error();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Request 4 bytes of data
|
|
|
|
|
ctrl.length = 4;
|
|
|
|
|
|
|
|
|
|
// Write phase
|
|
|
|
|
DataOut();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
//
|
|
|
|
|
// SPECIFY
|
|
|
|
|
//
|
|
|
|
|
//---------------------------------------------------------------------------
|
2021-07-26 18:33:36 +00:00
|
|
|
|
void SASIDEV::CmdSpecify()
|
2020-08-28 14:18:02 +00:00
|
|
|
|
{
|
2021-02-07 19:00:48 +00:00
|
|
|
|
LOGTRACE("%s SPECIFY Command ", __PRETTY_FUNCTION__);
|
2020-08-28 14:18:02 +00:00
|
|
|
|
|
|
|
|
|
// Command processing on drive
|
2022-02-10 18:54:48 +00:00
|
|
|
|
bool status = ((Disk *)ctrl.device)->CheckReady();
|
2020-08-28 14:18:02 +00:00
|
|
|
|
if (!status) {
|
|
|
|
|
// Failure (Error)
|
|
|
|
|
Error();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Request 10 bytes of data
|
|
|
|
|
ctrl.length = 10;
|
|
|
|
|
|
|
|
|
|
// Write phase
|
|
|
|
|
DataOut();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//===========================================================================
|
|
|
|
|
//
|
|
|
|
|
// Data transfer
|
|
|
|
|
//
|
|
|
|
|
//===========================================================================
|
|
|
|
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
//
|
|
|
|
|
// Data transmission
|
|
|
|
|
//
|
|
|
|
|
//---------------------------------------------------------------------------
|
2021-07-26 18:33:36 +00:00
|
|
|
|
void SASIDEV::Send()
|
2020-08-28 14:18:02 +00:00
|
|
|
|
{
|
|
|
|
|
ASSERT(!ctrl.bus->GetREQ());
|
|
|
|
|
ASSERT(ctrl.bus->GetIO());
|
|
|
|
|
|
|
|
|
|
// Check that the length isn't 0
|
|
|
|
|
if (ctrl.length != 0) {
|
Configurable block size, controller/device cleanup, dispatchers per device, bridge setup (#203)
* Use foreach
* Renaming
* Revert "Renaming"
This reverts commit b0554b9c0a052e282625a4565d429313af2b3cc7.
* Manpage updates
* Removed obsolete assertions
* Replaced QWORD by uint64_t and removed respective typedef
* Removed LPCSTR typedef
* Removed LPCTSTR typedef
* Removed LPTSTR typedef
* Renamed SCSI command interface classes
* Renamed xm6.h to rascsi.h
* Moved interface classes to new interfaces subfolder
* Added include
* Fixed compilation issues of 64 bit Ubuntu
* Renaming
* Sort block sizes
* protobuf interface description update
* Fixed handling for sector size for non-disk devices
* Fixed typo
* Fixed comment
* Translate code commends into English, removing redundant ones (#214)
* Comment update
* For other bridge interfaces than eth0 IP address and netmask can be provided
* Added special rule for testing on x86 PCs
* Translated code comments into English, removing some redundant ones in the process, plus fixing typos (#215)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* Comment update
* Removed unused typedefs
* Added special rule for testing on x86 PCs
* Comment update
* Comment update
* Updated capacity calculation
* Updated protobuf interface to signal parameter support
* Simplified protobuf interface
* Updated rasctl server info output
* Updated logging
* protobuf interface has to return block only if it is configurable
* Updated block size handling
* Improved error message if ID is already in use
* Removed typedef
* Renamed protobuf interface method
* Renaming
* Use protobuf::Messsge instead of protobuf::MessageLite
* default_image_folder cannot be an empty string, removed obsolete check
* Logging update
* Made some error messages more concise
* Removed magic constant
* Updated error message
* Comment update
* Names of removable media drives must be constant and not contain the capacity
* Improved DeviceFactory error handling
* More error handing improvements
* Interface comment update
* Pass interface list to ctapdriver when creating bridge
* Moved initialization code
* Updated rasctl server information output
* Improved handling of MO capacities
* Renaming
* Comment update
* Reject inserting a medium when there is already a medium present (eject first)
* Save list of files in use before dry-run
* Updated rasctl server info message
* Comment update
* Fixed typo
* Cleaned list handling
* Sort devices list by ID *and unit*
* Improved block size check
* Fixed issue with missing method in old Raspberry Pi OS protobuf implementation
* Updated error message
* Improve and fix bugs with saving&loading configuration files for rascsi-web (#218)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Removed unused structures, code and type cleanup
* Use unscoped enums for commands
* SASI Format opcode is 0x06, not 0x04 (see comment in code)
* Removed duplicate command
* Code review, data type updates
* Data type updated, use #pragma once
* Logging update
* Renaming
* Renaming
* Removed duplicate code
* Renaming
* Refactoring
* Removed TODO
* Updated logging
* Comment update
* Comment update
* Updated GetEventStatusNotification
* Removed goto
* Options -h and -v do not require to be the root user (fixes issue #166)
* Updated error messages and exception handling
* Added number of supported LUNs to protobuf interface
* Updated list handling of protobuf interface
* Comment update
* Improved error handling
* Added missing return statement
* Allow empty device list
* Fixed unnecessary detach_all() when config file isn't read (#221)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Protecting/unprotecing a non-ready medium is considered not possible
* Updated error message
* Extract detaching all devices, add parameter list support
* Comment update
* Fixed typos
* Restore files in use if dry-run fails
* Feature configurable reserved id for rascsi-web (#223)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make the reserved SCSI id configurable through an argument to start.sh; make the rascsi-web service reserve 7 by default to maintain current behavior.
* Make it possible to reserve multiple scsi ids in the web ui
* Added support for reserved IDs
* rasctl output update
* Re-ordered logging
* Logging update
* Make use of the newly introduced 'rasctl -r' to have the webui reserve ids on the backend side upon startup (#224)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Updated string to integer conversions
* Improved string to integer conversion
* Move string to integer conversion to rasutil
* Removed unused variable
* Fixed detach, which did not remove the filename from the filenames set
* Re-added folder to gitignore
* Set/Display patch version
* Fix issue where reserved ids were not reserved again when restarting rascsi-service from within the web ui (#226)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Make sure reserved SCSI IDs gets reserved again when restarting rascsi-service from within the web ui
* Updated interface comment
* Accept daynaport as legacy type
* Fixed typo
* Remove file from the list of files in use when ejected with a SCSI command
* Check for attached device for INSERT, EJECT, PROTECT, UNPROTECT
* Fixed error handling
* Fixed filepath handling
* Added more device shortcuts to rasctl
* Fixed function declaration
* Extraced ATTACH and DETACH
* Extracted INSERT
* Simplified ProcessCmd
* Comment update
* Fixed memory leak
* Log information on whether a new device is protected or read-only
* Updated errro message
* Updated error message
* Initialize private fields
* Updated rasctl help message
* Added DEVICE_INFO to protobuf interface
* Improved error handling
* DEVICE_INFO supports device list
* Updated server info handling
* Unified result handling with oneof, all commands now return PbResult
* A result can always return a message string
* Fixed typo
* Simplified sending of commands
* Improved error handling
* Removed unused code
* Updated error handling
* Code cleanup
* Comment update
* Updated logging
* Updated error handling
* Updated handling of removed status for devices without image file support
* Comment update
* Fixed typo
* Updated logging
* Updated parameter handling
* Updated setting default interfaces
* Revert "Updated setting default interfaces"
This reverts commit 210abc775d9a79dd0c631cf3877966a2923f4d5b.
* Revert "Updated parameter handling"
This reverts commit 35302addd59f5f5e1cc032888ba32dcbb426a846.
* rascsi supports reserving IDs
* Updated help message
* Replaced BOOL by bool
* Logging update
* Logging update
* Added default parameters to device properties
* Return parameters a device was set up with
* Improved device initialization
* Updated default parameter handling
* Updated default parameter handling
* Fixed typo
* Comment updates
* Comment update
* Manage default parameters in the respective device
* Do not pass empty parameter string
* Added supports_params flag
* Made comparisons more consistent
* Updated error handling
* Updated exception handling
* Renaming
* Comment update
* NEC sectors size must be 512 bytes
* Updated logging
* Updated vendor name handling
* Updated handling of media loading/unloading
* Added stoppable property and stopped status
* Made MO stoppable
* Removed duplicate code
* Removed duplicate code
* Copy read-only property
* Renaming
* Removed duplicate code, added START/STOP
* Improved default parameter handling
* Updated load/eject handling
* Logging update
* Fixed typo
* Verified START/STOP UNIT
* Updated logging
* Updated status handling
* Updated status handling
* More status handling updates
* Logging update
* Made instance fields local variables
* Made disk_t private
* Made some data structures private
* Fixed ARM compile issue
* Fixed ctapdriver initialization issue
* Reset read-only status when opening an image file
* Made logging more consistent
* Updated log level
* Log load/eject on error level for testing
* Revert "Log load/eject on error level for testing"
This reverts commit d35a15ea8e520517d25e1e1054ad1aeda9f85f2e.
* Assume drive is not ready after having been stopped
* Updated status handling
* Fixed typo
* Rebuild manpage
* Fixed issue #234 (MODE SENSE (10) returns wrong mode parameter header)
* Removed unused code
* Enum data type update
* Removed duplicate range check
* Removed duplicate code
* Removed more duplicate code
* Logging update
* SCCD sector size was not meant to be configurable
* Updated configurable sector size properties
* Removed assertion
* Improved error handling
* Updated error handling
* Re-added special error handling only relevant for SASI
* Added TODOs
* Comment update
* Added override modifier
* Removed obsolete debug flag (related code was not called)
* Comment and logging updates
* Removed obsolete try/catch
* Revert "Removed obsolete try/catch"
This reverts commit 39ca12d8b153c706316ce79f4fec65c9abc60024.
* Comment update
* Removed duplicate code
* Updated error messages, use more foreach loops
* Updated logging
* Logging update
* README update
* Added block_count
* Evaluate block size when inserting a media
* rasctl display capacity if available
* Info message update
* Added missing product name to NEC vital product data
* MO block size depends on capacity only
* Extended property/status display
* Property display update
* Updated error handling
* (Doc only changes) Fix typos and add clarification that SASI is used on Unix workstations
Co-authored-by: Daniel Markstedt <markstedt@gmail.com>
Co-authored-by: Tony Kuker <akuker@gmail.com>
2021-09-15 01:23:04 +00:00
|
|
|
|
int len = ctrl.bus->SendHandShake(
|
2021-04-05 19:17:05 +00:00
|
|
|
|
&ctrl.buffer[ctrl.offset], ctrl.length, BUS::SEND_NO_DELAY);
|
2020-08-28 14:18:02 +00:00
|
|
|
|
|
|
|
|
|
// If you can not send it all, move on to the status phase
|
|
|
|
|
if (len != (int)ctrl.length) {
|
2021-02-07 19:00:48 +00:00
|
|
|
|
LOGERROR("%s ctrl.length (%d) did not match the amount of data sent (%d)",__PRETTY_FUNCTION__, (int)ctrl.length, len);
|
2020-08-28 14:18:02 +00:00
|
|
|
|
Error();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Offset and Length
|
|
|
|
|
ctrl.offset += ctrl.length;
|
|
|
|
|
ctrl.length = 0;
|
|
|
|
|
return;
|
|
|
|
|
}
|
2021-02-07 19:00:48 +00:00
|
|
|
|
else{
|
|
|
|
|
LOGINFO("%s ctrl.length was 0", __PRETTY_FUNCTION__);
|
2020-08-28 14:18:02 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Remove block and initialize the result
|
|
|
|
|
ctrl.blocks--;
|
Configurable block size, controller/device cleanup, dispatchers per device, bridge setup (#203)
* Use foreach
* Renaming
* Revert "Renaming"
This reverts commit b0554b9c0a052e282625a4565d429313af2b3cc7.
* Manpage updates
* Removed obsolete assertions
* Replaced QWORD by uint64_t and removed respective typedef
* Removed LPCSTR typedef
* Removed LPCTSTR typedef
* Removed LPTSTR typedef
* Renamed SCSI command interface classes
* Renamed xm6.h to rascsi.h
* Moved interface classes to new interfaces subfolder
* Added include
* Fixed compilation issues of 64 bit Ubuntu
* Renaming
* Sort block sizes
* protobuf interface description update
* Fixed handling for sector size for non-disk devices
* Fixed typo
* Fixed comment
* Translate code commends into English, removing redundant ones (#214)
* Comment update
* For other bridge interfaces than eth0 IP address and netmask can be provided
* Added special rule for testing on x86 PCs
* Translated code comments into English, removing some redundant ones in the process, plus fixing typos (#215)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* Comment update
* Removed unused typedefs
* Added special rule for testing on x86 PCs
* Comment update
* Comment update
* Updated capacity calculation
* Updated protobuf interface to signal parameter support
* Simplified protobuf interface
* Updated rasctl server info output
* Updated logging
* protobuf interface has to return block only if it is configurable
* Updated block size handling
* Improved error message if ID is already in use
* Removed typedef
* Renamed protobuf interface method
* Renaming
* Use protobuf::Messsge instead of protobuf::MessageLite
* default_image_folder cannot be an empty string, removed obsolete check
* Logging update
* Made some error messages more concise
* Removed magic constant
* Updated error message
* Comment update
* Names of removable media drives must be constant and not contain the capacity
* Improved DeviceFactory error handling
* More error handing improvements
* Interface comment update
* Pass interface list to ctapdriver when creating bridge
* Moved initialization code
* Updated rasctl server information output
* Improved handling of MO capacities
* Renaming
* Comment update
* Reject inserting a medium when there is already a medium present (eject first)
* Save list of files in use before dry-run
* Updated rasctl server info message
* Comment update
* Fixed typo
* Cleaned list handling
* Sort devices list by ID *and unit*
* Improved block size check
* Fixed issue with missing method in old Raspberry Pi OS protobuf implementation
* Updated error message
* Improve and fix bugs with saving&loading configuration files for rascsi-web (#218)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Removed unused structures, code and type cleanup
* Use unscoped enums for commands
* SASI Format opcode is 0x06, not 0x04 (see comment in code)
* Removed duplicate command
* Code review, data type updates
* Data type updated, use #pragma once
* Logging update
* Renaming
* Renaming
* Removed duplicate code
* Renaming
* Refactoring
* Removed TODO
* Updated logging
* Comment update
* Comment update
* Updated GetEventStatusNotification
* Removed goto
* Options -h and -v do not require to be the root user (fixes issue #166)
* Updated error messages and exception handling
* Added number of supported LUNs to protobuf interface
* Updated list handling of protobuf interface
* Comment update
* Improved error handling
* Added missing return statement
* Allow empty device list
* Fixed unnecessary detach_all() when config file isn't read (#221)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Protecting/unprotecing a non-ready medium is considered not possible
* Updated error message
* Extract detaching all devices, add parameter list support
* Comment update
* Fixed typos
* Restore files in use if dry-run fails
* Feature configurable reserved id for rascsi-web (#223)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make the reserved SCSI id configurable through an argument to start.sh; make the rascsi-web service reserve 7 by default to maintain current behavior.
* Make it possible to reserve multiple scsi ids in the web ui
* Added support for reserved IDs
* rasctl output update
* Re-ordered logging
* Logging update
* Make use of the newly introduced 'rasctl -r' to have the webui reserve ids on the backend side upon startup (#224)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Updated string to integer conversions
* Improved string to integer conversion
* Move string to integer conversion to rasutil
* Removed unused variable
* Fixed detach, which did not remove the filename from the filenames set
* Re-added folder to gitignore
* Set/Display patch version
* Fix issue where reserved ids were not reserved again when restarting rascsi-service from within the web ui (#226)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Make sure reserved SCSI IDs gets reserved again when restarting rascsi-service from within the web ui
* Updated interface comment
* Accept daynaport as legacy type
* Fixed typo
* Remove file from the list of files in use when ejected with a SCSI command
* Check for attached device for INSERT, EJECT, PROTECT, UNPROTECT
* Fixed error handling
* Fixed filepath handling
* Added more device shortcuts to rasctl
* Fixed function declaration
* Extraced ATTACH and DETACH
* Extracted INSERT
* Simplified ProcessCmd
* Comment update
* Fixed memory leak
* Log information on whether a new device is protected or read-only
* Updated errro message
* Updated error message
* Initialize private fields
* Updated rasctl help message
* Added DEVICE_INFO to protobuf interface
* Improved error handling
* DEVICE_INFO supports device list
* Updated server info handling
* Unified result handling with oneof, all commands now return PbResult
* A result can always return a message string
* Fixed typo
* Simplified sending of commands
* Improved error handling
* Removed unused code
* Updated error handling
* Code cleanup
* Comment update
* Updated logging
* Updated error handling
* Updated handling of removed status for devices without image file support
* Comment update
* Fixed typo
* Updated logging
* Updated parameter handling
* Updated setting default interfaces
* Revert "Updated setting default interfaces"
This reverts commit 210abc775d9a79dd0c631cf3877966a2923f4d5b.
* Revert "Updated parameter handling"
This reverts commit 35302addd59f5f5e1cc032888ba32dcbb426a846.
* rascsi supports reserving IDs
* Updated help message
* Replaced BOOL by bool
* Logging update
* Logging update
* Added default parameters to device properties
* Return parameters a device was set up with
* Improved device initialization
* Updated default parameter handling
* Updated default parameter handling
* Fixed typo
* Comment updates
* Comment update
* Manage default parameters in the respective device
* Do not pass empty parameter string
* Added supports_params flag
* Made comparisons more consistent
* Updated error handling
* Updated exception handling
* Renaming
* Comment update
* NEC sectors size must be 512 bytes
* Updated logging
* Updated vendor name handling
* Updated handling of media loading/unloading
* Added stoppable property and stopped status
* Made MO stoppable
* Removed duplicate code
* Removed duplicate code
* Copy read-only property
* Renaming
* Removed duplicate code, added START/STOP
* Improved default parameter handling
* Updated load/eject handling
* Logging update
* Fixed typo
* Verified START/STOP UNIT
* Updated logging
* Updated status handling
* Updated status handling
* More status handling updates
* Logging update
* Made instance fields local variables
* Made disk_t private
* Made some data structures private
* Fixed ARM compile issue
* Fixed ctapdriver initialization issue
* Reset read-only status when opening an image file
* Made logging more consistent
* Updated log level
* Log load/eject on error level for testing
* Revert "Log load/eject on error level for testing"
This reverts commit d35a15ea8e520517d25e1e1054ad1aeda9f85f2e.
* Assume drive is not ready after having been stopped
* Updated status handling
* Fixed typo
* Rebuild manpage
* Fixed issue #234 (MODE SENSE (10) returns wrong mode parameter header)
* Removed unused code
* Enum data type update
* Removed duplicate range check
* Removed duplicate code
* Removed more duplicate code
* Logging update
* SCCD sector size was not meant to be configurable
* Updated configurable sector size properties
* Removed assertion
* Improved error handling
* Updated error handling
* Re-added special error handling only relevant for SASI
* Added TODOs
* Comment update
* Added override modifier
* Removed obsolete debug flag (related code was not called)
* Comment and logging updates
* Removed obsolete try/catch
* Revert "Removed obsolete try/catch"
This reverts commit 39ca12d8b153c706316ce79f4fec65c9abc60024.
* Comment update
* Removed duplicate code
* Updated error messages, use more foreach loops
* Updated logging
* Logging update
* README update
* Added block_count
* Evaluate block size when inserting a media
* rasctl display capacity if available
* Info message update
* Added missing product name to NEC vital product data
* MO block size depends on capacity only
* Extended property/status display
* Property display update
* Updated error handling
* (Doc only changes) Fix typos and add clarification that SASI is used on Unix workstations
Co-authored-by: Daniel Markstedt <markstedt@gmail.com>
Co-authored-by: Tony Kuker <akuker@gmail.com>
2021-09-15 01:23:04 +00:00
|
|
|
|
bool result = true;
|
2020-08-28 14:18:02 +00:00
|
|
|
|
|
|
|
|
|
// Process after data collection (read/data-in only)
|
|
|
|
|
if (ctrl.phase == BUS::datain) {
|
|
|
|
|
if (ctrl.blocks != 0) {
|
|
|
|
|
// Set next buffer (set offset, length)
|
|
|
|
|
result = XferIn(ctrl.buffer);
|
2021-02-07 19:00:48 +00:00
|
|
|
|
LOGTRACE("%s xfer in: %d",__PRETTY_FUNCTION__, result);
|
|
|
|
|
LOGTRACE("%s processing after data collection", __PRETTY_FUNCTION__);
|
2020-08-28 14:18:02 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// If result FALSE, move to the status phase
|
|
|
|
|
if (!result) {
|
2021-02-07 19:00:48 +00:00
|
|
|
|
LOGERROR("%s Send result was false", __PRETTY_FUNCTION__);
|
2020-08-28 14:18:02 +00:00
|
|
|
|
Error();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Continue sending if block != 0
|
|
|
|
|
if (ctrl.blocks != 0){
|
|
|
|
|
ASSERT(ctrl.length > 0);
|
|
|
|
|
ASSERT(ctrl.offset == 0);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Move to the next phase
|
|
|
|
|
switch (ctrl.phase) {
|
|
|
|
|
// Message in phase
|
|
|
|
|
case BUS::msgin:
|
|
|
|
|
// Bus free phase
|
|
|
|
|
BusFree();
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
// Data-in Phase
|
|
|
|
|
case BUS::datain:
|
|
|
|
|
// status phase
|
|
|
|
|
Status();
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
// Status phase
|
|
|
|
|
case BUS::status:
|
|
|
|
|
// Message in phase
|
|
|
|
|
ctrl.length = 1;
|
|
|
|
|
ctrl.blocks = 1;
|
|
|
|
|
ctrl.buffer[0] = (BYTE)ctrl.message;
|
|
|
|
|
MsgIn();
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
// Other (impossible)
|
|
|
|
|
default:
|
|
|
|
|
ASSERT(FALSE);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
//
|
|
|
|
|
// Receive data
|
|
|
|
|
//
|
|
|
|
|
//---------------------------------------------------------------------------
|
2021-07-26 18:33:36 +00:00
|
|
|
|
void SASIDEV::Receive()
|
2020-08-28 14:18:02 +00:00
|
|
|
|
{
|
|
|
|
|
// REQ is low
|
|
|
|
|
ASSERT(!ctrl.bus->GetREQ());
|
|
|
|
|
ASSERT(!ctrl.bus->GetIO());
|
|
|
|
|
|
|
|
|
|
// Length != 0 if received
|
|
|
|
|
if (ctrl.length != 0) {
|
|
|
|
|
// Receive
|
Configurable block size, controller/device cleanup, dispatchers per device, bridge setup (#203)
* Use foreach
* Renaming
* Revert "Renaming"
This reverts commit b0554b9c0a052e282625a4565d429313af2b3cc7.
* Manpage updates
* Removed obsolete assertions
* Replaced QWORD by uint64_t and removed respective typedef
* Removed LPCSTR typedef
* Removed LPCTSTR typedef
* Removed LPTSTR typedef
* Renamed SCSI command interface classes
* Renamed xm6.h to rascsi.h
* Moved interface classes to new interfaces subfolder
* Added include
* Fixed compilation issues of 64 bit Ubuntu
* Renaming
* Sort block sizes
* protobuf interface description update
* Fixed handling for sector size for non-disk devices
* Fixed typo
* Fixed comment
* Translate code commends into English, removing redundant ones (#214)
* Comment update
* For other bridge interfaces than eth0 IP address and netmask can be provided
* Added special rule for testing on x86 PCs
* Translated code comments into English, removing some redundant ones in the process, plus fixing typos (#215)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* Comment update
* Removed unused typedefs
* Added special rule for testing on x86 PCs
* Comment update
* Comment update
* Updated capacity calculation
* Updated protobuf interface to signal parameter support
* Simplified protobuf interface
* Updated rasctl server info output
* Updated logging
* protobuf interface has to return block only if it is configurable
* Updated block size handling
* Improved error message if ID is already in use
* Removed typedef
* Renamed protobuf interface method
* Renaming
* Use protobuf::Messsge instead of protobuf::MessageLite
* default_image_folder cannot be an empty string, removed obsolete check
* Logging update
* Made some error messages more concise
* Removed magic constant
* Updated error message
* Comment update
* Names of removable media drives must be constant and not contain the capacity
* Improved DeviceFactory error handling
* More error handing improvements
* Interface comment update
* Pass interface list to ctapdriver when creating bridge
* Moved initialization code
* Updated rasctl server information output
* Improved handling of MO capacities
* Renaming
* Comment update
* Reject inserting a medium when there is already a medium present (eject first)
* Save list of files in use before dry-run
* Updated rasctl server info message
* Comment update
* Fixed typo
* Cleaned list handling
* Sort devices list by ID *and unit*
* Improved block size check
* Fixed issue with missing method in old Raspberry Pi OS protobuf implementation
* Updated error message
* Improve and fix bugs with saving&loading configuration files for rascsi-web (#218)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Removed unused structures, code and type cleanup
* Use unscoped enums for commands
* SASI Format opcode is 0x06, not 0x04 (see comment in code)
* Removed duplicate command
* Code review, data type updates
* Data type updated, use #pragma once
* Logging update
* Renaming
* Renaming
* Removed duplicate code
* Renaming
* Refactoring
* Removed TODO
* Updated logging
* Comment update
* Comment update
* Updated GetEventStatusNotification
* Removed goto
* Options -h and -v do not require to be the root user (fixes issue #166)
* Updated error messages and exception handling
* Added number of supported LUNs to protobuf interface
* Updated list handling of protobuf interface
* Comment update
* Improved error handling
* Added missing return statement
* Allow empty device list
* Fixed unnecessary detach_all() when config file isn't read (#221)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Protecting/unprotecing a non-ready medium is considered not possible
* Updated error message
* Extract detaching all devices, add parameter list support
* Comment update
* Fixed typos
* Restore files in use if dry-run fails
* Feature configurable reserved id for rascsi-web (#223)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make the reserved SCSI id configurable through an argument to start.sh; make the rascsi-web service reserve 7 by default to maintain current behavior.
* Make it possible to reserve multiple scsi ids in the web ui
* Added support for reserved IDs
* rasctl output update
* Re-ordered logging
* Logging update
* Make use of the newly introduced 'rasctl -r' to have the webui reserve ids on the backend side upon startup (#224)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Updated string to integer conversions
* Improved string to integer conversion
* Move string to integer conversion to rasutil
* Removed unused variable
* Fixed detach, which did not remove the filename from the filenames set
* Re-added folder to gitignore
* Set/Display patch version
* Fix issue where reserved ids were not reserved again when restarting rascsi-service from within the web ui (#226)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Make sure reserved SCSI IDs gets reserved again when restarting rascsi-service from within the web ui
* Updated interface comment
* Accept daynaport as legacy type
* Fixed typo
* Remove file from the list of files in use when ejected with a SCSI command
* Check for attached device for INSERT, EJECT, PROTECT, UNPROTECT
* Fixed error handling
* Fixed filepath handling
* Added more device shortcuts to rasctl
* Fixed function declaration
* Extraced ATTACH and DETACH
* Extracted INSERT
* Simplified ProcessCmd
* Comment update
* Fixed memory leak
* Log information on whether a new device is protected or read-only
* Updated errro message
* Updated error message
* Initialize private fields
* Updated rasctl help message
* Added DEVICE_INFO to protobuf interface
* Improved error handling
* DEVICE_INFO supports device list
* Updated server info handling
* Unified result handling with oneof, all commands now return PbResult
* A result can always return a message string
* Fixed typo
* Simplified sending of commands
* Improved error handling
* Removed unused code
* Updated error handling
* Code cleanup
* Comment update
* Updated logging
* Updated error handling
* Updated handling of removed status for devices without image file support
* Comment update
* Fixed typo
* Updated logging
* Updated parameter handling
* Updated setting default interfaces
* Revert "Updated setting default interfaces"
This reverts commit 210abc775d9a79dd0c631cf3877966a2923f4d5b.
* Revert "Updated parameter handling"
This reverts commit 35302addd59f5f5e1cc032888ba32dcbb426a846.
* rascsi supports reserving IDs
* Updated help message
* Replaced BOOL by bool
* Logging update
* Logging update
* Added default parameters to device properties
* Return parameters a device was set up with
* Improved device initialization
* Updated default parameter handling
* Updated default parameter handling
* Fixed typo
* Comment updates
* Comment update
* Manage default parameters in the respective device
* Do not pass empty parameter string
* Added supports_params flag
* Made comparisons more consistent
* Updated error handling
* Updated exception handling
* Renaming
* Comment update
* NEC sectors size must be 512 bytes
* Updated logging
* Updated vendor name handling
* Updated handling of media loading/unloading
* Added stoppable property and stopped status
* Made MO stoppable
* Removed duplicate code
* Removed duplicate code
* Copy read-only property
* Renaming
* Removed duplicate code, added START/STOP
* Improved default parameter handling
* Updated load/eject handling
* Logging update
* Fixed typo
* Verified START/STOP UNIT
* Updated logging
* Updated status handling
* Updated status handling
* More status handling updates
* Logging update
* Made instance fields local variables
* Made disk_t private
* Made some data structures private
* Fixed ARM compile issue
* Fixed ctapdriver initialization issue
* Reset read-only status when opening an image file
* Made logging more consistent
* Updated log level
* Log load/eject on error level for testing
* Revert "Log load/eject on error level for testing"
This reverts commit d35a15ea8e520517d25e1e1054ad1aeda9f85f2e.
* Assume drive is not ready after having been stopped
* Updated status handling
* Fixed typo
* Rebuild manpage
* Fixed issue #234 (MODE SENSE (10) returns wrong mode parameter header)
* Removed unused code
* Enum data type update
* Removed duplicate range check
* Removed duplicate code
* Removed more duplicate code
* Logging update
* SCCD sector size was not meant to be configurable
* Updated configurable sector size properties
* Removed assertion
* Improved error handling
* Updated error handling
* Re-added special error handling only relevant for SASI
* Added TODOs
* Comment update
* Added override modifier
* Removed obsolete debug flag (related code was not called)
* Comment and logging updates
* Removed obsolete try/catch
* Revert "Removed obsolete try/catch"
This reverts commit 39ca12d8b153c706316ce79f4fec65c9abc60024.
* Comment update
* Removed duplicate code
* Updated error messages, use more foreach loops
* Updated logging
* Logging update
* README update
* Added block_count
* Evaluate block size when inserting a media
* rasctl display capacity if available
* Info message update
* Added missing product name to NEC vital product data
* MO block size depends on capacity only
* Extended property/status display
* Property display update
* Updated error handling
* (Doc only changes) Fix typos and add clarification that SASI is used on Unix workstations
Co-authored-by: Daniel Markstedt <markstedt@gmail.com>
Co-authored-by: Tony Kuker <akuker@gmail.com>
2021-09-15 01:23:04 +00:00
|
|
|
|
int len = ctrl.bus->ReceiveHandShake(
|
2020-08-28 14:18:02 +00:00
|
|
|
|
&ctrl.buffer[ctrl.offset], ctrl.length);
|
2021-02-07 19:00:48 +00:00
|
|
|
|
LOGDEBUG("%s Received %d bytes", __PRETTY_FUNCTION__, len);
|
2020-08-28 14:18:02 +00:00
|
|
|
|
|
|
|
|
|
// If not able to receive all, move to status phase
|
|
|
|
|
if (len != (int)ctrl.length) {
|
|
|
|
|
Error();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Offset and Length
|
|
|
|
|
ctrl.offset += ctrl.length;
|
|
|
|
|
ctrl.length = 0;
|
|
|
|
|
return;
|
|
|
|
|
}
|
2021-02-07 19:00:48 +00:00
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
LOGDEBUG("%s ctrl.length was 0", __PRETTY_FUNCTION__);
|
|
|
|
|
}
|
2020-08-28 14:18:02 +00:00
|
|
|
|
|
|
|
|
|
// Remove the control block and initialize the result
|
|
|
|
|
ctrl.blocks--;
|
Configurable block size, controller/device cleanup, dispatchers per device, bridge setup (#203)
* Use foreach
* Renaming
* Revert "Renaming"
This reverts commit b0554b9c0a052e282625a4565d429313af2b3cc7.
* Manpage updates
* Removed obsolete assertions
* Replaced QWORD by uint64_t and removed respective typedef
* Removed LPCSTR typedef
* Removed LPCTSTR typedef
* Removed LPTSTR typedef
* Renamed SCSI command interface classes
* Renamed xm6.h to rascsi.h
* Moved interface classes to new interfaces subfolder
* Added include
* Fixed compilation issues of 64 bit Ubuntu
* Renaming
* Sort block sizes
* protobuf interface description update
* Fixed handling for sector size for non-disk devices
* Fixed typo
* Fixed comment
* Translate code commends into English, removing redundant ones (#214)
* Comment update
* For other bridge interfaces than eth0 IP address and netmask can be provided
* Added special rule for testing on x86 PCs
* Translated code comments into English, removing some redundant ones in the process, plus fixing typos (#215)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* Comment update
* Removed unused typedefs
* Added special rule for testing on x86 PCs
* Comment update
* Comment update
* Updated capacity calculation
* Updated protobuf interface to signal parameter support
* Simplified protobuf interface
* Updated rasctl server info output
* Updated logging
* protobuf interface has to return block only if it is configurable
* Updated block size handling
* Improved error message if ID is already in use
* Removed typedef
* Renamed protobuf interface method
* Renaming
* Use protobuf::Messsge instead of protobuf::MessageLite
* default_image_folder cannot be an empty string, removed obsolete check
* Logging update
* Made some error messages more concise
* Removed magic constant
* Updated error message
* Comment update
* Names of removable media drives must be constant and not contain the capacity
* Improved DeviceFactory error handling
* More error handing improvements
* Interface comment update
* Pass interface list to ctapdriver when creating bridge
* Moved initialization code
* Updated rasctl server information output
* Improved handling of MO capacities
* Renaming
* Comment update
* Reject inserting a medium when there is already a medium present (eject first)
* Save list of files in use before dry-run
* Updated rasctl server info message
* Comment update
* Fixed typo
* Cleaned list handling
* Sort devices list by ID *and unit*
* Improved block size check
* Fixed issue with missing method in old Raspberry Pi OS protobuf implementation
* Updated error message
* Improve and fix bugs with saving&loading configuration files for rascsi-web (#218)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Removed unused structures, code and type cleanup
* Use unscoped enums for commands
* SASI Format opcode is 0x06, not 0x04 (see comment in code)
* Removed duplicate command
* Code review, data type updates
* Data type updated, use #pragma once
* Logging update
* Renaming
* Renaming
* Removed duplicate code
* Renaming
* Refactoring
* Removed TODO
* Updated logging
* Comment update
* Comment update
* Updated GetEventStatusNotification
* Removed goto
* Options -h and -v do not require to be the root user (fixes issue #166)
* Updated error messages and exception handling
* Added number of supported LUNs to protobuf interface
* Updated list handling of protobuf interface
* Comment update
* Improved error handling
* Added missing return statement
* Allow empty device list
* Fixed unnecessary detach_all() when config file isn't read (#221)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Protecting/unprotecing a non-ready medium is considered not possible
* Updated error message
* Extract detaching all devices, add parameter list support
* Comment update
* Fixed typos
* Restore files in use if dry-run fails
* Feature configurable reserved id for rascsi-web (#223)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make the reserved SCSI id configurable through an argument to start.sh; make the rascsi-web service reserve 7 by default to maintain current behavior.
* Make it possible to reserve multiple scsi ids in the web ui
* Added support for reserved IDs
* rasctl output update
* Re-ordered logging
* Logging update
* Make use of the newly introduced 'rasctl -r' to have the webui reserve ids on the backend side upon startup (#224)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Updated string to integer conversions
* Improved string to integer conversion
* Move string to integer conversion to rasutil
* Removed unused variable
* Fixed detach, which did not remove the filename from the filenames set
* Re-added folder to gitignore
* Set/Display patch version
* Fix issue where reserved ids were not reserved again when restarting rascsi-service from within the web ui (#226)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Make sure reserved SCSI IDs gets reserved again when restarting rascsi-service from within the web ui
* Updated interface comment
* Accept daynaport as legacy type
* Fixed typo
* Remove file from the list of files in use when ejected with a SCSI command
* Check for attached device for INSERT, EJECT, PROTECT, UNPROTECT
* Fixed error handling
* Fixed filepath handling
* Added more device shortcuts to rasctl
* Fixed function declaration
* Extraced ATTACH and DETACH
* Extracted INSERT
* Simplified ProcessCmd
* Comment update
* Fixed memory leak
* Log information on whether a new device is protected or read-only
* Updated errro message
* Updated error message
* Initialize private fields
* Updated rasctl help message
* Added DEVICE_INFO to protobuf interface
* Improved error handling
* DEVICE_INFO supports device list
* Updated server info handling
* Unified result handling with oneof, all commands now return PbResult
* A result can always return a message string
* Fixed typo
* Simplified sending of commands
* Improved error handling
* Removed unused code
* Updated error handling
* Code cleanup
* Comment update
* Updated logging
* Updated error handling
* Updated handling of removed status for devices without image file support
* Comment update
* Fixed typo
* Updated logging
* Updated parameter handling
* Updated setting default interfaces
* Revert "Updated setting default interfaces"
This reverts commit 210abc775d9a79dd0c631cf3877966a2923f4d5b.
* Revert "Updated parameter handling"
This reverts commit 35302addd59f5f5e1cc032888ba32dcbb426a846.
* rascsi supports reserving IDs
* Updated help message
* Replaced BOOL by bool
* Logging update
* Logging update
* Added default parameters to device properties
* Return parameters a device was set up with
* Improved device initialization
* Updated default parameter handling
* Updated default parameter handling
* Fixed typo
* Comment updates
* Comment update
* Manage default parameters in the respective device
* Do not pass empty parameter string
* Added supports_params flag
* Made comparisons more consistent
* Updated error handling
* Updated exception handling
* Renaming
* Comment update
* NEC sectors size must be 512 bytes
* Updated logging
* Updated vendor name handling
* Updated handling of media loading/unloading
* Added stoppable property and stopped status
* Made MO stoppable
* Removed duplicate code
* Removed duplicate code
* Copy read-only property
* Renaming
* Removed duplicate code, added START/STOP
* Improved default parameter handling
* Updated load/eject handling
* Logging update
* Fixed typo
* Verified START/STOP UNIT
* Updated logging
* Updated status handling
* Updated status handling
* More status handling updates
* Logging update
* Made instance fields local variables
* Made disk_t private
* Made some data structures private
* Fixed ARM compile issue
* Fixed ctapdriver initialization issue
* Reset read-only status when opening an image file
* Made logging more consistent
* Updated log level
* Log load/eject on error level for testing
* Revert "Log load/eject on error level for testing"
This reverts commit d35a15ea8e520517d25e1e1054ad1aeda9f85f2e.
* Assume drive is not ready after having been stopped
* Updated status handling
* Fixed typo
* Rebuild manpage
* Fixed issue #234 (MODE SENSE (10) returns wrong mode parameter header)
* Removed unused code
* Enum data type update
* Removed duplicate range check
* Removed duplicate code
* Removed more duplicate code
* Logging update
* SCCD sector size was not meant to be configurable
* Updated configurable sector size properties
* Removed assertion
* Improved error handling
* Updated error handling
* Re-added special error handling only relevant for SASI
* Added TODOs
* Comment update
* Added override modifier
* Removed obsolete debug flag (related code was not called)
* Comment and logging updates
* Removed obsolete try/catch
* Revert "Removed obsolete try/catch"
This reverts commit 39ca12d8b153c706316ce79f4fec65c9abc60024.
* Comment update
* Removed duplicate code
* Updated error messages, use more foreach loops
* Updated logging
* Logging update
* README update
* Added block_count
* Evaluate block size when inserting a media
* rasctl display capacity if available
* Info message update
* Added missing product name to NEC vital product data
* MO block size depends on capacity only
* Extended property/status display
* Property display update
* Updated error handling
* (Doc only changes) Fix typos and add clarification that SASI is used on Unix workstations
Co-authored-by: Daniel Markstedt <markstedt@gmail.com>
Co-authored-by: Tony Kuker <akuker@gmail.com>
2021-09-15 01:23:04 +00:00
|
|
|
|
bool result = true;
|
2020-08-28 14:18:02 +00:00
|
|
|
|
|
|
|
|
|
// Process the data out phase
|
|
|
|
|
if (ctrl.phase == BUS::dataout) {
|
|
|
|
|
if (ctrl.blocks == 0) {
|
|
|
|
|
// End with this buffer
|
Configurable block size, controller/device cleanup, dispatchers per device, bridge setup (#203)
* Use foreach
* Renaming
* Revert "Renaming"
This reverts commit b0554b9c0a052e282625a4565d429313af2b3cc7.
* Manpage updates
* Removed obsolete assertions
* Replaced QWORD by uint64_t and removed respective typedef
* Removed LPCSTR typedef
* Removed LPCTSTR typedef
* Removed LPTSTR typedef
* Renamed SCSI command interface classes
* Renamed xm6.h to rascsi.h
* Moved interface classes to new interfaces subfolder
* Added include
* Fixed compilation issues of 64 bit Ubuntu
* Renaming
* Sort block sizes
* protobuf interface description update
* Fixed handling for sector size for non-disk devices
* Fixed typo
* Fixed comment
* Translate code commends into English, removing redundant ones (#214)
* Comment update
* For other bridge interfaces than eth0 IP address and netmask can be provided
* Added special rule for testing on x86 PCs
* Translated code comments into English, removing some redundant ones in the process, plus fixing typos (#215)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* Comment update
* Removed unused typedefs
* Added special rule for testing on x86 PCs
* Comment update
* Comment update
* Updated capacity calculation
* Updated protobuf interface to signal parameter support
* Simplified protobuf interface
* Updated rasctl server info output
* Updated logging
* protobuf interface has to return block only if it is configurable
* Updated block size handling
* Improved error message if ID is already in use
* Removed typedef
* Renamed protobuf interface method
* Renaming
* Use protobuf::Messsge instead of protobuf::MessageLite
* default_image_folder cannot be an empty string, removed obsolete check
* Logging update
* Made some error messages more concise
* Removed magic constant
* Updated error message
* Comment update
* Names of removable media drives must be constant and not contain the capacity
* Improved DeviceFactory error handling
* More error handing improvements
* Interface comment update
* Pass interface list to ctapdriver when creating bridge
* Moved initialization code
* Updated rasctl server information output
* Improved handling of MO capacities
* Renaming
* Comment update
* Reject inserting a medium when there is already a medium present (eject first)
* Save list of files in use before dry-run
* Updated rasctl server info message
* Comment update
* Fixed typo
* Cleaned list handling
* Sort devices list by ID *and unit*
* Improved block size check
* Fixed issue with missing method in old Raspberry Pi OS protobuf implementation
* Updated error message
* Improve and fix bugs with saving&loading configuration files for rascsi-web (#218)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Removed unused structures, code and type cleanup
* Use unscoped enums for commands
* SASI Format opcode is 0x06, not 0x04 (see comment in code)
* Removed duplicate command
* Code review, data type updates
* Data type updated, use #pragma once
* Logging update
* Renaming
* Renaming
* Removed duplicate code
* Renaming
* Refactoring
* Removed TODO
* Updated logging
* Comment update
* Comment update
* Updated GetEventStatusNotification
* Removed goto
* Options -h and -v do not require to be the root user (fixes issue #166)
* Updated error messages and exception handling
* Added number of supported LUNs to protobuf interface
* Updated list handling of protobuf interface
* Comment update
* Improved error handling
* Added missing return statement
* Allow empty device list
* Fixed unnecessary detach_all() when config file isn't read (#221)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Protecting/unprotecing a non-ready medium is considered not possible
* Updated error message
* Extract detaching all devices, add parameter list support
* Comment update
* Fixed typos
* Restore files in use if dry-run fails
* Feature configurable reserved id for rascsi-web (#223)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make the reserved SCSI id configurable through an argument to start.sh; make the rascsi-web service reserve 7 by default to maintain current behavior.
* Make it possible to reserve multiple scsi ids in the web ui
* Added support for reserved IDs
* rasctl output update
* Re-ordered logging
* Logging update
* Make use of the newly introduced 'rasctl -r' to have the webui reserve ids on the backend side upon startup (#224)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Updated string to integer conversions
* Improved string to integer conversion
* Move string to integer conversion to rasutil
* Removed unused variable
* Fixed detach, which did not remove the filename from the filenames set
* Re-added folder to gitignore
* Set/Display patch version
* Fix issue where reserved ids were not reserved again when restarting rascsi-service from within the web ui (#226)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Make sure reserved SCSI IDs gets reserved again when restarting rascsi-service from within the web ui
* Updated interface comment
* Accept daynaport as legacy type
* Fixed typo
* Remove file from the list of files in use when ejected with a SCSI command
* Check for attached device for INSERT, EJECT, PROTECT, UNPROTECT
* Fixed error handling
* Fixed filepath handling
* Added more device shortcuts to rasctl
* Fixed function declaration
* Extraced ATTACH and DETACH
* Extracted INSERT
* Simplified ProcessCmd
* Comment update
* Fixed memory leak
* Log information on whether a new device is protected or read-only
* Updated errro message
* Updated error message
* Initialize private fields
* Updated rasctl help message
* Added DEVICE_INFO to protobuf interface
* Improved error handling
* DEVICE_INFO supports device list
* Updated server info handling
* Unified result handling with oneof, all commands now return PbResult
* A result can always return a message string
* Fixed typo
* Simplified sending of commands
* Improved error handling
* Removed unused code
* Updated error handling
* Code cleanup
* Comment update
* Updated logging
* Updated error handling
* Updated handling of removed status for devices without image file support
* Comment update
* Fixed typo
* Updated logging
* Updated parameter handling
* Updated setting default interfaces
* Revert "Updated setting default interfaces"
This reverts commit 210abc775d9a79dd0c631cf3877966a2923f4d5b.
* Revert "Updated parameter handling"
This reverts commit 35302addd59f5f5e1cc032888ba32dcbb426a846.
* rascsi supports reserving IDs
* Updated help message
* Replaced BOOL by bool
* Logging update
* Logging update
* Added default parameters to device properties
* Return parameters a device was set up with
* Improved device initialization
* Updated default parameter handling
* Updated default parameter handling
* Fixed typo
* Comment updates
* Comment update
* Manage default parameters in the respective device
* Do not pass empty parameter string
* Added supports_params flag
* Made comparisons more consistent
* Updated error handling
* Updated exception handling
* Renaming
* Comment update
* NEC sectors size must be 512 bytes
* Updated logging
* Updated vendor name handling
* Updated handling of media loading/unloading
* Added stoppable property and stopped status
* Made MO stoppable
* Removed duplicate code
* Removed duplicate code
* Copy read-only property
* Renaming
* Removed duplicate code, added START/STOP
* Improved default parameter handling
* Updated load/eject handling
* Logging update
* Fixed typo
* Verified START/STOP UNIT
* Updated logging
* Updated status handling
* Updated status handling
* More status handling updates
* Logging update
* Made instance fields local variables
* Made disk_t private
* Made some data structures private
* Fixed ARM compile issue
* Fixed ctapdriver initialization issue
* Reset read-only status when opening an image file
* Made logging more consistent
* Updated log level
* Log load/eject on error level for testing
* Revert "Log load/eject on error level for testing"
This reverts commit d35a15ea8e520517d25e1e1054ad1aeda9f85f2e.
* Assume drive is not ready after having been stopped
* Updated status handling
* Fixed typo
* Rebuild manpage
* Fixed issue #234 (MODE SENSE (10) returns wrong mode parameter header)
* Removed unused code
* Enum data type update
* Removed duplicate range check
* Removed duplicate code
* Removed more duplicate code
* Logging update
* SCCD sector size was not meant to be configurable
* Updated configurable sector size properties
* Removed assertion
* Improved error handling
* Updated error handling
* Re-added special error handling only relevant for SASI
* Added TODOs
* Comment update
* Added override modifier
* Removed obsolete debug flag (related code was not called)
* Comment and logging updates
* Removed obsolete try/catch
* Revert "Removed obsolete try/catch"
This reverts commit 39ca12d8b153c706316ce79f4fec65c9abc60024.
* Comment update
* Removed duplicate code
* Updated error messages, use more foreach loops
* Updated logging
* Logging update
* README update
* Added block_count
* Evaluate block size when inserting a media
* rasctl display capacity if available
* Info message update
* Added missing product name to NEC vital product data
* MO block size depends on capacity only
* Extended property/status display
* Property display update
* Updated error handling
* (Doc only changes) Fix typos and add clarification that SASI is used on Unix workstations
Co-authored-by: Daniel Markstedt <markstedt@gmail.com>
Co-authored-by: Tony Kuker <akuker@gmail.com>
2021-09-15 01:23:04 +00:00
|
|
|
|
result = XferOut(false);
|
2020-08-28 14:18:02 +00:00
|
|
|
|
} else {
|
|
|
|
|
// Continue to next buffer (set offset, length)
|
Configurable block size, controller/device cleanup, dispatchers per device, bridge setup (#203)
* Use foreach
* Renaming
* Revert "Renaming"
This reverts commit b0554b9c0a052e282625a4565d429313af2b3cc7.
* Manpage updates
* Removed obsolete assertions
* Replaced QWORD by uint64_t and removed respective typedef
* Removed LPCSTR typedef
* Removed LPCTSTR typedef
* Removed LPTSTR typedef
* Renamed SCSI command interface classes
* Renamed xm6.h to rascsi.h
* Moved interface classes to new interfaces subfolder
* Added include
* Fixed compilation issues of 64 bit Ubuntu
* Renaming
* Sort block sizes
* protobuf interface description update
* Fixed handling for sector size for non-disk devices
* Fixed typo
* Fixed comment
* Translate code commends into English, removing redundant ones (#214)
* Comment update
* For other bridge interfaces than eth0 IP address and netmask can be provided
* Added special rule for testing on x86 PCs
* Translated code comments into English, removing some redundant ones in the process, plus fixing typos (#215)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* Comment update
* Removed unused typedefs
* Added special rule for testing on x86 PCs
* Comment update
* Comment update
* Updated capacity calculation
* Updated protobuf interface to signal parameter support
* Simplified protobuf interface
* Updated rasctl server info output
* Updated logging
* protobuf interface has to return block only if it is configurable
* Updated block size handling
* Improved error message if ID is already in use
* Removed typedef
* Renamed protobuf interface method
* Renaming
* Use protobuf::Messsge instead of protobuf::MessageLite
* default_image_folder cannot be an empty string, removed obsolete check
* Logging update
* Made some error messages more concise
* Removed magic constant
* Updated error message
* Comment update
* Names of removable media drives must be constant and not contain the capacity
* Improved DeviceFactory error handling
* More error handing improvements
* Interface comment update
* Pass interface list to ctapdriver when creating bridge
* Moved initialization code
* Updated rasctl server information output
* Improved handling of MO capacities
* Renaming
* Comment update
* Reject inserting a medium when there is already a medium present (eject first)
* Save list of files in use before dry-run
* Updated rasctl server info message
* Comment update
* Fixed typo
* Cleaned list handling
* Sort devices list by ID *and unit*
* Improved block size check
* Fixed issue with missing method in old Raspberry Pi OS protobuf implementation
* Updated error message
* Improve and fix bugs with saving&loading configuration files for rascsi-web (#218)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Removed unused structures, code and type cleanup
* Use unscoped enums for commands
* SASI Format opcode is 0x06, not 0x04 (see comment in code)
* Removed duplicate command
* Code review, data type updates
* Data type updated, use #pragma once
* Logging update
* Renaming
* Renaming
* Removed duplicate code
* Renaming
* Refactoring
* Removed TODO
* Updated logging
* Comment update
* Comment update
* Updated GetEventStatusNotification
* Removed goto
* Options -h and -v do not require to be the root user (fixes issue #166)
* Updated error messages and exception handling
* Added number of supported LUNs to protobuf interface
* Updated list handling of protobuf interface
* Comment update
* Improved error handling
* Added missing return statement
* Allow empty device list
* Fixed unnecessary detach_all() when config file isn't read (#221)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Protecting/unprotecing a non-ready medium is considered not possible
* Updated error message
* Extract detaching all devices, add parameter list support
* Comment update
* Fixed typos
* Restore files in use if dry-run fails
* Feature configurable reserved id for rascsi-web (#223)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make the reserved SCSI id configurable through an argument to start.sh; make the rascsi-web service reserve 7 by default to maintain current behavior.
* Make it possible to reserve multiple scsi ids in the web ui
* Added support for reserved IDs
* rasctl output update
* Re-ordered logging
* Logging update
* Make use of the newly introduced 'rasctl -r' to have the webui reserve ids on the backend side upon startup (#224)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Updated string to integer conversions
* Improved string to integer conversion
* Move string to integer conversion to rasutil
* Removed unused variable
* Fixed detach, which did not remove the filename from the filenames set
* Re-added folder to gitignore
* Set/Display patch version
* Fix issue where reserved ids were not reserved again when restarting rascsi-service from within the web ui (#226)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Make sure reserved SCSI IDs gets reserved again when restarting rascsi-service from within the web ui
* Updated interface comment
* Accept daynaport as legacy type
* Fixed typo
* Remove file from the list of files in use when ejected with a SCSI command
* Check for attached device for INSERT, EJECT, PROTECT, UNPROTECT
* Fixed error handling
* Fixed filepath handling
* Added more device shortcuts to rasctl
* Fixed function declaration
* Extraced ATTACH and DETACH
* Extracted INSERT
* Simplified ProcessCmd
* Comment update
* Fixed memory leak
* Log information on whether a new device is protected or read-only
* Updated errro message
* Updated error message
* Initialize private fields
* Updated rasctl help message
* Added DEVICE_INFO to protobuf interface
* Improved error handling
* DEVICE_INFO supports device list
* Updated server info handling
* Unified result handling with oneof, all commands now return PbResult
* A result can always return a message string
* Fixed typo
* Simplified sending of commands
* Improved error handling
* Removed unused code
* Updated error handling
* Code cleanup
* Comment update
* Updated logging
* Updated error handling
* Updated handling of removed status for devices without image file support
* Comment update
* Fixed typo
* Updated logging
* Updated parameter handling
* Updated setting default interfaces
* Revert "Updated setting default interfaces"
This reverts commit 210abc775d9a79dd0c631cf3877966a2923f4d5b.
* Revert "Updated parameter handling"
This reverts commit 35302addd59f5f5e1cc032888ba32dcbb426a846.
* rascsi supports reserving IDs
* Updated help message
* Replaced BOOL by bool
* Logging update
* Logging update
* Added default parameters to device properties
* Return parameters a device was set up with
* Improved device initialization
* Updated default parameter handling
* Updated default parameter handling
* Fixed typo
* Comment updates
* Comment update
* Manage default parameters in the respective device
* Do not pass empty parameter string
* Added supports_params flag
* Made comparisons more consistent
* Updated error handling
* Updated exception handling
* Renaming
* Comment update
* NEC sectors size must be 512 bytes
* Updated logging
* Updated vendor name handling
* Updated handling of media loading/unloading
* Added stoppable property and stopped status
* Made MO stoppable
* Removed duplicate code
* Removed duplicate code
* Copy read-only property
* Renaming
* Removed duplicate code, added START/STOP
* Improved default parameter handling
* Updated load/eject handling
* Logging update
* Fixed typo
* Verified START/STOP UNIT
* Updated logging
* Updated status handling
* Updated status handling
* More status handling updates
* Logging update
* Made instance fields local variables
* Made disk_t private
* Made some data structures private
* Fixed ARM compile issue
* Fixed ctapdriver initialization issue
* Reset read-only status when opening an image file
* Made logging more consistent
* Updated log level
* Log load/eject on error level for testing
* Revert "Log load/eject on error level for testing"
This reverts commit d35a15ea8e520517d25e1e1054ad1aeda9f85f2e.
* Assume drive is not ready after having been stopped
* Updated status handling
* Fixed typo
* Rebuild manpage
* Fixed issue #234 (MODE SENSE (10) returns wrong mode parameter header)
* Removed unused code
* Enum data type update
* Removed duplicate range check
* Removed duplicate code
* Removed more duplicate code
* Logging update
* SCCD sector size was not meant to be configurable
* Updated configurable sector size properties
* Removed assertion
* Improved error handling
* Updated error handling
* Re-added special error handling only relevant for SASI
* Added TODOs
* Comment update
* Added override modifier
* Removed obsolete debug flag (related code was not called)
* Comment and logging updates
* Removed obsolete try/catch
* Revert "Removed obsolete try/catch"
This reverts commit 39ca12d8b153c706316ce79f4fec65c9abc60024.
* Comment update
* Removed duplicate code
* Updated error messages, use more foreach loops
* Updated logging
* Logging update
* README update
* Added block_count
* Evaluate block size when inserting a media
* rasctl display capacity if available
* Info message update
* Added missing product name to NEC vital product data
* MO block size depends on capacity only
* Extended property/status display
* Property display update
* Updated error handling
* (Doc only changes) Fix typos and add clarification that SASI is used on Unix workstations
Co-authored-by: Daniel Markstedt <markstedt@gmail.com>
Co-authored-by: Tony Kuker <akuker@gmail.com>
2021-09-15 01:23:04 +00:00
|
|
|
|
result = XferOut(true);
|
2020-08-28 14:18:02 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// If result is false, move to the status phase
|
|
|
|
|
if (!result) {
|
|
|
|
|
Error();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Continue to receive is block != 0
|
|
|
|
|
if (ctrl.blocks != 0){
|
|
|
|
|
ASSERT(ctrl.length > 0);
|
|
|
|
|
ASSERT(ctrl.offset == 0);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Move to the next phase
|
|
|
|
|
switch (ctrl.phase) {
|
|
|
|
|
// Data out phase
|
|
|
|
|
case BUS::dataout:
|
2021-02-07 19:00:48 +00:00
|
|
|
|
LOGTRACE("%s transitioning to FlushUnit()",__PRETTY_FUNCTION__);
|
2020-08-28 14:18:02 +00:00
|
|
|
|
// Flush
|
|
|
|
|
FlushUnit();
|
|
|
|
|
|
|
|
|
|
// status phase
|
|
|
|
|
Status();
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
// Other (impossible)
|
|
|
|
|
default:
|
|
|
|
|
ASSERT(FALSE);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
//
|
|
|
|
|
// Data transfer IN
|
|
|
|
|
// *Reset offset and length
|
2022-02-17 02:04:42 +00:00
|
|
|
|
// TODO XferIn probably needs a dispatcher, in order to avoid subclassing Disk, i.e.
|
|
|
|
|
// just like the actual SCSI commands XferIn should be executed by the respective device
|
2020-08-28 14:18:02 +00:00
|
|
|
|
//
|
|
|
|
|
//---------------------------------------------------------------------------
|
Configurable block size, controller/device cleanup, dispatchers per device, bridge setup (#203)
* Use foreach
* Renaming
* Revert "Renaming"
This reverts commit b0554b9c0a052e282625a4565d429313af2b3cc7.
* Manpage updates
* Removed obsolete assertions
* Replaced QWORD by uint64_t and removed respective typedef
* Removed LPCSTR typedef
* Removed LPCTSTR typedef
* Removed LPTSTR typedef
* Renamed SCSI command interface classes
* Renamed xm6.h to rascsi.h
* Moved interface classes to new interfaces subfolder
* Added include
* Fixed compilation issues of 64 bit Ubuntu
* Renaming
* Sort block sizes
* protobuf interface description update
* Fixed handling for sector size for non-disk devices
* Fixed typo
* Fixed comment
* Translate code commends into English, removing redundant ones (#214)
* Comment update
* For other bridge interfaces than eth0 IP address and netmask can be provided
* Added special rule for testing on x86 PCs
* Translated code comments into English, removing some redundant ones in the process, plus fixing typos (#215)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* Comment update
* Removed unused typedefs
* Added special rule for testing on x86 PCs
* Comment update
* Comment update
* Updated capacity calculation
* Updated protobuf interface to signal parameter support
* Simplified protobuf interface
* Updated rasctl server info output
* Updated logging
* protobuf interface has to return block only if it is configurable
* Updated block size handling
* Improved error message if ID is already in use
* Removed typedef
* Renamed protobuf interface method
* Renaming
* Use protobuf::Messsge instead of protobuf::MessageLite
* default_image_folder cannot be an empty string, removed obsolete check
* Logging update
* Made some error messages more concise
* Removed magic constant
* Updated error message
* Comment update
* Names of removable media drives must be constant and not contain the capacity
* Improved DeviceFactory error handling
* More error handing improvements
* Interface comment update
* Pass interface list to ctapdriver when creating bridge
* Moved initialization code
* Updated rasctl server information output
* Improved handling of MO capacities
* Renaming
* Comment update
* Reject inserting a medium when there is already a medium present (eject first)
* Save list of files in use before dry-run
* Updated rasctl server info message
* Comment update
* Fixed typo
* Cleaned list handling
* Sort devices list by ID *and unit*
* Improved block size check
* Fixed issue with missing method in old Raspberry Pi OS protobuf implementation
* Updated error message
* Improve and fix bugs with saving&loading configuration files for rascsi-web (#218)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Removed unused structures, code and type cleanup
* Use unscoped enums for commands
* SASI Format opcode is 0x06, not 0x04 (see comment in code)
* Removed duplicate command
* Code review, data type updates
* Data type updated, use #pragma once
* Logging update
* Renaming
* Renaming
* Removed duplicate code
* Renaming
* Refactoring
* Removed TODO
* Updated logging
* Comment update
* Comment update
* Updated GetEventStatusNotification
* Removed goto
* Options -h and -v do not require to be the root user (fixes issue #166)
* Updated error messages and exception handling
* Added number of supported LUNs to protobuf interface
* Updated list handling of protobuf interface
* Comment update
* Improved error handling
* Added missing return statement
* Allow empty device list
* Fixed unnecessary detach_all() when config file isn't read (#221)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Protecting/unprotecing a non-ready medium is considered not possible
* Updated error message
* Extract detaching all devices, add parameter list support
* Comment update
* Fixed typos
* Restore files in use if dry-run fails
* Feature configurable reserved id for rascsi-web (#223)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make the reserved SCSI id configurable through an argument to start.sh; make the rascsi-web service reserve 7 by default to maintain current behavior.
* Make it possible to reserve multiple scsi ids in the web ui
* Added support for reserved IDs
* rasctl output update
* Re-ordered logging
* Logging update
* Make use of the newly introduced 'rasctl -r' to have the webui reserve ids on the backend side upon startup (#224)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Updated string to integer conversions
* Improved string to integer conversion
* Move string to integer conversion to rasutil
* Removed unused variable
* Fixed detach, which did not remove the filename from the filenames set
* Re-added folder to gitignore
* Set/Display patch version
* Fix issue where reserved ids were not reserved again when restarting rascsi-service from within the web ui (#226)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Make sure reserved SCSI IDs gets reserved again when restarting rascsi-service from within the web ui
* Updated interface comment
* Accept daynaport as legacy type
* Fixed typo
* Remove file from the list of files in use when ejected with a SCSI command
* Check for attached device for INSERT, EJECT, PROTECT, UNPROTECT
* Fixed error handling
* Fixed filepath handling
* Added more device shortcuts to rasctl
* Fixed function declaration
* Extraced ATTACH and DETACH
* Extracted INSERT
* Simplified ProcessCmd
* Comment update
* Fixed memory leak
* Log information on whether a new device is protected or read-only
* Updated errro message
* Updated error message
* Initialize private fields
* Updated rasctl help message
* Added DEVICE_INFO to protobuf interface
* Improved error handling
* DEVICE_INFO supports device list
* Updated server info handling
* Unified result handling with oneof, all commands now return PbResult
* A result can always return a message string
* Fixed typo
* Simplified sending of commands
* Improved error handling
* Removed unused code
* Updated error handling
* Code cleanup
* Comment update
* Updated logging
* Updated error handling
* Updated handling of removed status for devices without image file support
* Comment update
* Fixed typo
* Updated logging
* Updated parameter handling
* Updated setting default interfaces
* Revert "Updated setting default interfaces"
This reverts commit 210abc775d9a79dd0c631cf3877966a2923f4d5b.
* Revert "Updated parameter handling"
This reverts commit 35302addd59f5f5e1cc032888ba32dcbb426a846.
* rascsi supports reserving IDs
* Updated help message
* Replaced BOOL by bool
* Logging update
* Logging update
* Added default parameters to device properties
* Return parameters a device was set up with
* Improved device initialization
* Updated default parameter handling
* Updated default parameter handling
* Fixed typo
* Comment updates
* Comment update
* Manage default parameters in the respective device
* Do not pass empty parameter string
* Added supports_params flag
* Made comparisons more consistent
* Updated error handling
* Updated exception handling
* Renaming
* Comment update
* NEC sectors size must be 512 bytes
* Updated logging
* Updated vendor name handling
* Updated handling of media loading/unloading
* Added stoppable property and stopped status
* Made MO stoppable
* Removed duplicate code
* Removed duplicate code
* Copy read-only property
* Renaming
* Removed duplicate code, added START/STOP
* Improved default parameter handling
* Updated load/eject handling
* Logging update
* Fixed typo
* Verified START/STOP UNIT
* Updated logging
* Updated status handling
* Updated status handling
* More status handling updates
* Logging update
* Made instance fields local variables
* Made disk_t private
* Made some data structures private
* Fixed ARM compile issue
* Fixed ctapdriver initialization issue
* Reset read-only status when opening an image file
* Made logging more consistent
* Updated log level
* Log load/eject on error level for testing
* Revert "Log load/eject on error level for testing"
This reverts commit d35a15ea8e520517d25e1e1054ad1aeda9f85f2e.
* Assume drive is not ready after having been stopped
* Updated status handling
* Fixed typo
* Rebuild manpage
* Fixed issue #234 (MODE SENSE (10) returns wrong mode parameter header)
* Removed unused code
* Enum data type update
* Removed duplicate range check
* Removed duplicate code
* Removed more duplicate code
* Logging update
* SCCD sector size was not meant to be configurable
* Updated configurable sector size properties
* Removed assertion
* Improved error handling
* Updated error handling
* Re-added special error handling only relevant for SASI
* Added TODOs
* Comment update
* Added override modifier
* Removed obsolete debug flag (related code was not called)
* Comment and logging updates
* Removed obsolete try/catch
* Revert "Removed obsolete try/catch"
This reverts commit 39ca12d8b153c706316ce79f4fec65c9abc60024.
* Comment update
* Removed duplicate code
* Updated error messages, use more foreach loops
* Updated logging
* Logging update
* README update
* Added block_count
* Evaluate block size when inserting a media
* rasctl display capacity if available
* Info message update
* Added missing product name to NEC vital product data
* MO block size depends on capacity only
* Extended property/status display
* Property display update
* Updated error handling
* (Doc only changes) Fix typos and add clarification that SASI is used on Unix workstations
Co-authored-by: Daniel Markstedt <markstedt@gmail.com>
Co-authored-by: Tony Kuker <akuker@gmail.com>
2021-09-15 01:23:04 +00:00
|
|
|
|
bool SASIDEV::XferIn(BYTE *buf)
|
2020-08-28 14:18:02 +00:00
|
|
|
|
{
|
|
|
|
|
ASSERT(ctrl.phase == BUS::datain);
|
2021-02-07 19:00:48 +00:00
|
|
|
|
LOGTRACE("%s ctrl.cmd[0]=%02X", __PRETTY_FUNCTION__, (unsigned int)ctrl.cmd[0]);
|
2020-08-28 14:18:02 +00:00
|
|
|
|
|
|
|
|
|
// Logical Unit
|
2021-10-13 09:03:31 +00:00
|
|
|
|
DWORD lun = GetEffectiveLun();
|
2020-08-28 14:18:02 +00:00
|
|
|
|
if (!ctrl.unit[lun]) {
|
Configurable block size, controller/device cleanup, dispatchers per device, bridge setup (#203)
* Use foreach
* Renaming
* Revert "Renaming"
This reverts commit b0554b9c0a052e282625a4565d429313af2b3cc7.
* Manpage updates
* Removed obsolete assertions
* Replaced QWORD by uint64_t and removed respective typedef
* Removed LPCSTR typedef
* Removed LPCTSTR typedef
* Removed LPTSTR typedef
* Renamed SCSI command interface classes
* Renamed xm6.h to rascsi.h
* Moved interface classes to new interfaces subfolder
* Added include
* Fixed compilation issues of 64 bit Ubuntu
* Renaming
* Sort block sizes
* protobuf interface description update
* Fixed handling for sector size for non-disk devices
* Fixed typo
* Fixed comment
* Translate code commends into English, removing redundant ones (#214)
* Comment update
* For other bridge interfaces than eth0 IP address and netmask can be provided
* Added special rule for testing on x86 PCs
* Translated code comments into English, removing some redundant ones in the process, plus fixing typos (#215)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* Comment update
* Removed unused typedefs
* Added special rule for testing on x86 PCs
* Comment update
* Comment update
* Updated capacity calculation
* Updated protobuf interface to signal parameter support
* Simplified protobuf interface
* Updated rasctl server info output
* Updated logging
* protobuf interface has to return block only if it is configurable
* Updated block size handling
* Improved error message if ID is already in use
* Removed typedef
* Renamed protobuf interface method
* Renaming
* Use protobuf::Messsge instead of protobuf::MessageLite
* default_image_folder cannot be an empty string, removed obsolete check
* Logging update
* Made some error messages more concise
* Removed magic constant
* Updated error message
* Comment update
* Names of removable media drives must be constant and not contain the capacity
* Improved DeviceFactory error handling
* More error handing improvements
* Interface comment update
* Pass interface list to ctapdriver when creating bridge
* Moved initialization code
* Updated rasctl server information output
* Improved handling of MO capacities
* Renaming
* Comment update
* Reject inserting a medium when there is already a medium present (eject first)
* Save list of files in use before dry-run
* Updated rasctl server info message
* Comment update
* Fixed typo
* Cleaned list handling
* Sort devices list by ID *and unit*
* Improved block size check
* Fixed issue with missing method in old Raspberry Pi OS protobuf implementation
* Updated error message
* Improve and fix bugs with saving&loading configuration files for rascsi-web (#218)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Removed unused structures, code and type cleanup
* Use unscoped enums for commands
* SASI Format opcode is 0x06, not 0x04 (see comment in code)
* Removed duplicate command
* Code review, data type updates
* Data type updated, use #pragma once
* Logging update
* Renaming
* Renaming
* Removed duplicate code
* Renaming
* Refactoring
* Removed TODO
* Updated logging
* Comment update
* Comment update
* Updated GetEventStatusNotification
* Removed goto
* Options -h and -v do not require to be the root user (fixes issue #166)
* Updated error messages and exception handling
* Added number of supported LUNs to protobuf interface
* Updated list handling of protobuf interface
* Comment update
* Improved error handling
* Added missing return statement
* Allow empty device list
* Fixed unnecessary detach_all() when config file isn't read (#221)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Protecting/unprotecing a non-ready medium is considered not possible
* Updated error message
* Extract detaching all devices, add parameter list support
* Comment update
* Fixed typos
* Restore files in use if dry-run fails
* Feature configurable reserved id for rascsi-web (#223)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make the reserved SCSI id configurable through an argument to start.sh; make the rascsi-web service reserve 7 by default to maintain current behavior.
* Make it possible to reserve multiple scsi ids in the web ui
* Added support for reserved IDs
* rasctl output update
* Re-ordered logging
* Logging update
* Make use of the newly introduced 'rasctl -r' to have the webui reserve ids on the backend side upon startup (#224)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Updated string to integer conversions
* Improved string to integer conversion
* Move string to integer conversion to rasutil
* Removed unused variable
* Fixed detach, which did not remove the filename from the filenames set
* Re-added folder to gitignore
* Set/Display patch version
* Fix issue where reserved ids were not reserved again when restarting rascsi-service from within the web ui (#226)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Make sure reserved SCSI IDs gets reserved again when restarting rascsi-service from within the web ui
* Updated interface comment
* Accept daynaport as legacy type
* Fixed typo
* Remove file from the list of files in use when ejected with a SCSI command
* Check for attached device for INSERT, EJECT, PROTECT, UNPROTECT
* Fixed error handling
* Fixed filepath handling
* Added more device shortcuts to rasctl
* Fixed function declaration
* Extraced ATTACH and DETACH
* Extracted INSERT
* Simplified ProcessCmd
* Comment update
* Fixed memory leak
* Log information on whether a new device is protected or read-only
* Updated errro message
* Updated error message
* Initialize private fields
* Updated rasctl help message
* Added DEVICE_INFO to protobuf interface
* Improved error handling
* DEVICE_INFO supports device list
* Updated server info handling
* Unified result handling with oneof, all commands now return PbResult
* A result can always return a message string
* Fixed typo
* Simplified sending of commands
* Improved error handling
* Removed unused code
* Updated error handling
* Code cleanup
* Comment update
* Updated logging
* Updated error handling
* Updated handling of removed status for devices without image file support
* Comment update
* Fixed typo
* Updated logging
* Updated parameter handling
* Updated setting default interfaces
* Revert "Updated setting default interfaces"
This reverts commit 210abc775d9a79dd0c631cf3877966a2923f4d5b.
* Revert "Updated parameter handling"
This reverts commit 35302addd59f5f5e1cc032888ba32dcbb426a846.
* rascsi supports reserving IDs
* Updated help message
* Replaced BOOL by bool
* Logging update
* Logging update
* Added default parameters to device properties
* Return parameters a device was set up with
* Improved device initialization
* Updated default parameter handling
* Updated default parameter handling
* Fixed typo
* Comment updates
* Comment update
* Manage default parameters in the respective device
* Do not pass empty parameter string
* Added supports_params flag
* Made comparisons more consistent
* Updated error handling
* Updated exception handling
* Renaming
* Comment update
* NEC sectors size must be 512 bytes
* Updated logging
* Updated vendor name handling
* Updated handling of media loading/unloading
* Added stoppable property and stopped status
* Made MO stoppable
* Removed duplicate code
* Removed duplicate code
* Copy read-only property
* Renaming
* Removed duplicate code, added START/STOP
* Improved default parameter handling
* Updated load/eject handling
* Logging update
* Fixed typo
* Verified START/STOP UNIT
* Updated logging
* Updated status handling
* Updated status handling
* More status handling updates
* Logging update
* Made instance fields local variables
* Made disk_t private
* Made some data structures private
* Fixed ARM compile issue
* Fixed ctapdriver initialization issue
* Reset read-only status when opening an image file
* Made logging more consistent
* Updated log level
* Log load/eject on error level for testing
* Revert "Log load/eject on error level for testing"
This reverts commit d35a15ea8e520517d25e1e1054ad1aeda9f85f2e.
* Assume drive is not ready after having been stopped
* Updated status handling
* Fixed typo
* Rebuild manpage
* Fixed issue #234 (MODE SENSE (10) returns wrong mode parameter header)
* Removed unused code
* Enum data type update
* Removed duplicate range check
* Removed duplicate code
* Removed more duplicate code
* Logging update
* SCCD sector size was not meant to be configurable
* Updated configurable sector size properties
* Removed assertion
* Improved error handling
* Updated error handling
* Re-added special error handling only relevant for SASI
* Added TODOs
* Comment update
* Added override modifier
* Removed obsolete debug flag (related code was not called)
* Comment and logging updates
* Removed obsolete try/catch
* Revert "Removed obsolete try/catch"
This reverts commit 39ca12d8b153c706316ce79f4fec65c9abc60024.
* Comment update
* Removed duplicate code
* Updated error messages, use more foreach loops
* Updated logging
* Logging update
* README update
* Added block_count
* Evaluate block size when inserting a media
* rasctl display capacity if available
* Info message update
* Added missing product name to NEC vital product data
* MO block size depends on capacity only
* Extended property/status display
* Property display update
* Updated error handling
* (Doc only changes) Fix typos and add clarification that SASI is used on Unix workstations
Co-authored-by: Daniel Markstedt <markstedt@gmail.com>
Co-authored-by: Tony Kuker <akuker@gmail.com>
2021-09-15 01:23:04 +00:00
|
|
|
|
return false;
|
2020-08-28 14:18:02 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Limited to read commands
|
|
|
|
|
switch (ctrl.cmd[0]) {
|
2021-07-09 16:37:46 +00:00
|
|
|
|
case eCmdRead6:
|
|
|
|
|
case eCmdRead10:
|
Refactoring, device handling extensions, additional settings, improved error handling, 64 bit OS support, fixed issues (#184)
* Device type unification, support of removable media
* Added support for .hdr extension
* Removable flag cleanup
* Manpage update
* Enriched PbOperation with PbDevice
* Added file size to PbImageFile
* Added device list support
* Set image_file
* Make remote interface more robust by ignoring SIGPIPE
* Return status only once
* Fixed typo
* Error handling update
* When starting rascsi parse everything before attaching devices
* Added dry run mode
* Comment update
* Updated logging
* Added Device base class, Disk class inherits from it
* Renaming
* Use vectors for controllers and disks, as preparation for using maps
* Updated file support handling
* Comment update
* DaynaPort and Bridge inherit from Device instead of Disk
* ProcessCmd() now works with devices instead of disks
* Renaming
* Added DeviceFactory
* Improved factory
* Comment update
* protected disk_t
* Code cleanup, added translations
* Device name can be set for rascsi
* rasctl can set device name
* Manpage update
* Manpage update
* Formatting update
* Check for missing name
* Initialize fd
* Initialize type
* Fixed string length issue
* Updated capacity formatting
* Fixed typo
* Split PbDevice into device and device definition
* Added TODO
* Renaming
* Renaming
* Device types can be explicitly specified with -t (no FILE:TYPE syntax anymore)
* Fixed compile-time issue
* Removed unused Append mode, updated read-only handling
* Type handling and manpage update
* Cleanup
* rasctl parser cleanup
* Review
* Constructor update
* Added .hdr (SCRM) support to web interface, tested web interface
* Default folder can be set remotely
* Removed deprecated operation
* DETACH supports all parameters in order to detach all devices
* include cleanup
* Logging should not depend on NDEBUG, for RaSCSI it is not peformance-critical
* INFO is default log level
* Exception renaming
* Updated GetPaddedName()
* Inheritance update
* Added BlockDevice class
* Removed unused code
* Updated typedefs
* Revert "Updated typedefs"
This reverts commit 546b46215a4d9b65067a11698e59ab1123cc6d64.
* Removed unused code
* Fixed warnign
* Use standard C++ integer types, use streams to resolve printf data type issues
* Added TODOs
* Added TODO
* Renaming
* Added TODO
* Added TODO
* Improved dry-run
* Code cleanup
* Updated handling of unknown options, code review and cleanup
* Manpage update
* Added PrimaryDevice
* Include cleanup
* Added pure virtual methods
* Comment updates
* Split rasutil
* Replaced some occurrences of BOOL
* Removed obsolete RASCSI definition in xm6.h
* Removed unused code, updated TODOs, replaced BOOL
* Added capacity check (issue #192)
* Fixed (most likely) https://github.com/akuker/RASCSI/issues/191
* Fixed wrong error messages
* For root the default image folder is /home/pi/images, updated error handling
* Dynaport code review
* Improved error handling
* Implemented READ CAPACITY(16)
* Comment update
* Commands can be 16 bytes long
* Implemented READ/WRITE/VERIFY(16)
* Comment update
* Renamed method to reflect the name of the respective SCSI command
* Do not created devices during dryRun
* Fixed padding of SCSIHD_APPLE vendor and product
* Initial implementation
* Updated ReportLuns
* Byte count update
* Fixed typo
* Finalized REPORT LUNS
* Removed TODO
* Updated TODO
* TODO update
* Updated device factory
* Comment update
* 64 bit update, tested on Ubuntu 64 bit system
* Removed assertion
* SCSI hard disks always have Apple specific mode pages (resolves issue #193)
* Error messsage update, 64 bit cleanup
* Reduced streams usage
* Updated handling of device flags
* MOs are protectable
* Removed duplicate error code handling
* Removed duplicate code
* Fixed CmdReadToc buffer overflow (https://github.com/akuker/RASCSI/issues/194)
* Added naive implementation of GET EVENT STATUS NOTIFICATION to avoid wranings
* HD must set removable device bit if the media is removable
* Removed duplicate logging
* Updated daynaport additional length
* Removed broken daynaport REQUEST SENSE. Successfully tested with my Mac.
* EnableInterface should not always return TRUE
* Updated Inquiry
* Updated LUN handling
* Replaced incorrect free by delete
* Updated comments and write-protection handling
* Made default HD name consistent
* STATUS_NOERROR is default
* Fixed Eject
* More eject handling updates
* Manpage updates
* Logging update
* Changed debug level
* Logging update
* Log capacity of all media types
* Logging update
* Encapsulated disk.blocks
* Encapsulated sector size
* Added overrides
* Added more overrides
* Fixed error message
* Fixed typos
* Fixed logging
* Added logging
* Use PrimaryDevice when calling Inquiry
* Comment update
* Changed default buffer size for testing
* Reverted last change
* Removed debug output
* De-inlined methods because optimized code did not work with them inlined
* Web interface can attach Daynaport again
* Improved handling of read-only hard disks
* Fixed issue with "all" semantics of DETACH
* rasctl supports adding removable media devices without providing a filename
* Removed unused flag in PbDeviceDefinition
* Updated rasctl output for ecjected media (resolves issue #199)
* Validate default folder name when changing default folder
2021-08-21 21:45:30 +00:00
|
|
|
|
case eCmdRead16:
|
2020-08-28 14:18:02 +00:00
|
|
|
|
// Read from disk
|
2022-02-10 18:54:48 +00:00
|
|
|
|
ctrl.length = ((Disk *)ctrl.unit[lun])->Read(ctrl.cmd, buf, ctrl.next);
|
2020-08-28 14:18:02 +00:00
|
|
|
|
ctrl.next++;
|
|
|
|
|
|
|
|
|
|
// If there is an error, go to the status phase
|
|
|
|
|
if (ctrl.length <= 0) {
|
|
|
|
|
// Cancel data-in
|
Configurable block size, controller/device cleanup, dispatchers per device, bridge setup (#203)
* Use foreach
* Renaming
* Revert "Renaming"
This reverts commit b0554b9c0a052e282625a4565d429313af2b3cc7.
* Manpage updates
* Removed obsolete assertions
* Replaced QWORD by uint64_t and removed respective typedef
* Removed LPCSTR typedef
* Removed LPCTSTR typedef
* Removed LPTSTR typedef
* Renamed SCSI command interface classes
* Renamed xm6.h to rascsi.h
* Moved interface classes to new interfaces subfolder
* Added include
* Fixed compilation issues of 64 bit Ubuntu
* Renaming
* Sort block sizes
* protobuf interface description update
* Fixed handling for sector size for non-disk devices
* Fixed typo
* Fixed comment
* Translate code commends into English, removing redundant ones (#214)
* Comment update
* For other bridge interfaces than eth0 IP address and netmask can be provided
* Added special rule for testing on x86 PCs
* Translated code comments into English, removing some redundant ones in the process, plus fixing typos (#215)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* Comment update
* Removed unused typedefs
* Added special rule for testing on x86 PCs
* Comment update
* Comment update
* Updated capacity calculation
* Updated protobuf interface to signal parameter support
* Simplified protobuf interface
* Updated rasctl server info output
* Updated logging
* protobuf interface has to return block only if it is configurable
* Updated block size handling
* Improved error message if ID is already in use
* Removed typedef
* Renamed protobuf interface method
* Renaming
* Use protobuf::Messsge instead of protobuf::MessageLite
* default_image_folder cannot be an empty string, removed obsolete check
* Logging update
* Made some error messages more concise
* Removed magic constant
* Updated error message
* Comment update
* Names of removable media drives must be constant and not contain the capacity
* Improved DeviceFactory error handling
* More error handing improvements
* Interface comment update
* Pass interface list to ctapdriver when creating bridge
* Moved initialization code
* Updated rasctl server information output
* Improved handling of MO capacities
* Renaming
* Comment update
* Reject inserting a medium when there is already a medium present (eject first)
* Save list of files in use before dry-run
* Updated rasctl server info message
* Comment update
* Fixed typo
* Cleaned list handling
* Sort devices list by ID *and unit*
* Improved block size check
* Fixed issue with missing method in old Raspberry Pi OS protobuf implementation
* Updated error message
* Improve and fix bugs with saving&loading configuration files for rascsi-web (#218)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Removed unused structures, code and type cleanup
* Use unscoped enums for commands
* SASI Format opcode is 0x06, not 0x04 (see comment in code)
* Removed duplicate command
* Code review, data type updates
* Data type updated, use #pragma once
* Logging update
* Renaming
* Renaming
* Removed duplicate code
* Renaming
* Refactoring
* Removed TODO
* Updated logging
* Comment update
* Comment update
* Updated GetEventStatusNotification
* Removed goto
* Options -h and -v do not require to be the root user (fixes issue #166)
* Updated error messages and exception handling
* Added number of supported LUNs to protobuf interface
* Updated list handling of protobuf interface
* Comment update
* Improved error handling
* Added missing return statement
* Allow empty device list
* Fixed unnecessary detach_all() when config file isn't read (#221)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Protecting/unprotecing a non-ready medium is considered not possible
* Updated error message
* Extract detaching all devices, add parameter list support
* Comment update
* Fixed typos
* Restore files in use if dry-run fails
* Feature configurable reserved id for rascsi-web (#223)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make the reserved SCSI id configurable through an argument to start.sh; make the rascsi-web service reserve 7 by default to maintain current behavior.
* Make it possible to reserve multiple scsi ids in the web ui
* Added support for reserved IDs
* rasctl output update
* Re-ordered logging
* Logging update
* Make use of the newly introduced 'rasctl -r' to have the webui reserve ids on the backend side upon startup (#224)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Updated string to integer conversions
* Improved string to integer conversion
* Move string to integer conversion to rasutil
* Removed unused variable
* Fixed detach, which did not remove the filename from the filenames set
* Re-added folder to gitignore
* Set/Display patch version
* Fix issue where reserved ids were not reserved again when restarting rascsi-service from within the web ui (#226)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Make sure reserved SCSI IDs gets reserved again when restarting rascsi-service from within the web ui
* Updated interface comment
* Accept daynaport as legacy type
* Fixed typo
* Remove file from the list of files in use when ejected with a SCSI command
* Check for attached device for INSERT, EJECT, PROTECT, UNPROTECT
* Fixed error handling
* Fixed filepath handling
* Added more device shortcuts to rasctl
* Fixed function declaration
* Extraced ATTACH and DETACH
* Extracted INSERT
* Simplified ProcessCmd
* Comment update
* Fixed memory leak
* Log information on whether a new device is protected or read-only
* Updated errro message
* Updated error message
* Initialize private fields
* Updated rasctl help message
* Added DEVICE_INFO to protobuf interface
* Improved error handling
* DEVICE_INFO supports device list
* Updated server info handling
* Unified result handling with oneof, all commands now return PbResult
* A result can always return a message string
* Fixed typo
* Simplified sending of commands
* Improved error handling
* Removed unused code
* Updated error handling
* Code cleanup
* Comment update
* Updated logging
* Updated error handling
* Updated handling of removed status for devices without image file support
* Comment update
* Fixed typo
* Updated logging
* Updated parameter handling
* Updated setting default interfaces
* Revert "Updated setting default interfaces"
This reverts commit 210abc775d9a79dd0c631cf3877966a2923f4d5b.
* Revert "Updated parameter handling"
This reverts commit 35302addd59f5f5e1cc032888ba32dcbb426a846.
* rascsi supports reserving IDs
* Updated help message
* Replaced BOOL by bool
* Logging update
* Logging update
* Added default parameters to device properties
* Return parameters a device was set up with
* Improved device initialization
* Updated default parameter handling
* Updated default parameter handling
* Fixed typo
* Comment updates
* Comment update
* Manage default parameters in the respective device
* Do not pass empty parameter string
* Added supports_params flag
* Made comparisons more consistent
* Updated error handling
* Updated exception handling
* Renaming
* Comment update
* NEC sectors size must be 512 bytes
* Updated logging
* Updated vendor name handling
* Updated handling of media loading/unloading
* Added stoppable property and stopped status
* Made MO stoppable
* Removed duplicate code
* Removed duplicate code
* Copy read-only property
* Renaming
* Removed duplicate code, added START/STOP
* Improved default parameter handling
* Updated load/eject handling
* Logging update
* Fixed typo
* Verified START/STOP UNIT
* Updated logging
* Updated status handling
* Updated status handling
* More status handling updates
* Logging update
* Made instance fields local variables
* Made disk_t private
* Made some data structures private
* Fixed ARM compile issue
* Fixed ctapdriver initialization issue
* Reset read-only status when opening an image file
* Made logging more consistent
* Updated log level
* Log load/eject on error level for testing
* Revert "Log load/eject on error level for testing"
This reverts commit d35a15ea8e520517d25e1e1054ad1aeda9f85f2e.
* Assume drive is not ready after having been stopped
* Updated status handling
* Fixed typo
* Rebuild manpage
* Fixed issue #234 (MODE SENSE (10) returns wrong mode parameter header)
* Removed unused code
* Enum data type update
* Removed duplicate range check
* Removed duplicate code
* Removed more duplicate code
* Logging update
* SCCD sector size was not meant to be configurable
* Updated configurable sector size properties
* Removed assertion
* Improved error handling
* Updated error handling
* Re-added special error handling only relevant for SASI
* Added TODOs
* Comment update
* Added override modifier
* Removed obsolete debug flag (related code was not called)
* Comment and logging updates
* Removed obsolete try/catch
* Revert "Removed obsolete try/catch"
This reverts commit 39ca12d8b153c706316ce79f4fec65c9abc60024.
* Comment update
* Removed duplicate code
* Updated error messages, use more foreach loops
* Updated logging
* Logging update
* README update
* Added block_count
* Evaluate block size when inserting a media
* rasctl display capacity if available
* Info message update
* Added missing product name to NEC vital product data
* MO block size depends on capacity only
* Extended property/status display
* Property display update
* Updated error handling
* (Doc only changes) Fix typos and add clarification that SASI is used on Unix workstations
Co-authored-by: Daniel Markstedt <markstedt@gmail.com>
Co-authored-by: Tony Kuker <akuker@gmail.com>
2021-09-15 01:23:04 +00:00
|
|
|
|
return false;
|
2020-08-28 14:18:02 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// If things are normal, work setting
|
|
|
|
|
ctrl.offset = 0;
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
// Other (impossible)
|
|
|
|
|
default:
|
|
|
|
|
ASSERT(FALSE);
|
Configurable block size, controller/device cleanup, dispatchers per device, bridge setup (#203)
* Use foreach
* Renaming
* Revert "Renaming"
This reverts commit b0554b9c0a052e282625a4565d429313af2b3cc7.
* Manpage updates
* Removed obsolete assertions
* Replaced QWORD by uint64_t and removed respective typedef
* Removed LPCSTR typedef
* Removed LPCTSTR typedef
* Removed LPTSTR typedef
* Renamed SCSI command interface classes
* Renamed xm6.h to rascsi.h
* Moved interface classes to new interfaces subfolder
* Added include
* Fixed compilation issues of 64 bit Ubuntu
* Renaming
* Sort block sizes
* protobuf interface description update
* Fixed handling for sector size for non-disk devices
* Fixed typo
* Fixed comment
* Translate code commends into English, removing redundant ones (#214)
* Comment update
* For other bridge interfaces than eth0 IP address and netmask can be provided
* Added special rule for testing on x86 PCs
* Translated code comments into English, removing some redundant ones in the process, plus fixing typos (#215)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* Comment update
* Removed unused typedefs
* Added special rule for testing on x86 PCs
* Comment update
* Comment update
* Updated capacity calculation
* Updated protobuf interface to signal parameter support
* Simplified protobuf interface
* Updated rasctl server info output
* Updated logging
* protobuf interface has to return block only if it is configurable
* Updated block size handling
* Improved error message if ID is already in use
* Removed typedef
* Renamed protobuf interface method
* Renaming
* Use protobuf::Messsge instead of protobuf::MessageLite
* default_image_folder cannot be an empty string, removed obsolete check
* Logging update
* Made some error messages more concise
* Removed magic constant
* Updated error message
* Comment update
* Names of removable media drives must be constant and not contain the capacity
* Improved DeviceFactory error handling
* More error handing improvements
* Interface comment update
* Pass interface list to ctapdriver when creating bridge
* Moved initialization code
* Updated rasctl server information output
* Improved handling of MO capacities
* Renaming
* Comment update
* Reject inserting a medium when there is already a medium present (eject first)
* Save list of files in use before dry-run
* Updated rasctl server info message
* Comment update
* Fixed typo
* Cleaned list handling
* Sort devices list by ID *and unit*
* Improved block size check
* Fixed issue with missing method in old Raspberry Pi OS protobuf implementation
* Updated error message
* Improve and fix bugs with saving&loading configuration files for rascsi-web (#218)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Removed unused structures, code and type cleanup
* Use unscoped enums for commands
* SASI Format opcode is 0x06, not 0x04 (see comment in code)
* Removed duplicate command
* Code review, data type updates
* Data type updated, use #pragma once
* Logging update
* Renaming
* Renaming
* Removed duplicate code
* Renaming
* Refactoring
* Removed TODO
* Updated logging
* Comment update
* Comment update
* Updated GetEventStatusNotification
* Removed goto
* Options -h and -v do not require to be the root user (fixes issue #166)
* Updated error messages and exception handling
* Added number of supported LUNs to protobuf interface
* Updated list handling of protobuf interface
* Comment update
* Improved error handling
* Added missing return statement
* Allow empty device list
* Fixed unnecessary detach_all() when config file isn't read (#221)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Protecting/unprotecing a non-ready medium is considered not possible
* Updated error message
* Extract detaching all devices, add parameter list support
* Comment update
* Fixed typos
* Restore files in use if dry-run fails
* Feature configurable reserved id for rascsi-web (#223)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make the reserved SCSI id configurable through an argument to start.sh; make the rascsi-web service reserve 7 by default to maintain current behavior.
* Make it possible to reserve multiple scsi ids in the web ui
* Added support for reserved IDs
* rasctl output update
* Re-ordered logging
* Logging update
* Make use of the newly introduced 'rasctl -r' to have the webui reserve ids on the backend side upon startup (#224)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Updated string to integer conversions
* Improved string to integer conversion
* Move string to integer conversion to rasutil
* Removed unused variable
* Fixed detach, which did not remove the filename from the filenames set
* Re-added folder to gitignore
* Set/Display patch version
* Fix issue where reserved ids were not reserved again when restarting rascsi-service from within the web ui (#226)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Make sure reserved SCSI IDs gets reserved again when restarting rascsi-service from within the web ui
* Updated interface comment
* Accept daynaport as legacy type
* Fixed typo
* Remove file from the list of files in use when ejected with a SCSI command
* Check for attached device for INSERT, EJECT, PROTECT, UNPROTECT
* Fixed error handling
* Fixed filepath handling
* Added more device shortcuts to rasctl
* Fixed function declaration
* Extraced ATTACH and DETACH
* Extracted INSERT
* Simplified ProcessCmd
* Comment update
* Fixed memory leak
* Log information on whether a new device is protected or read-only
* Updated errro message
* Updated error message
* Initialize private fields
* Updated rasctl help message
* Added DEVICE_INFO to protobuf interface
* Improved error handling
* DEVICE_INFO supports device list
* Updated server info handling
* Unified result handling with oneof, all commands now return PbResult
* A result can always return a message string
* Fixed typo
* Simplified sending of commands
* Improved error handling
* Removed unused code
* Updated error handling
* Code cleanup
* Comment update
* Updated logging
* Updated error handling
* Updated handling of removed status for devices without image file support
* Comment update
* Fixed typo
* Updated logging
* Updated parameter handling
* Updated setting default interfaces
* Revert "Updated setting default interfaces"
This reverts commit 210abc775d9a79dd0c631cf3877966a2923f4d5b.
* Revert "Updated parameter handling"
This reverts commit 35302addd59f5f5e1cc032888ba32dcbb426a846.
* rascsi supports reserving IDs
* Updated help message
* Replaced BOOL by bool
* Logging update
* Logging update
* Added default parameters to device properties
* Return parameters a device was set up with
* Improved device initialization
* Updated default parameter handling
* Updated default parameter handling
* Fixed typo
* Comment updates
* Comment update
* Manage default parameters in the respective device
* Do not pass empty parameter string
* Added supports_params flag
* Made comparisons more consistent
* Updated error handling
* Updated exception handling
* Renaming
* Comment update
* NEC sectors size must be 512 bytes
* Updated logging
* Updated vendor name handling
* Updated handling of media loading/unloading
* Added stoppable property and stopped status
* Made MO stoppable
* Removed duplicate code
* Removed duplicate code
* Copy read-only property
* Renaming
* Removed duplicate code, added START/STOP
* Improved default parameter handling
* Updated load/eject handling
* Logging update
* Fixed typo
* Verified START/STOP UNIT
* Updated logging
* Updated status handling
* Updated status handling
* More status handling updates
* Logging update
* Made instance fields local variables
* Made disk_t private
* Made some data structures private
* Fixed ARM compile issue
* Fixed ctapdriver initialization issue
* Reset read-only status when opening an image file
* Made logging more consistent
* Updated log level
* Log load/eject on error level for testing
* Revert "Log load/eject on error level for testing"
This reverts commit d35a15ea8e520517d25e1e1054ad1aeda9f85f2e.
* Assume drive is not ready after having been stopped
* Updated status handling
* Fixed typo
* Rebuild manpage
* Fixed issue #234 (MODE SENSE (10) returns wrong mode parameter header)
* Removed unused code
* Enum data type update
* Removed duplicate range check
* Removed duplicate code
* Removed more duplicate code
* Logging update
* SCCD sector size was not meant to be configurable
* Updated configurable sector size properties
* Removed assertion
* Improved error handling
* Updated error handling
* Re-added special error handling only relevant for SASI
* Added TODOs
* Comment update
* Added override modifier
* Removed obsolete debug flag (related code was not called)
* Comment and logging updates
* Removed obsolete try/catch
* Revert "Removed obsolete try/catch"
This reverts commit 39ca12d8b153c706316ce79f4fec65c9abc60024.
* Comment update
* Removed duplicate code
* Updated error messages, use more foreach loops
* Updated logging
* Logging update
* README update
* Added block_count
* Evaluate block size when inserting a media
* rasctl display capacity if available
* Info message update
* Added missing product name to NEC vital product data
* MO block size depends on capacity only
* Extended property/status display
* Property display update
* Updated error handling
* (Doc only changes) Fix typos and add clarification that SASI is used on Unix workstations
Co-authored-by: Daniel Markstedt <markstedt@gmail.com>
Co-authored-by: Tony Kuker <akuker@gmail.com>
2021-09-15 01:23:04 +00:00
|
|
|
|
return false;
|
2020-08-28 14:18:02 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Succeeded in setting the buffer
|
Configurable block size, controller/device cleanup, dispatchers per device, bridge setup (#203)
* Use foreach
* Renaming
* Revert "Renaming"
This reverts commit b0554b9c0a052e282625a4565d429313af2b3cc7.
* Manpage updates
* Removed obsolete assertions
* Replaced QWORD by uint64_t and removed respective typedef
* Removed LPCSTR typedef
* Removed LPCTSTR typedef
* Removed LPTSTR typedef
* Renamed SCSI command interface classes
* Renamed xm6.h to rascsi.h
* Moved interface classes to new interfaces subfolder
* Added include
* Fixed compilation issues of 64 bit Ubuntu
* Renaming
* Sort block sizes
* protobuf interface description update
* Fixed handling for sector size for non-disk devices
* Fixed typo
* Fixed comment
* Translate code commends into English, removing redundant ones (#214)
* Comment update
* For other bridge interfaces than eth0 IP address and netmask can be provided
* Added special rule for testing on x86 PCs
* Translated code comments into English, removing some redundant ones in the process, plus fixing typos (#215)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* Comment update
* Removed unused typedefs
* Added special rule for testing on x86 PCs
* Comment update
* Comment update
* Updated capacity calculation
* Updated protobuf interface to signal parameter support
* Simplified protobuf interface
* Updated rasctl server info output
* Updated logging
* protobuf interface has to return block only if it is configurable
* Updated block size handling
* Improved error message if ID is already in use
* Removed typedef
* Renamed protobuf interface method
* Renaming
* Use protobuf::Messsge instead of protobuf::MessageLite
* default_image_folder cannot be an empty string, removed obsolete check
* Logging update
* Made some error messages more concise
* Removed magic constant
* Updated error message
* Comment update
* Names of removable media drives must be constant and not contain the capacity
* Improved DeviceFactory error handling
* More error handing improvements
* Interface comment update
* Pass interface list to ctapdriver when creating bridge
* Moved initialization code
* Updated rasctl server information output
* Improved handling of MO capacities
* Renaming
* Comment update
* Reject inserting a medium when there is already a medium present (eject first)
* Save list of files in use before dry-run
* Updated rasctl server info message
* Comment update
* Fixed typo
* Cleaned list handling
* Sort devices list by ID *and unit*
* Improved block size check
* Fixed issue with missing method in old Raspberry Pi OS protobuf implementation
* Updated error message
* Improve and fix bugs with saving&loading configuration files for rascsi-web (#218)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Removed unused structures, code and type cleanup
* Use unscoped enums for commands
* SASI Format opcode is 0x06, not 0x04 (see comment in code)
* Removed duplicate command
* Code review, data type updates
* Data type updated, use #pragma once
* Logging update
* Renaming
* Renaming
* Removed duplicate code
* Renaming
* Refactoring
* Removed TODO
* Updated logging
* Comment update
* Comment update
* Updated GetEventStatusNotification
* Removed goto
* Options -h and -v do not require to be the root user (fixes issue #166)
* Updated error messages and exception handling
* Added number of supported LUNs to protobuf interface
* Updated list handling of protobuf interface
* Comment update
* Improved error handling
* Added missing return statement
* Allow empty device list
* Fixed unnecessary detach_all() when config file isn't read (#221)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Protecting/unprotecing a non-ready medium is considered not possible
* Updated error message
* Extract detaching all devices, add parameter list support
* Comment update
* Fixed typos
* Restore files in use if dry-run fails
* Feature configurable reserved id for rascsi-web (#223)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make the reserved SCSI id configurable through an argument to start.sh; make the rascsi-web service reserve 7 by default to maintain current behavior.
* Make it possible to reserve multiple scsi ids in the web ui
* Added support for reserved IDs
* rasctl output update
* Re-ordered logging
* Logging update
* Make use of the newly introduced 'rasctl -r' to have the webui reserve ids on the backend side upon startup (#224)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Updated string to integer conversions
* Improved string to integer conversion
* Move string to integer conversion to rasutil
* Removed unused variable
* Fixed detach, which did not remove the filename from the filenames set
* Re-added folder to gitignore
* Set/Display patch version
* Fix issue where reserved ids were not reserved again when restarting rascsi-service from within the web ui (#226)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Make sure reserved SCSI IDs gets reserved again when restarting rascsi-service from within the web ui
* Updated interface comment
* Accept daynaport as legacy type
* Fixed typo
* Remove file from the list of files in use when ejected with a SCSI command
* Check for attached device for INSERT, EJECT, PROTECT, UNPROTECT
* Fixed error handling
* Fixed filepath handling
* Added more device shortcuts to rasctl
* Fixed function declaration
* Extraced ATTACH and DETACH
* Extracted INSERT
* Simplified ProcessCmd
* Comment update
* Fixed memory leak
* Log information on whether a new device is protected or read-only
* Updated errro message
* Updated error message
* Initialize private fields
* Updated rasctl help message
* Added DEVICE_INFO to protobuf interface
* Improved error handling
* DEVICE_INFO supports device list
* Updated server info handling
* Unified result handling with oneof, all commands now return PbResult
* A result can always return a message string
* Fixed typo
* Simplified sending of commands
* Improved error handling
* Removed unused code
* Updated error handling
* Code cleanup
* Comment update
* Updated logging
* Updated error handling
* Updated handling of removed status for devices without image file support
* Comment update
* Fixed typo
* Updated logging
* Updated parameter handling
* Updated setting default interfaces
* Revert "Updated setting default interfaces"
This reverts commit 210abc775d9a79dd0c631cf3877966a2923f4d5b.
* Revert "Updated parameter handling"
This reverts commit 35302addd59f5f5e1cc032888ba32dcbb426a846.
* rascsi supports reserving IDs
* Updated help message
* Replaced BOOL by bool
* Logging update
* Logging update
* Added default parameters to device properties
* Return parameters a device was set up with
* Improved device initialization
* Updated default parameter handling
* Updated default parameter handling
* Fixed typo
* Comment updates
* Comment update
* Manage default parameters in the respective device
* Do not pass empty parameter string
* Added supports_params flag
* Made comparisons more consistent
* Updated error handling
* Updated exception handling
* Renaming
* Comment update
* NEC sectors size must be 512 bytes
* Updated logging
* Updated vendor name handling
* Updated handling of media loading/unloading
* Added stoppable property and stopped status
* Made MO stoppable
* Removed duplicate code
* Removed duplicate code
* Copy read-only property
* Renaming
* Removed duplicate code, added START/STOP
* Improved default parameter handling
* Updated load/eject handling
* Logging update
* Fixed typo
* Verified START/STOP UNIT
* Updated logging
* Updated status handling
* Updated status handling
* More status handling updates
* Logging update
* Made instance fields local variables
* Made disk_t private
* Made some data structures private
* Fixed ARM compile issue
* Fixed ctapdriver initialization issue
* Reset read-only status when opening an image file
* Made logging more consistent
* Updated log level
* Log load/eject on error level for testing
* Revert "Log load/eject on error level for testing"
This reverts commit d35a15ea8e520517d25e1e1054ad1aeda9f85f2e.
* Assume drive is not ready after having been stopped
* Updated status handling
* Fixed typo
* Rebuild manpage
* Fixed issue #234 (MODE SENSE (10) returns wrong mode parameter header)
* Removed unused code
* Enum data type update
* Removed duplicate range check
* Removed duplicate code
* Removed more duplicate code
* Logging update
* SCCD sector size was not meant to be configurable
* Updated configurable sector size properties
* Removed assertion
* Improved error handling
* Updated error handling
* Re-added special error handling only relevant for SASI
* Added TODOs
* Comment update
* Added override modifier
* Removed obsolete debug flag (related code was not called)
* Comment and logging updates
* Removed obsolete try/catch
* Revert "Removed obsolete try/catch"
This reverts commit 39ca12d8b153c706316ce79f4fec65c9abc60024.
* Comment update
* Removed duplicate code
* Updated error messages, use more foreach loops
* Updated logging
* Logging update
* README update
* Added block_count
* Evaluate block size when inserting a media
* rasctl display capacity if available
* Info message update
* Added missing product name to NEC vital product data
* MO block size depends on capacity only
* Extended property/status display
* Property display update
* Updated error handling
* (Doc only changes) Fix typos and add clarification that SASI is used on Unix workstations
Co-authored-by: Daniel Markstedt <markstedt@gmail.com>
Co-authored-by: Tony Kuker <akuker@gmail.com>
2021-09-15 01:23:04 +00:00
|
|
|
|
return true;
|
2020-08-28 14:18:02 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
//
|
|
|
|
|
// Data transfer OUT
|
|
|
|
|
// *If cont=true, reset the offset and length
|
2022-02-17 02:04:42 +00:00
|
|
|
|
// TODO XferOut probably needs a dispatcher, in order to avoid subclassing Disk, i.e.
|
|
|
|
|
// just like the actual SCSI commands XferOut should be executed by the respective device
|
2020-08-28 14:18:02 +00:00
|
|
|
|
//
|
|
|
|
|
//---------------------------------------------------------------------------
|
Configurable block size, controller/device cleanup, dispatchers per device, bridge setup (#203)
* Use foreach
* Renaming
* Revert "Renaming"
This reverts commit b0554b9c0a052e282625a4565d429313af2b3cc7.
* Manpage updates
* Removed obsolete assertions
* Replaced QWORD by uint64_t and removed respective typedef
* Removed LPCSTR typedef
* Removed LPCTSTR typedef
* Removed LPTSTR typedef
* Renamed SCSI command interface classes
* Renamed xm6.h to rascsi.h
* Moved interface classes to new interfaces subfolder
* Added include
* Fixed compilation issues of 64 bit Ubuntu
* Renaming
* Sort block sizes
* protobuf interface description update
* Fixed handling for sector size for non-disk devices
* Fixed typo
* Fixed comment
* Translate code commends into English, removing redundant ones (#214)
* Comment update
* For other bridge interfaces than eth0 IP address and netmask can be provided
* Added special rule for testing on x86 PCs
* Translated code comments into English, removing some redundant ones in the process, plus fixing typos (#215)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* Comment update
* Removed unused typedefs
* Added special rule for testing on x86 PCs
* Comment update
* Comment update
* Updated capacity calculation
* Updated protobuf interface to signal parameter support
* Simplified protobuf interface
* Updated rasctl server info output
* Updated logging
* protobuf interface has to return block only if it is configurable
* Updated block size handling
* Improved error message if ID is already in use
* Removed typedef
* Renamed protobuf interface method
* Renaming
* Use protobuf::Messsge instead of protobuf::MessageLite
* default_image_folder cannot be an empty string, removed obsolete check
* Logging update
* Made some error messages more concise
* Removed magic constant
* Updated error message
* Comment update
* Names of removable media drives must be constant and not contain the capacity
* Improved DeviceFactory error handling
* More error handing improvements
* Interface comment update
* Pass interface list to ctapdriver when creating bridge
* Moved initialization code
* Updated rasctl server information output
* Improved handling of MO capacities
* Renaming
* Comment update
* Reject inserting a medium when there is already a medium present (eject first)
* Save list of files in use before dry-run
* Updated rasctl server info message
* Comment update
* Fixed typo
* Cleaned list handling
* Sort devices list by ID *and unit*
* Improved block size check
* Fixed issue with missing method in old Raspberry Pi OS protobuf implementation
* Updated error message
* Improve and fix bugs with saving&loading configuration files for rascsi-web (#218)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Removed unused structures, code and type cleanup
* Use unscoped enums for commands
* SASI Format opcode is 0x06, not 0x04 (see comment in code)
* Removed duplicate command
* Code review, data type updates
* Data type updated, use #pragma once
* Logging update
* Renaming
* Renaming
* Removed duplicate code
* Renaming
* Refactoring
* Removed TODO
* Updated logging
* Comment update
* Comment update
* Updated GetEventStatusNotification
* Removed goto
* Options -h and -v do not require to be the root user (fixes issue #166)
* Updated error messages and exception handling
* Added number of supported LUNs to protobuf interface
* Updated list handling of protobuf interface
* Comment update
* Improved error handling
* Added missing return statement
* Allow empty device list
* Fixed unnecessary detach_all() when config file isn't read (#221)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Protecting/unprotecing a non-ready medium is considered not possible
* Updated error message
* Extract detaching all devices, add parameter list support
* Comment update
* Fixed typos
* Restore files in use if dry-run fails
* Feature configurable reserved id for rascsi-web (#223)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make the reserved SCSI id configurable through an argument to start.sh; make the rascsi-web service reserve 7 by default to maintain current behavior.
* Make it possible to reserve multiple scsi ids in the web ui
* Added support for reserved IDs
* rasctl output update
* Re-ordered logging
* Logging update
* Make use of the newly introduced 'rasctl -r' to have the webui reserve ids on the backend side upon startup (#224)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Updated string to integer conversions
* Improved string to integer conversion
* Move string to integer conversion to rasutil
* Removed unused variable
* Fixed detach, which did not remove the filename from the filenames set
* Re-added folder to gitignore
* Set/Display patch version
* Fix issue where reserved ids were not reserved again when restarting rascsi-service from within the web ui (#226)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Make sure reserved SCSI IDs gets reserved again when restarting rascsi-service from within the web ui
* Updated interface comment
* Accept daynaport as legacy type
* Fixed typo
* Remove file from the list of files in use when ejected with a SCSI command
* Check for attached device for INSERT, EJECT, PROTECT, UNPROTECT
* Fixed error handling
* Fixed filepath handling
* Added more device shortcuts to rasctl
* Fixed function declaration
* Extraced ATTACH and DETACH
* Extracted INSERT
* Simplified ProcessCmd
* Comment update
* Fixed memory leak
* Log information on whether a new device is protected or read-only
* Updated errro message
* Updated error message
* Initialize private fields
* Updated rasctl help message
* Added DEVICE_INFO to protobuf interface
* Improved error handling
* DEVICE_INFO supports device list
* Updated server info handling
* Unified result handling with oneof, all commands now return PbResult
* A result can always return a message string
* Fixed typo
* Simplified sending of commands
* Improved error handling
* Removed unused code
* Updated error handling
* Code cleanup
* Comment update
* Updated logging
* Updated error handling
* Updated handling of removed status for devices without image file support
* Comment update
* Fixed typo
* Updated logging
* Updated parameter handling
* Updated setting default interfaces
* Revert "Updated setting default interfaces"
This reverts commit 210abc775d9a79dd0c631cf3877966a2923f4d5b.
* Revert "Updated parameter handling"
This reverts commit 35302addd59f5f5e1cc032888ba32dcbb426a846.
* rascsi supports reserving IDs
* Updated help message
* Replaced BOOL by bool
* Logging update
* Logging update
* Added default parameters to device properties
* Return parameters a device was set up with
* Improved device initialization
* Updated default parameter handling
* Updated default parameter handling
* Fixed typo
* Comment updates
* Comment update
* Manage default parameters in the respective device
* Do not pass empty parameter string
* Added supports_params flag
* Made comparisons more consistent
* Updated error handling
* Updated exception handling
* Renaming
* Comment update
* NEC sectors size must be 512 bytes
* Updated logging
* Updated vendor name handling
* Updated handling of media loading/unloading
* Added stoppable property and stopped status
* Made MO stoppable
* Removed duplicate code
* Removed duplicate code
* Copy read-only property
* Renaming
* Removed duplicate code, added START/STOP
* Improved default parameter handling
* Updated load/eject handling
* Logging update
* Fixed typo
* Verified START/STOP UNIT
* Updated logging
* Updated status handling
* Updated status handling
* More status handling updates
* Logging update
* Made instance fields local variables
* Made disk_t private
* Made some data structures private
* Fixed ARM compile issue
* Fixed ctapdriver initialization issue
* Reset read-only status when opening an image file
* Made logging more consistent
* Updated log level
* Log load/eject on error level for testing
* Revert "Log load/eject on error level for testing"
This reverts commit d35a15ea8e520517d25e1e1054ad1aeda9f85f2e.
* Assume drive is not ready after having been stopped
* Updated status handling
* Fixed typo
* Rebuild manpage
* Fixed issue #234 (MODE SENSE (10) returns wrong mode parameter header)
* Removed unused code
* Enum data type update
* Removed duplicate range check
* Removed duplicate code
* Removed more duplicate code
* Logging update
* SCCD sector size was not meant to be configurable
* Updated configurable sector size properties
* Removed assertion
* Improved error handling
* Updated error handling
* Re-added special error handling only relevant for SASI
* Added TODOs
* Comment update
* Added override modifier
* Removed obsolete debug flag (related code was not called)
* Comment and logging updates
* Removed obsolete try/catch
* Revert "Removed obsolete try/catch"
This reverts commit 39ca12d8b153c706316ce79f4fec65c9abc60024.
* Comment update
* Removed duplicate code
* Updated error messages, use more foreach loops
* Updated logging
* Logging update
* README update
* Added block_count
* Evaluate block size when inserting a media
* rasctl display capacity if available
* Info message update
* Added missing product name to NEC vital product data
* MO block size depends on capacity only
* Extended property/status display
* Property display update
* Updated error handling
* (Doc only changes) Fix typos and add clarification that SASI is used on Unix workstations
Co-authored-by: Daniel Markstedt <markstedt@gmail.com>
Co-authored-by: Tony Kuker <akuker@gmail.com>
2021-09-15 01:23:04 +00:00
|
|
|
|
bool SASIDEV::XferOut(bool cont)
|
2020-08-28 14:18:02 +00:00
|
|
|
|
{
|
|
|
|
|
ASSERT(ctrl.phase == BUS::dataout);
|
|
|
|
|
|
|
|
|
|
// Logical Unit
|
2021-10-13 09:03:31 +00:00
|
|
|
|
DWORD lun = GetEffectiveLun();
|
2020-08-28 14:18:02 +00:00
|
|
|
|
if (!ctrl.unit[lun]) {
|
Configurable block size, controller/device cleanup, dispatchers per device, bridge setup (#203)
* Use foreach
* Renaming
* Revert "Renaming"
This reverts commit b0554b9c0a052e282625a4565d429313af2b3cc7.
* Manpage updates
* Removed obsolete assertions
* Replaced QWORD by uint64_t and removed respective typedef
* Removed LPCSTR typedef
* Removed LPCTSTR typedef
* Removed LPTSTR typedef
* Renamed SCSI command interface classes
* Renamed xm6.h to rascsi.h
* Moved interface classes to new interfaces subfolder
* Added include
* Fixed compilation issues of 64 bit Ubuntu
* Renaming
* Sort block sizes
* protobuf interface description update
* Fixed handling for sector size for non-disk devices
* Fixed typo
* Fixed comment
* Translate code commends into English, removing redundant ones (#214)
* Comment update
* For other bridge interfaces than eth0 IP address and netmask can be provided
* Added special rule for testing on x86 PCs
* Translated code comments into English, removing some redundant ones in the process, plus fixing typos (#215)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* Comment update
* Removed unused typedefs
* Added special rule for testing on x86 PCs
* Comment update
* Comment update
* Updated capacity calculation
* Updated protobuf interface to signal parameter support
* Simplified protobuf interface
* Updated rasctl server info output
* Updated logging
* protobuf interface has to return block only if it is configurable
* Updated block size handling
* Improved error message if ID is already in use
* Removed typedef
* Renamed protobuf interface method
* Renaming
* Use protobuf::Messsge instead of protobuf::MessageLite
* default_image_folder cannot be an empty string, removed obsolete check
* Logging update
* Made some error messages more concise
* Removed magic constant
* Updated error message
* Comment update
* Names of removable media drives must be constant and not contain the capacity
* Improved DeviceFactory error handling
* More error handing improvements
* Interface comment update
* Pass interface list to ctapdriver when creating bridge
* Moved initialization code
* Updated rasctl server information output
* Improved handling of MO capacities
* Renaming
* Comment update
* Reject inserting a medium when there is already a medium present (eject first)
* Save list of files in use before dry-run
* Updated rasctl server info message
* Comment update
* Fixed typo
* Cleaned list handling
* Sort devices list by ID *and unit*
* Improved block size check
* Fixed issue with missing method in old Raspberry Pi OS protobuf implementation
* Updated error message
* Improve and fix bugs with saving&loading configuration files for rascsi-web (#218)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Removed unused structures, code and type cleanup
* Use unscoped enums for commands
* SASI Format opcode is 0x06, not 0x04 (see comment in code)
* Removed duplicate command
* Code review, data type updates
* Data type updated, use #pragma once
* Logging update
* Renaming
* Renaming
* Removed duplicate code
* Renaming
* Refactoring
* Removed TODO
* Updated logging
* Comment update
* Comment update
* Updated GetEventStatusNotification
* Removed goto
* Options -h and -v do not require to be the root user (fixes issue #166)
* Updated error messages and exception handling
* Added number of supported LUNs to protobuf interface
* Updated list handling of protobuf interface
* Comment update
* Improved error handling
* Added missing return statement
* Allow empty device list
* Fixed unnecessary detach_all() when config file isn't read (#221)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Protecting/unprotecing a non-ready medium is considered not possible
* Updated error message
* Extract detaching all devices, add parameter list support
* Comment update
* Fixed typos
* Restore files in use if dry-run fails
* Feature configurable reserved id for rascsi-web (#223)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make the reserved SCSI id configurable through an argument to start.sh; make the rascsi-web service reserve 7 by default to maintain current behavior.
* Make it possible to reserve multiple scsi ids in the web ui
* Added support for reserved IDs
* rasctl output update
* Re-ordered logging
* Logging update
* Make use of the newly introduced 'rasctl -r' to have the webui reserve ids on the backend side upon startup (#224)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Updated string to integer conversions
* Improved string to integer conversion
* Move string to integer conversion to rasutil
* Removed unused variable
* Fixed detach, which did not remove the filename from the filenames set
* Re-added folder to gitignore
* Set/Display patch version
* Fix issue where reserved ids were not reserved again when restarting rascsi-service from within the web ui (#226)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Make sure reserved SCSI IDs gets reserved again when restarting rascsi-service from within the web ui
* Updated interface comment
* Accept daynaport as legacy type
* Fixed typo
* Remove file from the list of files in use when ejected with a SCSI command
* Check for attached device for INSERT, EJECT, PROTECT, UNPROTECT
* Fixed error handling
* Fixed filepath handling
* Added more device shortcuts to rasctl
* Fixed function declaration
* Extraced ATTACH and DETACH
* Extracted INSERT
* Simplified ProcessCmd
* Comment update
* Fixed memory leak
* Log information on whether a new device is protected or read-only
* Updated errro message
* Updated error message
* Initialize private fields
* Updated rasctl help message
* Added DEVICE_INFO to protobuf interface
* Improved error handling
* DEVICE_INFO supports device list
* Updated server info handling
* Unified result handling with oneof, all commands now return PbResult
* A result can always return a message string
* Fixed typo
* Simplified sending of commands
* Improved error handling
* Removed unused code
* Updated error handling
* Code cleanup
* Comment update
* Updated logging
* Updated error handling
* Updated handling of removed status for devices without image file support
* Comment update
* Fixed typo
* Updated logging
* Updated parameter handling
* Updated setting default interfaces
* Revert "Updated setting default interfaces"
This reverts commit 210abc775d9a79dd0c631cf3877966a2923f4d5b.
* Revert "Updated parameter handling"
This reverts commit 35302addd59f5f5e1cc032888ba32dcbb426a846.
* rascsi supports reserving IDs
* Updated help message
* Replaced BOOL by bool
* Logging update
* Logging update
* Added default parameters to device properties
* Return parameters a device was set up with
* Improved device initialization
* Updated default parameter handling
* Updated default parameter handling
* Fixed typo
* Comment updates
* Comment update
* Manage default parameters in the respective device
* Do not pass empty parameter string
* Added supports_params flag
* Made comparisons more consistent
* Updated error handling
* Updated exception handling
* Renaming
* Comment update
* NEC sectors size must be 512 bytes
* Updated logging
* Updated vendor name handling
* Updated handling of media loading/unloading
* Added stoppable property and stopped status
* Made MO stoppable
* Removed duplicate code
* Removed duplicate code
* Copy read-only property
* Renaming
* Removed duplicate code, added START/STOP
* Improved default parameter handling
* Updated load/eject handling
* Logging update
* Fixed typo
* Verified START/STOP UNIT
* Updated logging
* Updated status handling
* Updated status handling
* More status handling updates
* Logging update
* Made instance fields local variables
* Made disk_t private
* Made some data structures private
* Fixed ARM compile issue
* Fixed ctapdriver initialization issue
* Reset read-only status when opening an image file
* Made logging more consistent
* Updated log level
* Log load/eject on error level for testing
* Revert "Log load/eject on error level for testing"
This reverts commit d35a15ea8e520517d25e1e1054ad1aeda9f85f2e.
* Assume drive is not ready after having been stopped
* Updated status handling
* Fixed typo
* Rebuild manpage
* Fixed issue #234 (MODE SENSE (10) returns wrong mode parameter header)
* Removed unused code
* Enum data type update
* Removed duplicate range check
* Removed duplicate code
* Removed more duplicate code
* Logging update
* SCCD sector size was not meant to be configurable
* Updated configurable sector size properties
* Removed assertion
* Improved error handling
* Updated error handling
* Re-added special error handling only relevant for SASI
* Added TODOs
* Comment update
* Added override modifier
* Removed obsolete debug flag (related code was not called)
* Comment and logging updates
* Removed obsolete try/catch
* Revert "Removed obsolete try/catch"
This reverts commit 39ca12d8b153c706316ce79f4fec65c9abc60024.
* Comment update
* Removed duplicate code
* Updated error messages, use more foreach loops
* Updated logging
* Logging update
* README update
* Added block_count
* Evaluate block size when inserting a media
* rasctl display capacity if available
* Info message update
* Added missing product name to NEC vital product data
* MO block size depends on capacity only
* Extended property/status display
* Property display update
* Updated error handling
* (Doc only changes) Fix typos and add clarification that SASI is used on Unix workstations
Co-authored-by: Daniel Markstedt <markstedt@gmail.com>
Co-authored-by: Tony Kuker <akuker@gmail.com>
2021-09-15 01:23:04 +00:00
|
|
|
|
return false;
|
2020-08-28 14:18:02 +00:00
|
|
|
|
}
|
2022-02-10 18:54:48 +00:00
|
|
|
|
Disk *device = (Disk *)ctrl.unit[lun];
|
2020-08-28 14:18:02 +00:00
|
|
|
|
|
Configurable block size, controller/device cleanup, dispatchers per device, bridge setup (#203)
* Use foreach
* Renaming
* Revert "Renaming"
This reverts commit b0554b9c0a052e282625a4565d429313af2b3cc7.
* Manpage updates
* Removed obsolete assertions
* Replaced QWORD by uint64_t and removed respective typedef
* Removed LPCSTR typedef
* Removed LPCTSTR typedef
* Removed LPTSTR typedef
* Renamed SCSI command interface classes
* Renamed xm6.h to rascsi.h
* Moved interface classes to new interfaces subfolder
* Added include
* Fixed compilation issues of 64 bit Ubuntu
* Renaming
* Sort block sizes
* protobuf interface description update
* Fixed handling for sector size for non-disk devices
* Fixed typo
* Fixed comment
* Translate code commends into English, removing redundant ones (#214)
* Comment update
* For other bridge interfaces than eth0 IP address and netmask can be provided
* Added special rule for testing on x86 PCs
* Translated code comments into English, removing some redundant ones in the process, plus fixing typos (#215)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* Comment update
* Removed unused typedefs
* Added special rule for testing on x86 PCs
* Comment update
* Comment update
* Updated capacity calculation
* Updated protobuf interface to signal parameter support
* Simplified protobuf interface
* Updated rasctl server info output
* Updated logging
* protobuf interface has to return block only if it is configurable
* Updated block size handling
* Improved error message if ID is already in use
* Removed typedef
* Renamed protobuf interface method
* Renaming
* Use protobuf::Messsge instead of protobuf::MessageLite
* default_image_folder cannot be an empty string, removed obsolete check
* Logging update
* Made some error messages more concise
* Removed magic constant
* Updated error message
* Comment update
* Names of removable media drives must be constant and not contain the capacity
* Improved DeviceFactory error handling
* More error handing improvements
* Interface comment update
* Pass interface list to ctapdriver when creating bridge
* Moved initialization code
* Updated rasctl server information output
* Improved handling of MO capacities
* Renaming
* Comment update
* Reject inserting a medium when there is already a medium present (eject first)
* Save list of files in use before dry-run
* Updated rasctl server info message
* Comment update
* Fixed typo
* Cleaned list handling
* Sort devices list by ID *and unit*
* Improved block size check
* Fixed issue with missing method in old Raspberry Pi OS protobuf implementation
* Updated error message
* Improve and fix bugs with saving&loading configuration files for rascsi-web (#218)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Removed unused structures, code and type cleanup
* Use unscoped enums for commands
* SASI Format opcode is 0x06, not 0x04 (see comment in code)
* Removed duplicate command
* Code review, data type updates
* Data type updated, use #pragma once
* Logging update
* Renaming
* Renaming
* Removed duplicate code
* Renaming
* Refactoring
* Removed TODO
* Updated logging
* Comment update
* Comment update
* Updated GetEventStatusNotification
* Removed goto
* Options -h and -v do not require to be the root user (fixes issue #166)
* Updated error messages and exception handling
* Added number of supported LUNs to protobuf interface
* Updated list handling of protobuf interface
* Comment update
* Improved error handling
* Added missing return statement
* Allow empty device list
* Fixed unnecessary detach_all() when config file isn't read (#221)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Protecting/unprotecing a non-ready medium is considered not possible
* Updated error message
* Extract detaching all devices, add parameter list support
* Comment update
* Fixed typos
* Restore files in use if dry-run fails
* Feature configurable reserved id for rascsi-web (#223)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make the reserved SCSI id configurable through an argument to start.sh; make the rascsi-web service reserve 7 by default to maintain current behavior.
* Make it possible to reserve multiple scsi ids in the web ui
* Added support for reserved IDs
* rasctl output update
* Re-ordered logging
* Logging update
* Make use of the newly introduced 'rasctl -r' to have the webui reserve ids on the backend side upon startup (#224)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Updated string to integer conversions
* Improved string to integer conversion
* Move string to integer conversion to rasutil
* Removed unused variable
* Fixed detach, which did not remove the filename from the filenames set
* Re-added folder to gitignore
* Set/Display patch version
* Fix issue where reserved ids were not reserved again when restarting rascsi-service from within the web ui (#226)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Make sure reserved SCSI IDs gets reserved again when restarting rascsi-service from within the web ui
* Updated interface comment
* Accept daynaport as legacy type
* Fixed typo
* Remove file from the list of files in use when ejected with a SCSI command
* Check for attached device for INSERT, EJECT, PROTECT, UNPROTECT
* Fixed error handling
* Fixed filepath handling
* Added more device shortcuts to rasctl
* Fixed function declaration
* Extraced ATTACH and DETACH
* Extracted INSERT
* Simplified ProcessCmd
* Comment update
* Fixed memory leak
* Log information on whether a new device is protected or read-only
* Updated errro message
* Updated error message
* Initialize private fields
* Updated rasctl help message
* Added DEVICE_INFO to protobuf interface
* Improved error handling
* DEVICE_INFO supports device list
* Updated server info handling
* Unified result handling with oneof, all commands now return PbResult
* A result can always return a message string
* Fixed typo
* Simplified sending of commands
* Improved error handling
* Removed unused code
* Updated error handling
* Code cleanup
* Comment update
* Updated logging
* Updated error handling
* Updated handling of removed status for devices without image file support
* Comment update
* Fixed typo
* Updated logging
* Updated parameter handling
* Updated setting default interfaces
* Revert "Updated setting default interfaces"
This reverts commit 210abc775d9a79dd0c631cf3877966a2923f4d5b.
* Revert "Updated parameter handling"
This reverts commit 35302addd59f5f5e1cc032888ba32dcbb426a846.
* rascsi supports reserving IDs
* Updated help message
* Replaced BOOL by bool
* Logging update
* Logging update
* Added default parameters to device properties
* Return parameters a device was set up with
* Improved device initialization
* Updated default parameter handling
* Updated default parameter handling
* Fixed typo
* Comment updates
* Comment update
* Manage default parameters in the respective device
* Do not pass empty parameter string
* Added supports_params flag
* Made comparisons more consistent
* Updated error handling
* Updated exception handling
* Renaming
* Comment update
* NEC sectors size must be 512 bytes
* Updated logging
* Updated vendor name handling
* Updated handling of media loading/unloading
* Added stoppable property and stopped status
* Made MO stoppable
* Removed duplicate code
* Removed duplicate code
* Copy read-only property
* Renaming
* Removed duplicate code, added START/STOP
* Improved default parameter handling
* Updated load/eject handling
* Logging update
* Fixed typo
* Verified START/STOP UNIT
* Updated logging
* Updated status handling
* Updated status handling
* More status handling updates
* Logging update
* Made instance fields local variables
* Made disk_t private
* Made some data structures private
* Fixed ARM compile issue
* Fixed ctapdriver initialization issue
* Reset read-only status when opening an image file
* Made logging more consistent
* Updated log level
* Log load/eject on error level for testing
* Revert "Log load/eject on error level for testing"
This reverts commit d35a15ea8e520517d25e1e1054ad1aeda9f85f2e.
* Assume drive is not ready after having been stopped
* Updated status handling
* Fixed typo
* Rebuild manpage
* Fixed issue #234 (MODE SENSE (10) returns wrong mode parameter header)
* Removed unused code
* Enum data type update
* Removed duplicate range check
* Removed duplicate code
* Removed more duplicate code
* Logging update
* SCCD sector size was not meant to be configurable
* Updated configurable sector size properties
* Removed assertion
* Improved error handling
* Updated error handling
* Re-added special error handling only relevant for SASI
* Added TODOs
* Comment update
* Added override modifier
* Removed obsolete debug flag (related code was not called)
* Comment and logging updates
* Removed obsolete try/catch
* Revert "Removed obsolete try/catch"
This reverts commit 39ca12d8b153c706316ce79f4fec65c9abc60024.
* Comment update
* Removed duplicate code
* Updated error messages, use more foreach loops
* Updated logging
* Logging update
* README update
* Added block_count
* Evaluate block size when inserting a media
* rasctl display capacity if available
* Info message update
* Added missing product name to NEC vital product data
* MO block size depends on capacity only
* Extended property/status display
* Property display update
* Updated error handling
* (Doc only changes) Fix typos and add clarification that SASI is used on Unix workstations
Co-authored-by: Daniel Markstedt <markstedt@gmail.com>
Co-authored-by: Tony Kuker <akuker@gmail.com>
2021-09-15 01:23:04 +00:00
|
|
|
|
switch (ctrl.cmd[0]) {
|
|
|
|
|
case SASIDEV::eCmdModeSelect6:
|
2021-07-05 00:50:24 +00:00
|
|
|
|
case SASIDEV::eCmdModeSelect10:
|
Configurable block size, controller/device cleanup, dispatchers per device, bridge setup (#203)
* Use foreach
* Renaming
* Revert "Renaming"
This reverts commit b0554b9c0a052e282625a4565d429313af2b3cc7.
* Manpage updates
* Removed obsolete assertions
* Replaced QWORD by uint64_t and removed respective typedef
* Removed LPCSTR typedef
* Removed LPCTSTR typedef
* Removed LPTSTR typedef
* Renamed SCSI command interface classes
* Renamed xm6.h to rascsi.h
* Moved interface classes to new interfaces subfolder
* Added include
* Fixed compilation issues of 64 bit Ubuntu
* Renaming
* Sort block sizes
* protobuf interface description update
* Fixed handling for sector size for non-disk devices
* Fixed typo
* Fixed comment
* Translate code commends into English, removing redundant ones (#214)
* Comment update
* For other bridge interfaces than eth0 IP address and netmask can be provided
* Added special rule for testing on x86 PCs
* Translated code comments into English, removing some redundant ones in the process, plus fixing typos (#215)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* Comment update
* Removed unused typedefs
* Added special rule for testing on x86 PCs
* Comment update
* Comment update
* Updated capacity calculation
* Updated protobuf interface to signal parameter support
* Simplified protobuf interface
* Updated rasctl server info output
* Updated logging
* protobuf interface has to return block only if it is configurable
* Updated block size handling
* Improved error message if ID is already in use
* Removed typedef
* Renamed protobuf interface method
* Renaming
* Use protobuf::Messsge instead of protobuf::MessageLite
* default_image_folder cannot be an empty string, removed obsolete check
* Logging update
* Made some error messages more concise
* Removed magic constant
* Updated error message
* Comment update
* Names of removable media drives must be constant and not contain the capacity
* Improved DeviceFactory error handling
* More error handing improvements
* Interface comment update
* Pass interface list to ctapdriver when creating bridge
* Moved initialization code
* Updated rasctl server information output
* Improved handling of MO capacities
* Renaming
* Comment update
* Reject inserting a medium when there is already a medium present (eject first)
* Save list of files in use before dry-run
* Updated rasctl server info message
* Comment update
* Fixed typo
* Cleaned list handling
* Sort devices list by ID *and unit*
* Improved block size check
* Fixed issue with missing method in old Raspberry Pi OS protobuf implementation
* Updated error message
* Improve and fix bugs with saving&loading configuration files for rascsi-web (#218)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Removed unused structures, code and type cleanup
* Use unscoped enums for commands
* SASI Format opcode is 0x06, not 0x04 (see comment in code)
* Removed duplicate command
* Code review, data type updates
* Data type updated, use #pragma once
* Logging update
* Renaming
* Renaming
* Removed duplicate code
* Renaming
* Refactoring
* Removed TODO
* Updated logging
* Comment update
* Comment update
* Updated GetEventStatusNotification
* Removed goto
* Options -h and -v do not require to be the root user (fixes issue #166)
* Updated error messages and exception handling
* Added number of supported LUNs to protobuf interface
* Updated list handling of protobuf interface
* Comment update
* Improved error handling
* Added missing return statement
* Allow empty device list
* Fixed unnecessary detach_all() when config file isn't read (#221)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Protecting/unprotecing a non-ready medium is considered not possible
* Updated error message
* Extract detaching all devices, add parameter list support
* Comment update
* Fixed typos
* Restore files in use if dry-run fails
* Feature configurable reserved id for rascsi-web (#223)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make the reserved SCSI id configurable through an argument to start.sh; make the rascsi-web service reserve 7 by default to maintain current behavior.
* Make it possible to reserve multiple scsi ids in the web ui
* Added support for reserved IDs
* rasctl output update
* Re-ordered logging
* Logging update
* Make use of the newly introduced 'rasctl -r' to have the webui reserve ids on the backend side upon startup (#224)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Updated string to integer conversions
* Improved string to integer conversion
* Move string to integer conversion to rasutil
* Removed unused variable
* Fixed detach, which did not remove the filename from the filenames set
* Re-added folder to gitignore
* Set/Display patch version
* Fix issue where reserved ids were not reserved again when restarting rascsi-service from within the web ui (#226)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Make sure reserved SCSI IDs gets reserved again when restarting rascsi-service from within the web ui
* Updated interface comment
* Accept daynaport as legacy type
* Fixed typo
* Remove file from the list of files in use when ejected with a SCSI command
* Check for attached device for INSERT, EJECT, PROTECT, UNPROTECT
* Fixed error handling
* Fixed filepath handling
* Added more device shortcuts to rasctl
* Fixed function declaration
* Extraced ATTACH and DETACH
* Extracted INSERT
* Simplified ProcessCmd
* Comment update
* Fixed memory leak
* Log information on whether a new device is protected or read-only
* Updated errro message
* Updated error message
* Initialize private fields
* Updated rasctl help message
* Added DEVICE_INFO to protobuf interface
* Improved error handling
* DEVICE_INFO supports device list
* Updated server info handling
* Unified result handling with oneof, all commands now return PbResult
* A result can always return a message string
* Fixed typo
* Simplified sending of commands
* Improved error handling
* Removed unused code
* Updated error handling
* Code cleanup
* Comment update
* Updated logging
* Updated error handling
* Updated handling of removed status for devices without image file support
* Comment update
* Fixed typo
* Updated logging
* Updated parameter handling
* Updated setting default interfaces
* Revert "Updated setting default interfaces"
This reverts commit 210abc775d9a79dd0c631cf3877966a2923f4d5b.
* Revert "Updated parameter handling"
This reverts commit 35302addd59f5f5e1cc032888ba32dcbb426a846.
* rascsi supports reserving IDs
* Updated help message
* Replaced BOOL by bool
* Logging update
* Logging update
* Added default parameters to device properties
* Return parameters a device was set up with
* Improved device initialization
* Updated default parameter handling
* Updated default parameter handling
* Fixed typo
* Comment updates
* Comment update
* Manage default parameters in the respective device
* Do not pass empty parameter string
* Added supports_params flag
* Made comparisons more consistent
* Updated error handling
* Updated exception handling
* Renaming
* Comment update
* NEC sectors size must be 512 bytes
* Updated logging
* Updated vendor name handling
* Updated handling of media loading/unloading
* Added stoppable property and stopped status
* Made MO stoppable
* Removed duplicate code
* Removed duplicate code
* Copy read-only property
* Renaming
* Removed duplicate code, added START/STOP
* Improved default parameter handling
* Updated load/eject handling
* Logging update
* Fixed typo
* Verified START/STOP UNIT
* Updated logging
* Updated status handling
* Updated status handling
* More status handling updates
* Logging update
* Made instance fields local variables
* Made disk_t private
* Made some data structures private
* Fixed ARM compile issue
* Fixed ctapdriver initialization issue
* Reset read-only status when opening an image file
* Made logging more consistent
* Updated log level
* Log load/eject on error level for testing
* Revert "Log load/eject on error level for testing"
This reverts commit d35a15ea8e520517d25e1e1054ad1aeda9f85f2e.
* Assume drive is not ready after having been stopped
* Updated status handling
* Fixed typo
* Rebuild manpage
* Fixed issue #234 (MODE SENSE (10) returns wrong mode parameter header)
* Removed unused code
* Enum data type update
* Removed duplicate range check
* Removed duplicate code
* Removed more duplicate code
* Logging update
* SCCD sector size was not meant to be configurable
* Updated configurable sector size properties
* Removed assertion
* Improved error handling
* Updated error handling
* Re-added special error handling only relevant for SASI
* Added TODOs
* Comment update
* Added override modifier
* Removed obsolete debug flag (related code was not called)
* Comment and logging updates
* Removed obsolete try/catch
* Revert "Removed obsolete try/catch"
This reverts commit 39ca12d8b153c706316ce79f4fec65c9abc60024.
* Comment update
* Removed duplicate code
* Updated error messages, use more foreach loops
* Updated logging
* Logging update
* README update
* Added block_count
* Evaluate block size when inserting a media
* rasctl display capacity if available
* Info message update
* Added missing product name to NEC vital product data
* MO block size depends on capacity only
* Extended property/status display
* Property display update
* Updated error handling
* (Doc only changes) Fix typos and add clarification that SASI is used on Unix workstations
Co-authored-by: Daniel Markstedt <markstedt@gmail.com>
Co-authored-by: Tony Kuker <akuker@gmail.com>
2021-09-15 01:23:04 +00:00
|
|
|
|
if (!device->ModeSelect(ctrl.cmd, ctrl.buffer, ctrl.offset)) {
|
2020-08-28 14:18:02 +00:00
|
|
|
|
// MODE SELECT failed
|
Configurable block size, controller/device cleanup, dispatchers per device, bridge setup (#203)
* Use foreach
* Renaming
* Revert "Renaming"
This reverts commit b0554b9c0a052e282625a4565d429313af2b3cc7.
* Manpage updates
* Removed obsolete assertions
* Replaced QWORD by uint64_t and removed respective typedef
* Removed LPCSTR typedef
* Removed LPCTSTR typedef
* Removed LPTSTR typedef
* Renamed SCSI command interface classes
* Renamed xm6.h to rascsi.h
* Moved interface classes to new interfaces subfolder
* Added include
* Fixed compilation issues of 64 bit Ubuntu
* Renaming
* Sort block sizes
* protobuf interface description update
* Fixed handling for sector size for non-disk devices
* Fixed typo
* Fixed comment
* Translate code commends into English, removing redundant ones (#214)
* Comment update
* For other bridge interfaces than eth0 IP address and netmask can be provided
* Added special rule for testing on x86 PCs
* Translated code comments into English, removing some redundant ones in the process, plus fixing typos (#215)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* Comment update
* Removed unused typedefs
* Added special rule for testing on x86 PCs
* Comment update
* Comment update
* Updated capacity calculation
* Updated protobuf interface to signal parameter support
* Simplified protobuf interface
* Updated rasctl server info output
* Updated logging
* protobuf interface has to return block only if it is configurable
* Updated block size handling
* Improved error message if ID is already in use
* Removed typedef
* Renamed protobuf interface method
* Renaming
* Use protobuf::Messsge instead of protobuf::MessageLite
* default_image_folder cannot be an empty string, removed obsolete check
* Logging update
* Made some error messages more concise
* Removed magic constant
* Updated error message
* Comment update
* Names of removable media drives must be constant and not contain the capacity
* Improved DeviceFactory error handling
* More error handing improvements
* Interface comment update
* Pass interface list to ctapdriver when creating bridge
* Moved initialization code
* Updated rasctl server information output
* Improved handling of MO capacities
* Renaming
* Comment update
* Reject inserting a medium when there is already a medium present (eject first)
* Save list of files in use before dry-run
* Updated rasctl server info message
* Comment update
* Fixed typo
* Cleaned list handling
* Sort devices list by ID *and unit*
* Improved block size check
* Fixed issue with missing method in old Raspberry Pi OS protobuf implementation
* Updated error message
* Improve and fix bugs with saving&loading configuration files for rascsi-web (#218)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Removed unused structures, code and type cleanup
* Use unscoped enums for commands
* SASI Format opcode is 0x06, not 0x04 (see comment in code)
* Removed duplicate command
* Code review, data type updates
* Data type updated, use #pragma once
* Logging update
* Renaming
* Renaming
* Removed duplicate code
* Renaming
* Refactoring
* Removed TODO
* Updated logging
* Comment update
* Comment update
* Updated GetEventStatusNotification
* Removed goto
* Options -h and -v do not require to be the root user (fixes issue #166)
* Updated error messages and exception handling
* Added number of supported LUNs to protobuf interface
* Updated list handling of protobuf interface
* Comment update
* Improved error handling
* Added missing return statement
* Allow empty device list
* Fixed unnecessary detach_all() when config file isn't read (#221)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Protecting/unprotecing a non-ready medium is considered not possible
* Updated error message
* Extract detaching all devices, add parameter list support
* Comment update
* Fixed typos
* Restore files in use if dry-run fails
* Feature configurable reserved id for rascsi-web (#223)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make the reserved SCSI id configurable through an argument to start.sh; make the rascsi-web service reserve 7 by default to maintain current behavior.
* Make it possible to reserve multiple scsi ids in the web ui
* Added support for reserved IDs
* rasctl output update
* Re-ordered logging
* Logging update
* Make use of the newly introduced 'rasctl -r' to have the webui reserve ids on the backend side upon startup (#224)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Updated string to integer conversions
* Improved string to integer conversion
* Move string to integer conversion to rasutil
* Removed unused variable
* Fixed detach, which did not remove the filename from the filenames set
* Re-added folder to gitignore
* Set/Display patch version
* Fix issue where reserved ids were not reserved again when restarting rascsi-service from within the web ui (#226)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Make sure reserved SCSI IDs gets reserved again when restarting rascsi-service from within the web ui
* Updated interface comment
* Accept daynaport as legacy type
* Fixed typo
* Remove file from the list of files in use when ejected with a SCSI command
* Check for attached device for INSERT, EJECT, PROTECT, UNPROTECT
* Fixed error handling
* Fixed filepath handling
* Added more device shortcuts to rasctl
* Fixed function declaration
* Extraced ATTACH and DETACH
* Extracted INSERT
* Simplified ProcessCmd
* Comment update
* Fixed memory leak
* Log information on whether a new device is protected or read-only
* Updated errro message
* Updated error message
* Initialize private fields
* Updated rasctl help message
* Added DEVICE_INFO to protobuf interface
* Improved error handling
* DEVICE_INFO supports device list
* Updated server info handling
* Unified result handling with oneof, all commands now return PbResult
* A result can always return a message string
* Fixed typo
* Simplified sending of commands
* Improved error handling
* Removed unused code
* Updated error handling
* Code cleanup
* Comment update
* Updated logging
* Updated error handling
* Updated handling of removed status for devices without image file support
* Comment update
* Fixed typo
* Updated logging
* Updated parameter handling
* Updated setting default interfaces
* Revert "Updated setting default interfaces"
This reverts commit 210abc775d9a79dd0c631cf3877966a2923f4d5b.
* Revert "Updated parameter handling"
This reverts commit 35302addd59f5f5e1cc032888ba32dcbb426a846.
* rascsi supports reserving IDs
* Updated help message
* Replaced BOOL by bool
* Logging update
* Logging update
* Added default parameters to device properties
* Return parameters a device was set up with
* Improved device initialization
* Updated default parameter handling
* Updated default parameter handling
* Fixed typo
* Comment updates
* Comment update
* Manage default parameters in the respective device
* Do not pass empty parameter string
* Added supports_params flag
* Made comparisons more consistent
* Updated error handling
* Updated exception handling
* Renaming
* Comment update
* NEC sectors size must be 512 bytes
* Updated logging
* Updated vendor name handling
* Updated handling of media loading/unloading
* Added stoppable property and stopped status
* Made MO stoppable
* Removed duplicate code
* Removed duplicate code
* Copy read-only property
* Renaming
* Removed duplicate code, added START/STOP
* Improved default parameter handling
* Updated load/eject handling
* Logging update
* Fixed typo
* Verified START/STOP UNIT
* Updated logging
* Updated status handling
* Updated status handling
* More status handling updates
* Logging update
* Made instance fields local variables
* Made disk_t private
* Made some data structures private
* Fixed ARM compile issue
* Fixed ctapdriver initialization issue
* Reset read-only status when opening an image file
* Made logging more consistent
* Updated log level
* Log load/eject on error level for testing
* Revert "Log load/eject on error level for testing"
This reverts commit d35a15ea8e520517d25e1e1054ad1aeda9f85f2e.
* Assume drive is not ready after having been stopped
* Updated status handling
* Fixed typo
* Rebuild manpage
* Fixed issue #234 (MODE SENSE (10) returns wrong mode parameter header)
* Removed unused code
* Enum data type update
* Removed duplicate range check
* Removed duplicate code
* Removed more duplicate code
* Logging update
* SCCD sector size was not meant to be configurable
* Updated configurable sector size properties
* Removed assertion
* Improved error handling
* Updated error handling
* Re-added special error handling only relevant for SASI
* Added TODOs
* Comment update
* Added override modifier
* Removed obsolete debug flag (related code was not called)
* Comment and logging updates
* Removed obsolete try/catch
* Revert "Removed obsolete try/catch"
This reverts commit 39ca12d8b153c706316ce79f4fec65c9abc60024.
* Comment update
* Removed duplicate code
* Updated error messages, use more foreach loops
* Updated logging
* Logging update
* README update
* Added block_count
* Evaluate block size when inserting a media
* rasctl display capacity if available
* Info message update
* Added missing product name to NEC vital product data
* MO block size depends on capacity only
* Extended property/status display
* Property display update
* Updated error handling
* (Doc only changes) Fix typos and add clarification that SASI is used on Unix workstations
Co-authored-by: Daniel Markstedt <markstedt@gmail.com>
Co-authored-by: Tony Kuker <akuker@gmail.com>
2021-09-15 01:23:04 +00:00
|
|
|
|
return false;
|
2020-08-28 14:18:02 +00:00
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
|
2021-07-05 00:50:24 +00:00
|
|
|
|
case SASIDEV::eCmdWrite6:
|
|
|
|
|
case SASIDEV::eCmdWrite10:
|
Refactoring, device handling extensions, additional settings, improved error handling, 64 bit OS support, fixed issues (#184)
* Device type unification, support of removable media
* Added support for .hdr extension
* Removable flag cleanup
* Manpage update
* Enriched PbOperation with PbDevice
* Added file size to PbImageFile
* Added device list support
* Set image_file
* Make remote interface more robust by ignoring SIGPIPE
* Return status only once
* Fixed typo
* Error handling update
* When starting rascsi parse everything before attaching devices
* Added dry run mode
* Comment update
* Updated logging
* Added Device base class, Disk class inherits from it
* Renaming
* Use vectors for controllers and disks, as preparation for using maps
* Updated file support handling
* Comment update
* DaynaPort and Bridge inherit from Device instead of Disk
* ProcessCmd() now works with devices instead of disks
* Renaming
* Added DeviceFactory
* Improved factory
* Comment update
* protected disk_t
* Code cleanup, added translations
* Device name can be set for rascsi
* rasctl can set device name
* Manpage update
* Manpage update
* Formatting update
* Check for missing name
* Initialize fd
* Initialize type
* Fixed string length issue
* Updated capacity formatting
* Fixed typo
* Split PbDevice into device and device definition
* Added TODO
* Renaming
* Renaming
* Device types can be explicitly specified with -t (no FILE:TYPE syntax anymore)
* Fixed compile-time issue
* Removed unused Append mode, updated read-only handling
* Type handling and manpage update
* Cleanup
* rasctl parser cleanup
* Review
* Constructor update
* Added .hdr (SCRM) support to web interface, tested web interface
* Default folder can be set remotely
* Removed deprecated operation
* DETACH supports all parameters in order to detach all devices
* include cleanup
* Logging should not depend on NDEBUG, for RaSCSI it is not peformance-critical
* INFO is default log level
* Exception renaming
* Updated GetPaddedName()
* Inheritance update
* Added BlockDevice class
* Removed unused code
* Updated typedefs
* Revert "Updated typedefs"
This reverts commit 546b46215a4d9b65067a11698e59ab1123cc6d64.
* Removed unused code
* Fixed warnign
* Use standard C++ integer types, use streams to resolve printf data type issues
* Added TODOs
* Added TODO
* Renaming
* Added TODO
* Added TODO
* Improved dry-run
* Code cleanup
* Updated handling of unknown options, code review and cleanup
* Manpage update
* Added PrimaryDevice
* Include cleanup
* Added pure virtual methods
* Comment updates
* Split rasutil
* Replaced some occurrences of BOOL
* Removed obsolete RASCSI definition in xm6.h
* Removed unused code, updated TODOs, replaced BOOL
* Added capacity check (issue #192)
* Fixed (most likely) https://github.com/akuker/RASCSI/issues/191
* Fixed wrong error messages
* For root the default image folder is /home/pi/images, updated error handling
* Dynaport code review
* Improved error handling
* Implemented READ CAPACITY(16)
* Comment update
* Commands can be 16 bytes long
* Implemented READ/WRITE/VERIFY(16)
* Comment update
* Renamed method to reflect the name of the respective SCSI command
* Do not created devices during dryRun
* Fixed padding of SCSIHD_APPLE vendor and product
* Initial implementation
* Updated ReportLuns
* Byte count update
* Fixed typo
* Finalized REPORT LUNS
* Removed TODO
* Updated TODO
* TODO update
* Updated device factory
* Comment update
* 64 bit update, tested on Ubuntu 64 bit system
* Removed assertion
* SCSI hard disks always have Apple specific mode pages (resolves issue #193)
* Error messsage update, 64 bit cleanup
* Reduced streams usage
* Updated handling of device flags
* MOs are protectable
* Removed duplicate error code handling
* Removed duplicate code
* Fixed CmdReadToc buffer overflow (https://github.com/akuker/RASCSI/issues/194)
* Added naive implementation of GET EVENT STATUS NOTIFICATION to avoid wranings
* HD must set removable device bit if the media is removable
* Removed duplicate logging
* Updated daynaport additional length
* Removed broken daynaport REQUEST SENSE. Successfully tested with my Mac.
* EnableInterface should not always return TRUE
* Updated Inquiry
* Updated LUN handling
* Replaced incorrect free by delete
* Updated comments and write-protection handling
* Made default HD name consistent
* STATUS_NOERROR is default
* Fixed Eject
* More eject handling updates
* Manpage updates
* Logging update
* Changed debug level
* Logging update
* Log capacity of all media types
* Logging update
* Encapsulated disk.blocks
* Encapsulated sector size
* Added overrides
* Added more overrides
* Fixed error message
* Fixed typos
* Fixed logging
* Added logging
* Use PrimaryDevice when calling Inquiry
* Comment update
* Changed default buffer size for testing
* Reverted last change
* Removed debug output
* De-inlined methods because optimized code did not work with them inlined
* Web interface can attach Daynaport again
* Improved handling of read-only hard disks
* Fixed issue with "all" semantics of DETACH
* rasctl supports adding removable media devices without providing a filename
* Removed unused flag in PbDeviceDefinition
* Updated rasctl output for ecjected media (resolves issue #199)
* Validate default folder name when changing default folder
2021-08-21 21:45:30 +00:00
|
|
|
|
case SASIDEV::eCmdWrite16:
|
|
|
|
|
case SASIDEV::eCmdVerify10:
|
|
|
|
|
case SASIDEV::eCmdVerify16:
|
|
|
|
|
// If we're a host bridge, use the host bridge's SendMessage10 function
|
|
|
|
|
// TODO This class must not know about SCSIBR
|
Configurable block size, controller/device cleanup, dispatchers per device, bridge setup (#203)
* Use foreach
* Renaming
* Revert "Renaming"
This reverts commit b0554b9c0a052e282625a4565d429313af2b3cc7.
* Manpage updates
* Removed obsolete assertions
* Replaced QWORD by uint64_t and removed respective typedef
* Removed LPCSTR typedef
* Removed LPCTSTR typedef
* Removed LPTSTR typedef
* Renamed SCSI command interface classes
* Renamed xm6.h to rascsi.h
* Moved interface classes to new interfaces subfolder
* Added include
* Fixed compilation issues of 64 bit Ubuntu
* Renaming
* Sort block sizes
* protobuf interface description update
* Fixed handling for sector size for non-disk devices
* Fixed typo
* Fixed comment
* Translate code commends into English, removing redundant ones (#214)
* Comment update
* For other bridge interfaces than eth0 IP address and netmask can be provided
* Added special rule for testing on x86 PCs
* Translated code comments into English, removing some redundant ones in the process, plus fixing typos (#215)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* Comment update
* Removed unused typedefs
* Added special rule for testing on x86 PCs
* Comment update
* Comment update
* Updated capacity calculation
* Updated protobuf interface to signal parameter support
* Simplified protobuf interface
* Updated rasctl server info output
* Updated logging
* protobuf interface has to return block only if it is configurable
* Updated block size handling
* Improved error message if ID is already in use
* Removed typedef
* Renamed protobuf interface method
* Renaming
* Use protobuf::Messsge instead of protobuf::MessageLite
* default_image_folder cannot be an empty string, removed obsolete check
* Logging update
* Made some error messages more concise
* Removed magic constant
* Updated error message
* Comment update
* Names of removable media drives must be constant and not contain the capacity
* Improved DeviceFactory error handling
* More error handing improvements
* Interface comment update
* Pass interface list to ctapdriver when creating bridge
* Moved initialization code
* Updated rasctl server information output
* Improved handling of MO capacities
* Renaming
* Comment update
* Reject inserting a medium when there is already a medium present (eject first)
* Save list of files in use before dry-run
* Updated rasctl server info message
* Comment update
* Fixed typo
* Cleaned list handling
* Sort devices list by ID *and unit*
* Improved block size check
* Fixed issue with missing method in old Raspberry Pi OS protobuf implementation
* Updated error message
* Improve and fix bugs with saving&loading configuration files for rascsi-web (#218)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Removed unused structures, code and type cleanup
* Use unscoped enums for commands
* SASI Format opcode is 0x06, not 0x04 (see comment in code)
* Removed duplicate command
* Code review, data type updates
* Data type updated, use #pragma once
* Logging update
* Renaming
* Renaming
* Removed duplicate code
* Renaming
* Refactoring
* Removed TODO
* Updated logging
* Comment update
* Comment update
* Updated GetEventStatusNotification
* Removed goto
* Options -h and -v do not require to be the root user (fixes issue #166)
* Updated error messages and exception handling
* Added number of supported LUNs to protobuf interface
* Updated list handling of protobuf interface
* Comment update
* Improved error handling
* Added missing return statement
* Allow empty device list
* Fixed unnecessary detach_all() when config file isn't read (#221)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Protecting/unprotecing a non-ready medium is considered not possible
* Updated error message
* Extract detaching all devices, add parameter list support
* Comment update
* Fixed typos
* Restore files in use if dry-run fails
* Feature configurable reserved id for rascsi-web (#223)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make the reserved SCSI id configurable through an argument to start.sh; make the rascsi-web service reserve 7 by default to maintain current behavior.
* Make it possible to reserve multiple scsi ids in the web ui
* Added support for reserved IDs
* rasctl output update
* Re-ordered logging
* Logging update
* Make use of the newly introduced 'rasctl -r' to have the webui reserve ids on the backend side upon startup (#224)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Updated string to integer conversions
* Improved string to integer conversion
* Move string to integer conversion to rasutil
* Removed unused variable
* Fixed detach, which did not remove the filename from the filenames set
* Re-added folder to gitignore
* Set/Display patch version
* Fix issue where reserved ids were not reserved again when restarting rascsi-service from within the web ui (#226)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Make sure reserved SCSI IDs gets reserved again when restarting rascsi-service from within the web ui
* Updated interface comment
* Accept daynaport as legacy type
* Fixed typo
* Remove file from the list of files in use when ejected with a SCSI command
* Check for attached device for INSERT, EJECT, PROTECT, UNPROTECT
* Fixed error handling
* Fixed filepath handling
* Added more device shortcuts to rasctl
* Fixed function declaration
* Extraced ATTACH and DETACH
* Extracted INSERT
* Simplified ProcessCmd
* Comment update
* Fixed memory leak
* Log information on whether a new device is protected or read-only
* Updated errro message
* Updated error message
* Initialize private fields
* Updated rasctl help message
* Added DEVICE_INFO to protobuf interface
* Improved error handling
* DEVICE_INFO supports device list
* Updated server info handling
* Unified result handling with oneof, all commands now return PbResult
* A result can always return a message string
* Fixed typo
* Simplified sending of commands
* Improved error handling
* Removed unused code
* Updated error handling
* Code cleanup
* Comment update
* Updated logging
* Updated error handling
* Updated handling of removed status for devices without image file support
* Comment update
* Fixed typo
* Updated logging
* Updated parameter handling
* Updated setting default interfaces
* Revert "Updated setting default interfaces"
This reverts commit 210abc775d9a79dd0c631cf3877966a2923f4d5b.
* Revert "Updated parameter handling"
This reverts commit 35302addd59f5f5e1cc032888ba32dcbb426a846.
* rascsi supports reserving IDs
* Updated help message
* Replaced BOOL by bool
* Logging update
* Logging update
* Added default parameters to device properties
* Return parameters a device was set up with
* Improved device initialization
* Updated default parameter handling
* Updated default parameter handling
* Fixed typo
* Comment updates
* Comment update
* Manage default parameters in the respective device
* Do not pass empty parameter string
* Added supports_params flag
* Made comparisons more consistent
* Updated error handling
* Updated exception handling
* Renaming
* Comment update
* NEC sectors size must be 512 bytes
* Updated logging
* Updated vendor name handling
* Updated handling of media loading/unloading
* Added stoppable property and stopped status
* Made MO stoppable
* Removed duplicate code
* Removed duplicate code
* Copy read-only property
* Renaming
* Removed duplicate code, added START/STOP
* Improved default parameter handling
* Updated load/eject handling
* Logging update
* Fixed typo
* Verified START/STOP UNIT
* Updated logging
* Updated status handling
* Updated status handling
* More status handling updates
* Logging update
* Made instance fields local variables
* Made disk_t private
* Made some data structures private
* Fixed ARM compile issue
* Fixed ctapdriver initialization issue
* Reset read-only status when opening an image file
* Made logging more consistent
* Updated log level
* Log load/eject on error level for testing
* Revert "Log load/eject on error level for testing"
This reverts commit d35a15ea8e520517d25e1e1054ad1aeda9f85f2e.
* Assume drive is not ready after having been stopped
* Updated status handling
* Fixed typo
* Rebuild manpage
* Fixed issue #234 (MODE SENSE (10) returns wrong mode parameter header)
* Removed unused code
* Enum data type update
* Removed duplicate range check
* Removed duplicate code
* Removed more duplicate code
* Logging update
* SCCD sector size was not meant to be configurable
* Updated configurable sector size properties
* Removed assertion
* Improved error handling
* Updated error handling
* Re-added special error handling only relevant for SASI
* Added TODOs
* Comment update
* Added override modifier
* Removed obsolete debug flag (related code was not called)
* Comment and logging updates
* Removed obsolete try/catch
* Revert "Removed obsolete try/catch"
This reverts commit 39ca12d8b153c706316ce79f4fec65c9abc60024.
* Comment update
* Removed duplicate code
* Updated error messages, use more foreach loops
* Updated logging
* Logging update
* README update
* Added block_count
* Evaluate block size when inserting a media
* rasctl display capacity if available
* Info message update
* Added missing product name to NEC vital product data
* MO block size depends on capacity only
* Extended property/status display
* Property display update
* Updated error handling
* (Doc only changes) Fix typos and add clarification that SASI is used on Unix workstations
Co-authored-by: Daniel Markstedt <markstedt@gmail.com>
Co-authored-by: Tony Kuker <akuker@gmail.com>
2021-09-15 01:23:04 +00:00
|
|
|
|
if (device->IsBridge()) {
|
|
|
|
|
if (!((SCSIBR*)device)->SendMessage10(ctrl.cmd, ctrl.buffer)) {
|
2020-08-28 14:18:02 +00:00
|
|
|
|
// write failed
|
Configurable block size, controller/device cleanup, dispatchers per device, bridge setup (#203)
* Use foreach
* Renaming
* Revert "Renaming"
This reverts commit b0554b9c0a052e282625a4565d429313af2b3cc7.
* Manpage updates
* Removed obsolete assertions
* Replaced QWORD by uint64_t and removed respective typedef
* Removed LPCSTR typedef
* Removed LPCTSTR typedef
* Removed LPTSTR typedef
* Renamed SCSI command interface classes
* Renamed xm6.h to rascsi.h
* Moved interface classes to new interfaces subfolder
* Added include
* Fixed compilation issues of 64 bit Ubuntu
* Renaming
* Sort block sizes
* protobuf interface description update
* Fixed handling for sector size for non-disk devices
* Fixed typo
* Fixed comment
* Translate code commends into English, removing redundant ones (#214)
* Comment update
* For other bridge interfaces than eth0 IP address and netmask can be provided
* Added special rule for testing on x86 PCs
* Translated code comments into English, removing some redundant ones in the process, plus fixing typos (#215)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* Comment update
* Removed unused typedefs
* Added special rule for testing on x86 PCs
* Comment update
* Comment update
* Updated capacity calculation
* Updated protobuf interface to signal parameter support
* Simplified protobuf interface
* Updated rasctl server info output
* Updated logging
* protobuf interface has to return block only if it is configurable
* Updated block size handling
* Improved error message if ID is already in use
* Removed typedef
* Renamed protobuf interface method
* Renaming
* Use protobuf::Messsge instead of protobuf::MessageLite
* default_image_folder cannot be an empty string, removed obsolete check
* Logging update
* Made some error messages more concise
* Removed magic constant
* Updated error message
* Comment update
* Names of removable media drives must be constant and not contain the capacity
* Improved DeviceFactory error handling
* More error handing improvements
* Interface comment update
* Pass interface list to ctapdriver when creating bridge
* Moved initialization code
* Updated rasctl server information output
* Improved handling of MO capacities
* Renaming
* Comment update
* Reject inserting a medium when there is already a medium present (eject first)
* Save list of files in use before dry-run
* Updated rasctl server info message
* Comment update
* Fixed typo
* Cleaned list handling
* Sort devices list by ID *and unit*
* Improved block size check
* Fixed issue with missing method in old Raspberry Pi OS protobuf implementation
* Updated error message
* Improve and fix bugs with saving&loading configuration files for rascsi-web (#218)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Removed unused structures, code and type cleanup
* Use unscoped enums for commands
* SASI Format opcode is 0x06, not 0x04 (see comment in code)
* Removed duplicate command
* Code review, data type updates
* Data type updated, use #pragma once
* Logging update
* Renaming
* Renaming
* Removed duplicate code
* Renaming
* Refactoring
* Removed TODO
* Updated logging
* Comment update
* Comment update
* Updated GetEventStatusNotification
* Removed goto
* Options -h and -v do not require to be the root user (fixes issue #166)
* Updated error messages and exception handling
* Added number of supported LUNs to protobuf interface
* Updated list handling of protobuf interface
* Comment update
* Improved error handling
* Added missing return statement
* Allow empty device list
* Fixed unnecessary detach_all() when config file isn't read (#221)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Protecting/unprotecing a non-ready medium is considered not possible
* Updated error message
* Extract detaching all devices, add parameter list support
* Comment update
* Fixed typos
* Restore files in use if dry-run fails
* Feature configurable reserved id for rascsi-web (#223)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make the reserved SCSI id configurable through an argument to start.sh; make the rascsi-web service reserve 7 by default to maintain current behavior.
* Make it possible to reserve multiple scsi ids in the web ui
* Added support for reserved IDs
* rasctl output update
* Re-ordered logging
* Logging update
* Make use of the newly introduced 'rasctl -r' to have the webui reserve ids on the backend side upon startup (#224)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Updated string to integer conversions
* Improved string to integer conversion
* Move string to integer conversion to rasutil
* Removed unused variable
* Fixed detach, which did not remove the filename from the filenames set
* Re-added folder to gitignore
* Set/Display patch version
* Fix issue where reserved ids were not reserved again when restarting rascsi-service from within the web ui (#226)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Make sure reserved SCSI IDs gets reserved again when restarting rascsi-service from within the web ui
* Updated interface comment
* Accept daynaport as legacy type
* Fixed typo
* Remove file from the list of files in use when ejected with a SCSI command
* Check for attached device for INSERT, EJECT, PROTECT, UNPROTECT
* Fixed error handling
* Fixed filepath handling
* Added more device shortcuts to rasctl
* Fixed function declaration
* Extraced ATTACH and DETACH
* Extracted INSERT
* Simplified ProcessCmd
* Comment update
* Fixed memory leak
* Log information on whether a new device is protected or read-only
* Updated errro message
* Updated error message
* Initialize private fields
* Updated rasctl help message
* Added DEVICE_INFO to protobuf interface
* Improved error handling
* DEVICE_INFO supports device list
* Updated server info handling
* Unified result handling with oneof, all commands now return PbResult
* A result can always return a message string
* Fixed typo
* Simplified sending of commands
* Improved error handling
* Removed unused code
* Updated error handling
* Code cleanup
* Comment update
* Updated logging
* Updated error handling
* Updated handling of removed status for devices without image file support
* Comment update
* Fixed typo
* Updated logging
* Updated parameter handling
* Updated setting default interfaces
* Revert "Updated setting default interfaces"
This reverts commit 210abc775d9a79dd0c631cf3877966a2923f4d5b.
* Revert "Updated parameter handling"
This reverts commit 35302addd59f5f5e1cc032888ba32dcbb426a846.
* rascsi supports reserving IDs
* Updated help message
* Replaced BOOL by bool
* Logging update
* Logging update
* Added default parameters to device properties
* Return parameters a device was set up with
* Improved device initialization
* Updated default parameter handling
* Updated default parameter handling
* Fixed typo
* Comment updates
* Comment update
* Manage default parameters in the respective device
* Do not pass empty parameter string
* Added supports_params flag
* Made comparisons more consistent
* Updated error handling
* Updated exception handling
* Renaming
* Comment update
* NEC sectors size must be 512 bytes
* Updated logging
* Updated vendor name handling
* Updated handling of media loading/unloading
* Added stoppable property and stopped status
* Made MO stoppable
* Removed duplicate code
* Removed duplicate code
* Copy read-only property
* Renaming
* Removed duplicate code, added START/STOP
* Improved default parameter handling
* Updated load/eject handling
* Logging update
* Fixed typo
* Verified START/STOP UNIT
* Updated logging
* Updated status handling
* Updated status handling
* More status handling updates
* Logging update
* Made instance fields local variables
* Made disk_t private
* Made some data structures private
* Fixed ARM compile issue
* Fixed ctapdriver initialization issue
* Reset read-only status when opening an image file
* Made logging more consistent
* Updated log level
* Log load/eject on error level for testing
* Revert "Log load/eject on error level for testing"
This reverts commit d35a15ea8e520517d25e1e1054ad1aeda9f85f2e.
* Assume drive is not ready after having been stopped
* Updated status handling
* Fixed typo
* Rebuild manpage
* Fixed issue #234 (MODE SENSE (10) returns wrong mode parameter header)
* Removed unused code
* Enum data type update
* Removed duplicate range check
* Removed duplicate code
* Removed more duplicate code
* Logging update
* SCCD sector size was not meant to be configurable
* Updated configurable sector size properties
* Removed assertion
* Improved error handling
* Updated error handling
* Re-added special error handling only relevant for SASI
* Added TODOs
* Comment update
* Added override modifier
* Removed obsolete debug flag (related code was not called)
* Comment and logging updates
* Removed obsolete try/catch
* Revert "Removed obsolete try/catch"
This reverts commit 39ca12d8b153c706316ce79f4fec65c9abc60024.
* Comment update
* Removed duplicate code
* Updated error messages, use more foreach loops
* Updated logging
* Logging update
* README update
* Added block_count
* Evaluate block size when inserting a media
* rasctl display capacity if available
* Info message update
* Added missing product name to NEC vital product data
* MO block size depends on capacity only
* Extended property/status display
* Property display update
* Updated error handling
* (Doc only changes) Fix typos and add clarification that SASI is used on Unix workstations
Co-authored-by: Daniel Markstedt <markstedt@gmail.com>
Co-authored-by: Tony Kuker <akuker@gmail.com>
2021-09-15 01:23:04 +00:00
|
|
|
|
return false;
|
2020-08-28 14:18:02 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// If normal, work setting
|
|
|
|
|
ctrl.offset = 0;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
2021-02-07 19:00:48 +00:00
|
|
|
|
// Special case Write function for DaynaPort
|
Configurable block size, controller/device cleanup, dispatchers per device, bridge setup (#203)
* Use foreach
* Renaming
* Revert "Renaming"
This reverts commit b0554b9c0a052e282625a4565d429313af2b3cc7.
* Manpage updates
* Removed obsolete assertions
* Replaced QWORD by uint64_t and removed respective typedef
* Removed LPCSTR typedef
* Removed LPCTSTR typedef
* Removed LPTSTR typedef
* Renamed SCSI command interface classes
* Renamed xm6.h to rascsi.h
* Moved interface classes to new interfaces subfolder
* Added include
* Fixed compilation issues of 64 bit Ubuntu
* Renaming
* Sort block sizes
* protobuf interface description update
* Fixed handling for sector size for non-disk devices
* Fixed typo
* Fixed comment
* Translate code commends into English, removing redundant ones (#214)
* Comment update
* For other bridge interfaces than eth0 IP address and netmask can be provided
* Added special rule for testing on x86 PCs
* Translated code comments into English, removing some redundant ones in the process, plus fixing typos (#215)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* Comment update
* Removed unused typedefs
* Added special rule for testing on x86 PCs
* Comment update
* Comment update
* Updated capacity calculation
* Updated protobuf interface to signal parameter support
* Simplified protobuf interface
* Updated rasctl server info output
* Updated logging
* protobuf interface has to return block only if it is configurable
* Updated block size handling
* Improved error message if ID is already in use
* Removed typedef
* Renamed protobuf interface method
* Renaming
* Use protobuf::Messsge instead of protobuf::MessageLite
* default_image_folder cannot be an empty string, removed obsolete check
* Logging update
* Made some error messages more concise
* Removed magic constant
* Updated error message
* Comment update
* Names of removable media drives must be constant and not contain the capacity
* Improved DeviceFactory error handling
* More error handing improvements
* Interface comment update
* Pass interface list to ctapdriver when creating bridge
* Moved initialization code
* Updated rasctl server information output
* Improved handling of MO capacities
* Renaming
* Comment update
* Reject inserting a medium when there is already a medium present (eject first)
* Save list of files in use before dry-run
* Updated rasctl server info message
* Comment update
* Fixed typo
* Cleaned list handling
* Sort devices list by ID *and unit*
* Improved block size check
* Fixed issue with missing method in old Raspberry Pi OS protobuf implementation
* Updated error message
* Improve and fix bugs with saving&loading configuration files for rascsi-web (#218)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Removed unused structures, code and type cleanup
* Use unscoped enums for commands
* SASI Format opcode is 0x06, not 0x04 (see comment in code)
* Removed duplicate command
* Code review, data type updates
* Data type updated, use #pragma once
* Logging update
* Renaming
* Renaming
* Removed duplicate code
* Renaming
* Refactoring
* Removed TODO
* Updated logging
* Comment update
* Comment update
* Updated GetEventStatusNotification
* Removed goto
* Options -h and -v do not require to be the root user (fixes issue #166)
* Updated error messages and exception handling
* Added number of supported LUNs to protobuf interface
* Updated list handling of protobuf interface
* Comment update
* Improved error handling
* Added missing return statement
* Allow empty device list
* Fixed unnecessary detach_all() when config file isn't read (#221)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Protecting/unprotecing a non-ready medium is considered not possible
* Updated error message
* Extract detaching all devices, add parameter list support
* Comment update
* Fixed typos
* Restore files in use if dry-run fails
* Feature configurable reserved id for rascsi-web (#223)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make the reserved SCSI id configurable through an argument to start.sh; make the rascsi-web service reserve 7 by default to maintain current behavior.
* Make it possible to reserve multiple scsi ids in the web ui
* Added support for reserved IDs
* rasctl output update
* Re-ordered logging
* Logging update
* Make use of the newly introduced 'rasctl -r' to have the webui reserve ids on the backend side upon startup (#224)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Updated string to integer conversions
* Improved string to integer conversion
* Move string to integer conversion to rasutil
* Removed unused variable
* Fixed detach, which did not remove the filename from the filenames set
* Re-added folder to gitignore
* Set/Display patch version
* Fix issue where reserved ids were not reserved again when restarting rascsi-service from within the web ui (#226)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Make sure reserved SCSI IDs gets reserved again when restarting rascsi-service from within the web ui
* Updated interface comment
* Accept daynaport as legacy type
* Fixed typo
* Remove file from the list of files in use when ejected with a SCSI command
* Check for attached device for INSERT, EJECT, PROTECT, UNPROTECT
* Fixed error handling
* Fixed filepath handling
* Added more device shortcuts to rasctl
* Fixed function declaration
* Extraced ATTACH and DETACH
* Extracted INSERT
* Simplified ProcessCmd
* Comment update
* Fixed memory leak
* Log information on whether a new device is protected or read-only
* Updated errro message
* Updated error message
* Initialize private fields
* Updated rasctl help message
* Added DEVICE_INFO to protobuf interface
* Improved error handling
* DEVICE_INFO supports device list
* Updated server info handling
* Unified result handling with oneof, all commands now return PbResult
* A result can always return a message string
* Fixed typo
* Simplified sending of commands
* Improved error handling
* Removed unused code
* Updated error handling
* Code cleanup
* Comment update
* Updated logging
* Updated error handling
* Updated handling of removed status for devices without image file support
* Comment update
* Fixed typo
* Updated logging
* Updated parameter handling
* Updated setting default interfaces
* Revert "Updated setting default interfaces"
This reverts commit 210abc775d9a79dd0c631cf3877966a2923f4d5b.
* Revert "Updated parameter handling"
This reverts commit 35302addd59f5f5e1cc032888ba32dcbb426a846.
* rascsi supports reserving IDs
* Updated help message
* Replaced BOOL by bool
* Logging update
* Logging update
* Added default parameters to device properties
* Return parameters a device was set up with
* Improved device initialization
* Updated default parameter handling
* Updated default parameter handling
* Fixed typo
* Comment updates
* Comment update
* Manage default parameters in the respective device
* Do not pass empty parameter string
* Added supports_params flag
* Made comparisons more consistent
* Updated error handling
* Updated exception handling
* Renaming
* Comment update
* NEC sectors size must be 512 bytes
* Updated logging
* Updated vendor name handling
* Updated handling of media loading/unloading
* Added stoppable property and stopped status
* Made MO stoppable
* Removed duplicate code
* Removed duplicate code
* Copy read-only property
* Renaming
* Removed duplicate code, added START/STOP
* Improved default parameter handling
* Updated load/eject handling
* Logging update
* Fixed typo
* Verified START/STOP UNIT
* Updated logging
* Updated status handling
* Updated status handling
* More status handling updates
* Logging update
* Made instance fields local variables
* Made disk_t private
* Made some data structures private
* Fixed ARM compile issue
* Fixed ctapdriver initialization issue
* Reset read-only status when opening an image file
* Made logging more consistent
* Updated log level
* Log load/eject on error level for testing
* Revert "Log load/eject on error level for testing"
This reverts commit d35a15ea8e520517d25e1e1054ad1aeda9f85f2e.
* Assume drive is not ready after having been stopped
* Updated status handling
* Fixed typo
* Rebuild manpage
* Fixed issue #234 (MODE SENSE (10) returns wrong mode parameter header)
* Removed unused code
* Enum data type update
* Removed duplicate range check
* Removed duplicate code
* Removed more duplicate code
* Logging update
* SCCD sector size was not meant to be configurable
* Updated configurable sector size properties
* Removed assertion
* Improved error handling
* Updated error handling
* Re-added special error handling only relevant for SASI
* Added TODOs
* Comment update
* Added override modifier
* Removed obsolete debug flag (related code was not called)
* Comment and logging updates
* Removed obsolete try/catch
* Revert "Removed obsolete try/catch"
This reverts commit 39ca12d8b153c706316ce79f4fec65c9abc60024.
* Comment update
* Removed duplicate code
* Updated error messages, use more foreach loops
* Updated logging
* Logging update
* README update
* Added block_count
* Evaluate block size when inserting a media
* rasctl display capacity if available
* Info message update
* Added missing product name to NEC vital product data
* MO block size depends on capacity only
* Extended property/status display
* Property display update
* Updated error handling
* (Doc only changes) Fix typos and add clarification that SASI is used on Unix workstations
Co-authored-by: Daniel Markstedt <markstedt@gmail.com>
Co-authored-by: Tony Kuker <akuker@gmail.com>
2021-09-15 01:23:04 +00:00
|
|
|
|
// TODO This class must not know about DaynaPort
|
|
|
|
|
if (device->IsDaynaPort()) {
|
2022-02-17 02:04:42 +00:00
|
|
|
|
if (!((SCSIDaynaPort*)device)->Write(ctrl.cmd, ctrl.buffer, ctrl.length)) {
|
2021-02-07 19:00:48 +00:00
|
|
|
|
// write failed
|
Configurable block size, controller/device cleanup, dispatchers per device, bridge setup (#203)
* Use foreach
* Renaming
* Revert "Renaming"
This reverts commit b0554b9c0a052e282625a4565d429313af2b3cc7.
* Manpage updates
* Removed obsolete assertions
* Replaced QWORD by uint64_t and removed respective typedef
* Removed LPCSTR typedef
* Removed LPCTSTR typedef
* Removed LPTSTR typedef
* Renamed SCSI command interface classes
* Renamed xm6.h to rascsi.h
* Moved interface classes to new interfaces subfolder
* Added include
* Fixed compilation issues of 64 bit Ubuntu
* Renaming
* Sort block sizes
* protobuf interface description update
* Fixed handling for sector size for non-disk devices
* Fixed typo
* Fixed comment
* Translate code commends into English, removing redundant ones (#214)
* Comment update
* For other bridge interfaces than eth0 IP address and netmask can be provided
* Added special rule for testing on x86 PCs
* Translated code comments into English, removing some redundant ones in the process, plus fixing typos (#215)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* Comment update
* Removed unused typedefs
* Added special rule for testing on x86 PCs
* Comment update
* Comment update
* Updated capacity calculation
* Updated protobuf interface to signal parameter support
* Simplified protobuf interface
* Updated rasctl server info output
* Updated logging
* protobuf interface has to return block only if it is configurable
* Updated block size handling
* Improved error message if ID is already in use
* Removed typedef
* Renamed protobuf interface method
* Renaming
* Use protobuf::Messsge instead of protobuf::MessageLite
* default_image_folder cannot be an empty string, removed obsolete check
* Logging update
* Made some error messages more concise
* Removed magic constant
* Updated error message
* Comment update
* Names of removable media drives must be constant and not contain the capacity
* Improved DeviceFactory error handling
* More error handing improvements
* Interface comment update
* Pass interface list to ctapdriver when creating bridge
* Moved initialization code
* Updated rasctl server information output
* Improved handling of MO capacities
* Renaming
* Comment update
* Reject inserting a medium when there is already a medium present (eject first)
* Save list of files in use before dry-run
* Updated rasctl server info message
* Comment update
* Fixed typo
* Cleaned list handling
* Sort devices list by ID *and unit*
* Improved block size check
* Fixed issue with missing method in old Raspberry Pi OS protobuf implementation
* Updated error message
* Improve and fix bugs with saving&loading configuration files for rascsi-web (#218)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Removed unused structures, code and type cleanup
* Use unscoped enums for commands
* SASI Format opcode is 0x06, not 0x04 (see comment in code)
* Removed duplicate command
* Code review, data type updates
* Data type updated, use #pragma once
* Logging update
* Renaming
* Renaming
* Removed duplicate code
* Renaming
* Refactoring
* Removed TODO
* Updated logging
* Comment update
* Comment update
* Updated GetEventStatusNotification
* Removed goto
* Options -h and -v do not require to be the root user (fixes issue #166)
* Updated error messages and exception handling
* Added number of supported LUNs to protobuf interface
* Updated list handling of protobuf interface
* Comment update
* Improved error handling
* Added missing return statement
* Allow empty device list
* Fixed unnecessary detach_all() when config file isn't read (#221)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Protecting/unprotecing a non-ready medium is considered not possible
* Updated error message
* Extract detaching all devices, add parameter list support
* Comment update
* Fixed typos
* Restore files in use if dry-run fails
* Feature configurable reserved id for rascsi-web (#223)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make the reserved SCSI id configurable through an argument to start.sh; make the rascsi-web service reserve 7 by default to maintain current behavior.
* Make it possible to reserve multiple scsi ids in the web ui
* Added support for reserved IDs
* rasctl output update
* Re-ordered logging
* Logging update
* Make use of the newly introduced 'rasctl -r' to have the webui reserve ids on the backend side upon startup (#224)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Updated string to integer conversions
* Improved string to integer conversion
* Move string to integer conversion to rasutil
* Removed unused variable
* Fixed detach, which did not remove the filename from the filenames set
* Re-added folder to gitignore
* Set/Display patch version
* Fix issue where reserved ids were not reserved again when restarting rascsi-service from within the web ui (#226)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Make sure reserved SCSI IDs gets reserved again when restarting rascsi-service from within the web ui
* Updated interface comment
* Accept daynaport as legacy type
* Fixed typo
* Remove file from the list of files in use when ejected with a SCSI command
* Check for attached device for INSERT, EJECT, PROTECT, UNPROTECT
* Fixed error handling
* Fixed filepath handling
* Added more device shortcuts to rasctl
* Fixed function declaration
* Extraced ATTACH and DETACH
* Extracted INSERT
* Simplified ProcessCmd
* Comment update
* Fixed memory leak
* Log information on whether a new device is protected or read-only
* Updated errro message
* Updated error message
* Initialize private fields
* Updated rasctl help message
* Added DEVICE_INFO to protobuf interface
* Improved error handling
* DEVICE_INFO supports device list
* Updated server info handling
* Unified result handling with oneof, all commands now return PbResult
* A result can always return a message string
* Fixed typo
* Simplified sending of commands
* Improved error handling
* Removed unused code
* Updated error handling
* Code cleanup
* Comment update
* Updated logging
* Updated error handling
* Updated handling of removed status for devices without image file support
* Comment update
* Fixed typo
* Updated logging
* Updated parameter handling
* Updated setting default interfaces
* Revert "Updated setting default interfaces"
This reverts commit 210abc775d9a79dd0c631cf3877966a2923f4d5b.
* Revert "Updated parameter handling"
This reverts commit 35302addd59f5f5e1cc032888ba32dcbb426a846.
* rascsi supports reserving IDs
* Updated help message
* Replaced BOOL by bool
* Logging update
* Logging update
* Added default parameters to device properties
* Return parameters a device was set up with
* Improved device initialization
* Updated default parameter handling
* Updated default parameter handling
* Fixed typo
* Comment updates
* Comment update
* Manage default parameters in the respective device
* Do not pass empty parameter string
* Added supports_params flag
* Made comparisons more consistent
* Updated error handling
* Updated exception handling
* Renaming
* Comment update
* NEC sectors size must be 512 bytes
* Updated logging
* Updated vendor name handling
* Updated handling of media loading/unloading
* Added stoppable property and stopped status
* Made MO stoppable
* Removed duplicate code
* Removed duplicate code
* Copy read-only property
* Renaming
* Removed duplicate code, added START/STOP
* Improved default parameter handling
* Updated load/eject handling
* Logging update
* Fixed typo
* Verified START/STOP UNIT
* Updated logging
* Updated status handling
* Updated status handling
* More status handling updates
* Logging update
* Made instance fields local variables
* Made disk_t private
* Made some data structures private
* Fixed ARM compile issue
* Fixed ctapdriver initialization issue
* Reset read-only status when opening an image file
* Made logging more consistent
* Updated log level
* Log load/eject on error level for testing
* Revert "Log load/eject on error level for testing"
This reverts commit d35a15ea8e520517d25e1e1054ad1aeda9f85f2e.
* Assume drive is not ready after having been stopped
* Updated status handling
* Fixed typo
* Rebuild manpage
* Fixed issue #234 (MODE SENSE (10) returns wrong mode parameter header)
* Removed unused code
* Enum data type update
* Removed duplicate range check
* Removed duplicate code
* Removed more duplicate code
* Logging update
* SCCD sector size was not meant to be configurable
* Updated configurable sector size properties
* Removed assertion
* Improved error handling
* Updated error handling
* Re-added special error handling only relevant for SASI
* Added TODOs
* Comment update
* Added override modifier
* Removed obsolete debug flag (related code was not called)
* Comment and logging updates
* Removed obsolete try/catch
* Revert "Removed obsolete try/catch"
This reverts commit 39ca12d8b153c706316ce79f4fec65c9abc60024.
* Comment update
* Removed duplicate code
* Updated error messages, use more foreach loops
* Updated logging
* Logging update
* README update
* Added block_count
* Evaluate block size when inserting a media
* rasctl display capacity if available
* Info message update
* Added missing product name to NEC vital product data
* MO block size depends on capacity only
* Extended property/status display
* Property display update
* Updated error handling
* (Doc only changes) Fix typos and add clarification that SASI is used on Unix workstations
Co-authored-by: Daniel Markstedt <markstedt@gmail.com>
Co-authored-by: Tony Kuker <akuker@gmail.com>
2021-09-15 01:23:04 +00:00
|
|
|
|
return false;
|
2021-02-07 19:00:48 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// If normal, work setting
|
|
|
|
|
ctrl.offset = 0;
|
|
|
|
|
ctrl.blocks = 0;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
Configurable block size, controller/device cleanup, dispatchers per device, bridge setup (#203)
* Use foreach
* Renaming
* Revert "Renaming"
This reverts commit b0554b9c0a052e282625a4565d429313af2b3cc7.
* Manpage updates
* Removed obsolete assertions
* Replaced QWORD by uint64_t and removed respective typedef
* Removed LPCSTR typedef
* Removed LPCTSTR typedef
* Removed LPTSTR typedef
* Renamed SCSI command interface classes
* Renamed xm6.h to rascsi.h
* Moved interface classes to new interfaces subfolder
* Added include
* Fixed compilation issues of 64 bit Ubuntu
* Renaming
* Sort block sizes
* protobuf interface description update
* Fixed handling for sector size for non-disk devices
* Fixed typo
* Fixed comment
* Translate code commends into English, removing redundant ones (#214)
* Comment update
* For other bridge interfaces than eth0 IP address and netmask can be provided
* Added special rule for testing on x86 PCs
* Translated code comments into English, removing some redundant ones in the process, plus fixing typos (#215)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* Comment update
* Removed unused typedefs
* Added special rule for testing on x86 PCs
* Comment update
* Comment update
* Updated capacity calculation
* Updated protobuf interface to signal parameter support
* Simplified protobuf interface
* Updated rasctl server info output
* Updated logging
* protobuf interface has to return block only if it is configurable
* Updated block size handling
* Improved error message if ID is already in use
* Removed typedef
* Renamed protobuf interface method
* Renaming
* Use protobuf::Messsge instead of protobuf::MessageLite
* default_image_folder cannot be an empty string, removed obsolete check
* Logging update
* Made some error messages more concise
* Removed magic constant
* Updated error message
* Comment update
* Names of removable media drives must be constant and not contain the capacity
* Improved DeviceFactory error handling
* More error handing improvements
* Interface comment update
* Pass interface list to ctapdriver when creating bridge
* Moved initialization code
* Updated rasctl server information output
* Improved handling of MO capacities
* Renaming
* Comment update
* Reject inserting a medium when there is already a medium present (eject first)
* Save list of files in use before dry-run
* Updated rasctl server info message
* Comment update
* Fixed typo
* Cleaned list handling
* Sort devices list by ID *and unit*
* Improved block size check
* Fixed issue with missing method in old Raspberry Pi OS protobuf implementation
* Updated error message
* Improve and fix bugs with saving&loading configuration files for rascsi-web (#218)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Removed unused structures, code and type cleanup
* Use unscoped enums for commands
* SASI Format opcode is 0x06, not 0x04 (see comment in code)
* Removed duplicate command
* Code review, data type updates
* Data type updated, use #pragma once
* Logging update
* Renaming
* Renaming
* Removed duplicate code
* Renaming
* Refactoring
* Removed TODO
* Updated logging
* Comment update
* Comment update
* Updated GetEventStatusNotification
* Removed goto
* Options -h and -v do not require to be the root user (fixes issue #166)
* Updated error messages and exception handling
* Added number of supported LUNs to protobuf interface
* Updated list handling of protobuf interface
* Comment update
* Improved error handling
* Added missing return statement
* Allow empty device list
* Fixed unnecessary detach_all() when config file isn't read (#221)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Protecting/unprotecing a non-ready medium is considered not possible
* Updated error message
* Extract detaching all devices, add parameter list support
* Comment update
* Fixed typos
* Restore files in use if dry-run fails
* Feature configurable reserved id for rascsi-web (#223)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make the reserved SCSI id configurable through an argument to start.sh; make the rascsi-web service reserve 7 by default to maintain current behavior.
* Make it possible to reserve multiple scsi ids in the web ui
* Added support for reserved IDs
* rasctl output update
* Re-ordered logging
* Logging update
* Make use of the newly introduced 'rasctl -r' to have the webui reserve ids on the backend side upon startup (#224)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Updated string to integer conversions
* Improved string to integer conversion
* Move string to integer conversion to rasutil
* Removed unused variable
* Fixed detach, which did not remove the filename from the filenames set
* Re-added folder to gitignore
* Set/Display patch version
* Fix issue where reserved ids were not reserved again when restarting rascsi-service from within the web ui (#226)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Make sure reserved SCSI IDs gets reserved again when restarting rascsi-service from within the web ui
* Updated interface comment
* Accept daynaport as legacy type
* Fixed typo
* Remove file from the list of files in use when ejected with a SCSI command
* Check for attached device for INSERT, EJECT, PROTECT, UNPROTECT
* Fixed error handling
* Fixed filepath handling
* Added more device shortcuts to rasctl
* Fixed function declaration
* Extraced ATTACH and DETACH
* Extracted INSERT
* Simplified ProcessCmd
* Comment update
* Fixed memory leak
* Log information on whether a new device is protected or read-only
* Updated errro message
* Updated error message
* Initialize private fields
* Updated rasctl help message
* Added DEVICE_INFO to protobuf interface
* Improved error handling
* DEVICE_INFO supports device list
* Updated server info handling
* Unified result handling with oneof, all commands now return PbResult
* A result can always return a message string
* Fixed typo
* Simplified sending of commands
* Improved error handling
* Removed unused code
* Updated error handling
* Code cleanup
* Comment update
* Updated logging
* Updated error handling
* Updated handling of removed status for devices without image file support
* Comment update
* Fixed typo
* Updated logging
* Updated parameter handling
* Updated setting default interfaces
* Revert "Updated setting default interfaces"
This reverts commit 210abc775d9a79dd0c631cf3877966a2923f4d5b.
* Revert "Updated parameter handling"
This reverts commit 35302addd59f5f5e1cc032888ba32dcbb426a846.
* rascsi supports reserving IDs
* Updated help message
* Replaced BOOL by bool
* Logging update
* Logging update
* Added default parameters to device properties
* Return parameters a device was set up with
* Improved device initialization
* Updated default parameter handling
* Updated default parameter handling
* Fixed typo
* Comment updates
* Comment update
* Manage default parameters in the respective device
* Do not pass empty parameter string
* Added supports_params flag
* Made comparisons more consistent
* Updated error handling
* Updated exception handling
* Renaming
* Comment update
* NEC sectors size must be 512 bytes
* Updated logging
* Updated vendor name handling
* Updated handling of media loading/unloading
* Added stoppable property and stopped status
* Made MO stoppable
* Removed duplicate code
* Removed duplicate code
* Copy read-only property
* Renaming
* Removed duplicate code, added START/STOP
* Improved default parameter handling
* Updated load/eject handling
* Logging update
* Fixed typo
* Verified START/STOP UNIT
* Updated logging
* Updated status handling
* Updated status handling
* More status handling updates
* Logging update
* Made instance fields local variables
* Made disk_t private
* Made some data structures private
* Fixed ARM compile issue
* Fixed ctapdriver initialization issue
* Reset read-only status when opening an image file
* Made logging more consistent
* Updated log level
* Log load/eject on error level for testing
* Revert "Log load/eject on error level for testing"
This reverts commit d35a15ea8e520517d25e1e1054ad1aeda9f85f2e.
* Assume drive is not ready after having been stopped
* Updated status handling
* Fixed typo
* Rebuild manpage
* Fixed issue #234 (MODE SENSE (10) returns wrong mode parameter header)
* Removed unused code
* Enum data type update
* Removed duplicate range check
* Removed duplicate code
* Removed more duplicate code
* Logging update
* SCCD sector size was not meant to be configurable
* Updated configurable sector size properties
* Removed assertion
* Improved error handling
* Updated error handling
* Re-added special error handling only relevant for SASI
* Added TODOs
* Comment update
* Added override modifier
* Removed obsolete debug flag (related code was not called)
* Comment and logging updates
* Removed obsolete try/catch
* Revert "Removed obsolete try/catch"
This reverts commit 39ca12d8b153c706316ce79f4fec65c9abc60024.
* Comment update
* Removed duplicate code
* Updated error messages, use more foreach loops
* Updated logging
* Logging update
* README update
* Added block_count
* Evaluate block size when inserting a media
* rasctl display capacity if available
* Info message update
* Added missing product name to NEC vital product data
* MO block size depends on capacity only
* Extended property/status display
* Property display update
* Updated error handling
* (Doc only changes) Fix typos and add clarification that SASI is used on Unix workstations
Co-authored-by: Daniel Markstedt <markstedt@gmail.com>
Co-authored-by: Tony Kuker <akuker@gmail.com>
2021-09-15 01:23:04 +00:00
|
|
|
|
if (!device->Write(ctrl.cmd, ctrl.buffer, ctrl.next - 1)) {
|
2020-08-28 14:18:02 +00:00
|
|
|
|
// Write failed
|
Configurable block size, controller/device cleanup, dispatchers per device, bridge setup (#203)
* Use foreach
* Renaming
* Revert "Renaming"
This reverts commit b0554b9c0a052e282625a4565d429313af2b3cc7.
* Manpage updates
* Removed obsolete assertions
* Replaced QWORD by uint64_t and removed respective typedef
* Removed LPCSTR typedef
* Removed LPCTSTR typedef
* Removed LPTSTR typedef
* Renamed SCSI command interface classes
* Renamed xm6.h to rascsi.h
* Moved interface classes to new interfaces subfolder
* Added include
* Fixed compilation issues of 64 bit Ubuntu
* Renaming
* Sort block sizes
* protobuf interface description update
* Fixed handling for sector size for non-disk devices
* Fixed typo
* Fixed comment
* Translate code commends into English, removing redundant ones (#214)
* Comment update
* For other bridge interfaces than eth0 IP address and netmask can be provided
* Added special rule for testing on x86 PCs
* Translated code comments into English, removing some redundant ones in the process, plus fixing typos (#215)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* Comment update
* Removed unused typedefs
* Added special rule for testing on x86 PCs
* Comment update
* Comment update
* Updated capacity calculation
* Updated protobuf interface to signal parameter support
* Simplified protobuf interface
* Updated rasctl server info output
* Updated logging
* protobuf interface has to return block only if it is configurable
* Updated block size handling
* Improved error message if ID is already in use
* Removed typedef
* Renamed protobuf interface method
* Renaming
* Use protobuf::Messsge instead of protobuf::MessageLite
* default_image_folder cannot be an empty string, removed obsolete check
* Logging update
* Made some error messages more concise
* Removed magic constant
* Updated error message
* Comment update
* Names of removable media drives must be constant and not contain the capacity
* Improved DeviceFactory error handling
* More error handing improvements
* Interface comment update
* Pass interface list to ctapdriver when creating bridge
* Moved initialization code
* Updated rasctl server information output
* Improved handling of MO capacities
* Renaming
* Comment update
* Reject inserting a medium when there is already a medium present (eject first)
* Save list of files in use before dry-run
* Updated rasctl server info message
* Comment update
* Fixed typo
* Cleaned list handling
* Sort devices list by ID *and unit*
* Improved block size check
* Fixed issue with missing method in old Raspberry Pi OS protobuf implementation
* Updated error message
* Improve and fix bugs with saving&loading configuration files for rascsi-web (#218)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Removed unused structures, code and type cleanup
* Use unscoped enums for commands
* SASI Format opcode is 0x06, not 0x04 (see comment in code)
* Removed duplicate command
* Code review, data type updates
* Data type updated, use #pragma once
* Logging update
* Renaming
* Renaming
* Removed duplicate code
* Renaming
* Refactoring
* Removed TODO
* Updated logging
* Comment update
* Comment update
* Updated GetEventStatusNotification
* Removed goto
* Options -h and -v do not require to be the root user (fixes issue #166)
* Updated error messages and exception handling
* Added number of supported LUNs to protobuf interface
* Updated list handling of protobuf interface
* Comment update
* Improved error handling
* Added missing return statement
* Allow empty device list
* Fixed unnecessary detach_all() when config file isn't read (#221)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Protecting/unprotecing a non-ready medium is considered not possible
* Updated error message
* Extract detaching all devices, add parameter list support
* Comment update
* Fixed typos
* Restore files in use if dry-run fails
* Feature configurable reserved id for rascsi-web (#223)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make the reserved SCSI id configurable through an argument to start.sh; make the rascsi-web service reserve 7 by default to maintain current behavior.
* Make it possible to reserve multiple scsi ids in the web ui
* Added support for reserved IDs
* rasctl output update
* Re-ordered logging
* Logging update
* Make use of the newly introduced 'rasctl -r' to have the webui reserve ids on the backend side upon startup (#224)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Updated string to integer conversions
* Improved string to integer conversion
* Move string to integer conversion to rasutil
* Removed unused variable
* Fixed detach, which did not remove the filename from the filenames set
* Re-added folder to gitignore
* Set/Display patch version
* Fix issue where reserved ids were not reserved again when restarting rascsi-service from within the web ui (#226)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Make sure reserved SCSI IDs gets reserved again when restarting rascsi-service from within the web ui
* Updated interface comment
* Accept daynaport as legacy type
* Fixed typo
* Remove file from the list of files in use when ejected with a SCSI command
* Check for attached device for INSERT, EJECT, PROTECT, UNPROTECT
* Fixed error handling
* Fixed filepath handling
* Added more device shortcuts to rasctl
* Fixed function declaration
* Extraced ATTACH and DETACH
* Extracted INSERT
* Simplified ProcessCmd
* Comment update
* Fixed memory leak
* Log information on whether a new device is protected or read-only
* Updated errro message
* Updated error message
* Initialize private fields
* Updated rasctl help message
* Added DEVICE_INFO to protobuf interface
* Improved error handling
* DEVICE_INFO supports device list
* Updated server info handling
* Unified result handling with oneof, all commands now return PbResult
* A result can always return a message string
* Fixed typo
* Simplified sending of commands
* Improved error handling
* Removed unused code
* Updated error handling
* Code cleanup
* Comment update
* Updated logging
* Updated error handling
* Updated handling of removed status for devices without image file support
* Comment update
* Fixed typo
* Updated logging
* Updated parameter handling
* Updated setting default interfaces
* Revert "Updated setting default interfaces"
This reverts commit 210abc775d9a79dd0c631cf3877966a2923f4d5b.
* Revert "Updated parameter handling"
This reverts commit 35302addd59f5f5e1cc032888ba32dcbb426a846.
* rascsi supports reserving IDs
* Updated help message
* Replaced BOOL by bool
* Logging update
* Logging update
* Added default parameters to device properties
* Return parameters a device was set up with
* Improved device initialization
* Updated default parameter handling
* Updated default parameter handling
* Fixed typo
* Comment updates
* Comment update
* Manage default parameters in the respective device
* Do not pass empty parameter string
* Added supports_params flag
* Made comparisons more consistent
* Updated error handling
* Updated exception handling
* Renaming
* Comment update
* NEC sectors size must be 512 bytes
* Updated logging
* Updated vendor name handling
* Updated handling of media loading/unloading
* Added stoppable property and stopped status
* Made MO stoppable
* Removed duplicate code
* Removed duplicate code
* Copy read-only property
* Renaming
* Removed duplicate code, added START/STOP
* Improved default parameter handling
* Updated load/eject handling
* Logging update
* Fixed typo
* Verified START/STOP UNIT
* Updated logging
* Updated status handling
* Updated status handling
* More status handling updates
* Logging update
* Made instance fields local variables
* Made disk_t private
* Made some data structures private
* Fixed ARM compile issue
* Fixed ctapdriver initialization issue
* Reset read-only status when opening an image file
* Made logging more consistent
* Updated log level
* Log load/eject on error level for testing
* Revert "Log load/eject on error level for testing"
This reverts commit d35a15ea8e520517d25e1e1054ad1aeda9f85f2e.
* Assume drive is not ready after having been stopped
* Updated status handling
* Fixed typo
* Rebuild manpage
* Fixed issue #234 (MODE SENSE (10) returns wrong mode parameter header)
* Removed unused code
* Enum data type update
* Removed duplicate range check
* Removed duplicate code
* Removed more duplicate code
* Logging update
* SCCD sector size was not meant to be configurable
* Updated configurable sector size properties
* Removed assertion
* Improved error handling
* Updated error handling
* Re-added special error handling only relevant for SASI
* Added TODOs
* Comment update
* Added override modifier
* Removed obsolete debug flag (related code was not called)
* Comment and logging updates
* Removed obsolete try/catch
* Revert "Removed obsolete try/catch"
This reverts commit 39ca12d8b153c706316ce79f4fec65c9abc60024.
* Comment update
* Removed duplicate code
* Updated error messages, use more foreach loops
* Updated logging
* Logging update
* README update
* Added block_count
* Evaluate block size when inserting a media
* rasctl display capacity if available
* Info message update
* Added missing product name to NEC vital product data
* MO block size depends on capacity only
* Extended property/status display
* Property display update
* Updated error handling
* (Doc only changes) Fix typos and add clarification that SASI is used on Unix workstations
Co-authored-by: Daniel Markstedt <markstedt@gmail.com>
Co-authored-by: Tony Kuker <akuker@gmail.com>
2021-09-15 01:23:04 +00:00
|
|
|
|
return false;
|
2020-08-28 14:18:02 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// If you do not need the next block, end here
|
|
|
|
|
ctrl.next++;
|
|
|
|
|
if (!cont) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Check the next block
|
Configurable block size, controller/device cleanup, dispatchers per device, bridge setup (#203)
* Use foreach
* Renaming
* Revert "Renaming"
This reverts commit b0554b9c0a052e282625a4565d429313af2b3cc7.
* Manpage updates
* Removed obsolete assertions
* Replaced QWORD by uint64_t and removed respective typedef
* Removed LPCSTR typedef
* Removed LPCTSTR typedef
* Removed LPTSTR typedef
* Renamed SCSI command interface classes
* Renamed xm6.h to rascsi.h
* Moved interface classes to new interfaces subfolder
* Added include
* Fixed compilation issues of 64 bit Ubuntu
* Renaming
* Sort block sizes
* protobuf interface description update
* Fixed handling for sector size for non-disk devices
* Fixed typo
* Fixed comment
* Translate code commends into English, removing redundant ones (#214)
* Comment update
* For other bridge interfaces than eth0 IP address and netmask can be provided
* Added special rule for testing on x86 PCs
* Translated code comments into English, removing some redundant ones in the process, plus fixing typos (#215)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* Comment update
* Removed unused typedefs
* Added special rule for testing on x86 PCs
* Comment update
* Comment update
* Updated capacity calculation
* Updated protobuf interface to signal parameter support
* Simplified protobuf interface
* Updated rasctl server info output
* Updated logging
* protobuf interface has to return block only if it is configurable
* Updated block size handling
* Improved error message if ID is already in use
* Removed typedef
* Renamed protobuf interface method
* Renaming
* Use protobuf::Messsge instead of protobuf::MessageLite
* default_image_folder cannot be an empty string, removed obsolete check
* Logging update
* Made some error messages more concise
* Removed magic constant
* Updated error message
* Comment update
* Names of removable media drives must be constant and not contain the capacity
* Improved DeviceFactory error handling
* More error handing improvements
* Interface comment update
* Pass interface list to ctapdriver when creating bridge
* Moved initialization code
* Updated rasctl server information output
* Improved handling of MO capacities
* Renaming
* Comment update
* Reject inserting a medium when there is already a medium present (eject first)
* Save list of files in use before dry-run
* Updated rasctl server info message
* Comment update
* Fixed typo
* Cleaned list handling
* Sort devices list by ID *and unit*
* Improved block size check
* Fixed issue with missing method in old Raspberry Pi OS protobuf implementation
* Updated error message
* Improve and fix bugs with saving&loading configuration files for rascsi-web (#218)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Removed unused structures, code and type cleanup
* Use unscoped enums for commands
* SASI Format opcode is 0x06, not 0x04 (see comment in code)
* Removed duplicate command
* Code review, data type updates
* Data type updated, use #pragma once
* Logging update
* Renaming
* Renaming
* Removed duplicate code
* Renaming
* Refactoring
* Removed TODO
* Updated logging
* Comment update
* Comment update
* Updated GetEventStatusNotification
* Removed goto
* Options -h and -v do not require to be the root user (fixes issue #166)
* Updated error messages and exception handling
* Added number of supported LUNs to protobuf interface
* Updated list handling of protobuf interface
* Comment update
* Improved error handling
* Added missing return statement
* Allow empty device list
* Fixed unnecessary detach_all() when config file isn't read (#221)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Protecting/unprotecing a non-ready medium is considered not possible
* Updated error message
* Extract detaching all devices, add parameter list support
* Comment update
* Fixed typos
* Restore files in use if dry-run fails
* Feature configurable reserved id for rascsi-web (#223)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make the reserved SCSI id configurable through an argument to start.sh; make the rascsi-web service reserve 7 by default to maintain current behavior.
* Make it possible to reserve multiple scsi ids in the web ui
* Added support for reserved IDs
* rasctl output update
* Re-ordered logging
* Logging update
* Make use of the newly introduced 'rasctl -r' to have the webui reserve ids on the backend side upon startup (#224)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Updated string to integer conversions
* Improved string to integer conversion
* Move string to integer conversion to rasutil
* Removed unused variable
* Fixed detach, which did not remove the filename from the filenames set
* Re-added folder to gitignore
* Set/Display patch version
* Fix issue where reserved ids were not reserved again when restarting rascsi-service from within the web ui (#226)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Make sure reserved SCSI IDs gets reserved again when restarting rascsi-service from within the web ui
* Updated interface comment
* Accept daynaport as legacy type
* Fixed typo
* Remove file from the list of files in use when ejected with a SCSI command
* Check for attached device for INSERT, EJECT, PROTECT, UNPROTECT
* Fixed error handling
* Fixed filepath handling
* Added more device shortcuts to rasctl
* Fixed function declaration
* Extraced ATTACH and DETACH
* Extracted INSERT
* Simplified ProcessCmd
* Comment update
* Fixed memory leak
* Log information on whether a new device is protected or read-only
* Updated errro message
* Updated error message
* Initialize private fields
* Updated rasctl help message
* Added DEVICE_INFO to protobuf interface
* Improved error handling
* DEVICE_INFO supports device list
* Updated server info handling
* Unified result handling with oneof, all commands now return PbResult
* A result can always return a message string
* Fixed typo
* Simplified sending of commands
* Improved error handling
* Removed unused code
* Updated error handling
* Code cleanup
* Comment update
* Updated logging
* Updated error handling
* Updated handling of removed status for devices without image file support
* Comment update
* Fixed typo
* Updated logging
* Updated parameter handling
* Updated setting default interfaces
* Revert "Updated setting default interfaces"
This reverts commit 210abc775d9a79dd0c631cf3877966a2923f4d5b.
* Revert "Updated parameter handling"
This reverts commit 35302addd59f5f5e1cc032888ba32dcbb426a846.
* rascsi supports reserving IDs
* Updated help message
* Replaced BOOL by bool
* Logging update
* Logging update
* Added default parameters to device properties
* Return parameters a device was set up with
* Improved device initialization
* Updated default parameter handling
* Updated default parameter handling
* Fixed typo
* Comment updates
* Comment update
* Manage default parameters in the respective device
* Do not pass empty parameter string
* Added supports_params flag
* Made comparisons more consistent
* Updated error handling
* Updated exception handling
* Renaming
* Comment update
* NEC sectors size must be 512 bytes
* Updated logging
* Updated vendor name handling
* Updated handling of media loading/unloading
* Added stoppable property and stopped status
* Made MO stoppable
* Removed duplicate code
* Removed duplicate code
* Copy read-only property
* Renaming
* Removed duplicate code, added START/STOP
* Improved default parameter handling
* Updated load/eject handling
* Logging update
* Fixed typo
* Verified START/STOP UNIT
* Updated logging
* Updated status handling
* Updated status handling
* More status handling updates
* Logging update
* Made instance fields local variables
* Made disk_t private
* Made some data structures private
* Fixed ARM compile issue
* Fixed ctapdriver initialization issue
* Reset read-only status when opening an image file
* Made logging more consistent
* Updated log level
* Log load/eject on error level for testing
* Revert "Log load/eject on error level for testing"
This reverts commit d35a15ea8e520517d25e1e1054ad1aeda9f85f2e.
* Assume drive is not ready after having been stopped
* Updated status handling
* Fixed typo
* Rebuild manpage
* Fixed issue #234 (MODE SENSE (10) returns wrong mode parameter header)
* Removed unused code
* Enum data type update
* Removed duplicate range check
* Removed duplicate code
* Removed more duplicate code
* Logging update
* SCCD sector size was not meant to be configurable
* Updated configurable sector size properties
* Removed assertion
* Improved error handling
* Updated error handling
* Re-added special error handling only relevant for SASI
* Added TODOs
* Comment update
* Added override modifier
* Removed obsolete debug flag (related code was not called)
* Comment and logging updates
* Removed obsolete try/catch
* Revert "Removed obsolete try/catch"
This reverts commit 39ca12d8b153c706316ce79f4fec65c9abc60024.
* Comment update
* Removed duplicate code
* Updated error messages, use more foreach loops
* Updated logging
* Logging update
* README update
* Added block_count
* Evaluate block size when inserting a media
* rasctl display capacity if available
* Info message update
* Added missing product name to NEC vital product data
* MO block size depends on capacity only
* Extended property/status display
* Property display update
* Updated error handling
* (Doc only changes) Fix typos and add clarification that SASI is used on Unix workstations
Co-authored-by: Daniel Markstedt <markstedt@gmail.com>
Co-authored-by: Tony Kuker <akuker@gmail.com>
2021-09-15 01:23:04 +00:00
|
|
|
|
ctrl.length = device->WriteCheck(ctrl.next - 1);
|
2020-08-28 14:18:02 +00:00
|
|
|
|
if (ctrl.length <= 0) {
|
|
|
|
|
// Cannot write
|
Configurable block size, controller/device cleanup, dispatchers per device, bridge setup (#203)
* Use foreach
* Renaming
* Revert "Renaming"
This reverts commit b0554b9c0a052e282625a4565d429313af2b3cc7.
* Manpage updates
* Removed obsolete assertions
* Replaced QWORD by uint64_t and removed respective typedef
* Removed LPCSTR typedef
* Removed LPCTSTR typedef
* Removed LPTSTR typedef
* Renamed SCSI command interface classes
* Renamed xm6.h to rascsi.h
* Moved interface classes to new interfaces subfolder
* Added include
* Fixed compilation issues of 64 bit Ubuntu
* Renaming
* Sort block sizes
* protobuf interface description update
* Fixed handling for sector size for non-disk devices
* Fixed typo
* Fixed comment
* Translate code commends into English, removing redundant ones (#214)
* Comment update
* For other bridge interfaces than eth0 IP address and netmask can be provided
* Added special rule for testing on x86 PCs
* Translated code comments into English, removing some redundant ones in the process, plus fixing typos (#215)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* Comment update
* Removed unused typedefs
* Added special rule for testing on x86 PCs
* Comment update
* Comment update
* Updated capacity calculation
* Updated protobuf interface to signal parameter support
* Simplified protobuf interface
* Updated rasctl server info output
* Updated logging
* protobuf interface has to return block only if it is configurable
* Updated block size handling
* Improved error message if ID is already in use
* Removed typedef
* Renamed protobuf interface method
* Renaming
* Use protobuf::Messsge instead of protobuf::MessageLite
* default_image_folder cannot be an empty string, removed obsolete check
* Logging update
* Made some error messages more concise
* Removed magic constant
* Updated error message
* Comment update
* Names of removable media drives must be constant and not contain the capacity
* Improved DeviceFactory error handling
* More error handing improvements
* Interface comment update
* Pass interface list to ctapdriver when creating bridge
* Moved initialization code
* Updated rasctl server information output
* Improved handling of MO capacities
* Renaming
* Comment update
* Reject inserting a medium when there is already a medium present (eject first)
* Save list of files in use before dry-run
* Updated rasctl server info message
* Comment update
* Fixed typo
* Cleaned list handling
* Sort devices list by ID *and unit*
* Improved block size check
* Fixed issue with missing method in old Raspberry Pi OS protobuf implementation
* Updated error message
* Improve and fix bugs with saving&loading configuration files for rascsi-web (#218)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Removed unused structures, code and type cleanup
* Use unscoped enums for commands
* SASI Format opcode is 0x06, not 0x04 (see comment in code)
* Removed duplicate command
* Code review, data type updates
* Data type updated, use #pragma once
* Logging update
* Renaming
* Renaming
* Removed duplicate code
* Renaming
* Refactoring
* Removed TODO
* Updated logging
* Comment update
* Comment update
* Updated GetEventStatusNotification
* Removed goto
* Options -h and -v do not require to be the root user (fixes issue #166)
* Updated error messages and exception handling
* Added number of supported LUNs to protobuf interface
* Updated list handling of protobuf interface
* Comment update
* Improved error handling
* Added missing return statement
* Allow empty device list
* Fixed unnecessary detach_all() when config file isn't read (#221)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Protecting/unprotecing a non-ready medium is considered not possible
* Updated error message
* Extract detaching all devices, add parameter list support
* Comment update
* Fixed typos
* Restore files in use if dry-run fails
* Feature configurable reserved id for rascsi-web (#223)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make the reserved SCSI id configurable through an argument to start.sh; make the rascsi-web service reserve 7 by default to maintain current behavior.
* Make it possible to reserve multiple scsi ids in the web ui
* Added support for reserved IDs
* rasctl output update
* Re-ordered logging
* Logging update
* Make use of the newly introduced 'rasctl -r' to have the webui reserve ids on the backend side upon startup (#224)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Updated string to integer conversions
* Improved string to integer conversion
* Move string to integer conversion to rasutil
* Removed unused variable
* Fixed detach, which did not remove the filename from the filenames set
* Re-added folder to gitignore
* Set/Display patch version
* Fix issue where reserved ids were not reserved again when restarting rascsi-service from within the web ui (#226)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Make sure reserved SCSI IDs gets reserved again when restarting rascsi-service from within the web ui
* Updated interface comment
* Accept daynaport as legacy type
* Fixed typo
* Remove file from the list of files in use when ejected with a SCSI command
* Check for attached device for INSERT, EJECT, PROTECT, UNPROTECT
* Fixed error handling
* Fixed filepath handling
* Added more device shortcuts to rasctl
* Fixed function declaration
* Extraced ATTACH and DETACH
* Extracted INSERT
* Simplified ProcessCmd
* Comment update
* Fixed memory leak
* Log information on whether a new device is protected or read-only
* Updated errro message
* Updated error message
* Initialize private fields
* Updated rasctl help message
* Added DEVICE_INFO to protobuf interface
* Improved error handling
* DEVICE_INFO supports device list
* Updated server info handling
* Unified result handling with oneof, all commands now return PbResult
* A result can always return a message string
* Fixed typo
* Simplified sending of commands
* Improved error handling
* Removed unused code
* Updated error handling
* Code cleanup
* Comment update
* Updated logging
* Updated error handling
* Updated handling of removed status for devices without image file support
* Comment update
* Fixed typo
* Updated logging
* Updated parameter handling
* Updated setting default interfaces
* Revert "Updated setting default interfaces"
This reverts commit 210abc775d9a79dd0c631cf3877966a2923f4d5b.
* Revert "Updated parameter handling"
This reverts commit 35302addd59f5f5e1cc032888ba32dcbb426a846.
* rascsi supports reserving IDs
* Updated help message
* Replaced BOOL by bool
* Logging update
* Logging update
* Added default parameters to device properties
* Return parameters a device was set up with
* Improved device initialization
* Updated default parameter handling
* Updated default parameter handling
* Fixed typo
* Comment updates
* Comment update
* Manage default parameters in the respective device
* Do not pass empty parameter string
* Added supports_params flag
* Made comparisons more consistent
* Updated error handling
* Updated exception handling
* Renaming
* Comment update
* NEC sectors size must be 512 bytes
* Updated logging
* Updated vendor name handling
* Updated handling of media loading/unloading
* Added stoppable property and stopped status
* Made MO stoppable
* Removed duplicate code
* Removed duplicate code
* Copy read-only property
* Renaming
* Removed duplicate code, added START/STOP
* Improved default parameter handling
* Updated load/eject handling
* Logging update
* Fixed typo
* Verified START/STOP UNIT
* Updated logging
* Updated status handling
* Updated status handling
* More status handling updates
* Logging update
* Made instance fields local variables
* Made disk_t private
* Made some data structures private
* Fixed ARM compile issue
* Fixed ctapdriver initialization issue
* Reset read-only status when opening an image file
* Made logging more consistent
* Updated log level
* Log load/eject on error level for testing
* Revert "Log load/eject on error level for testing"
This reverts commit d35a15ea8e520517d25e1e1054ad1aeda9f85f2e.
* Assume drive is not ready after having been stopped
* Updated status handling
* Fixed typo
* Rebuild manpage
* Fixed issue #234 (MODE SENSE (10) returns wrong mode parameter header)
* Removed unused code
* Enum data type update
* Removed duplicate range check
* Removed duplicate code
* Removed more duplicate code
* Logging update
* SCCD sector size was not meant to be configurable
* Updated configurable sector size properties
* Removed assertion
* Improved error handling
* Updated error handling
* Re-added special error handling only relevant for SASI
* Added TODOs
* Comment update
* Added override modifier
* Removed obsolete debug flag (related code was not called)
* Comment and logging updates
* Removed obsolete try/catch
* Revert "Removed obsolete try/catch"
This reverts commit 39ca12d8b153c706316ce79f4fec65c9abc60024.
* Comment update
* Removed duplicate code
* Updated error messages, use more foreach loops
* Updated logging
* Logging update
* README update
* Added block_count
* Evaluate block size when inserting a media
* rasctl display capacity if available
* Info message update
* Added missing product name to NEC vital product data
* MO block size depends on capacity only
* Extended property/status display
* Property display update
* Updated error handling
* (Doc only changes) Fix typos and add clarification that SASI is used on Unix workstations
Co-authored-by: Daniel Markstedt <markstedt@gmail.com>
Co-authored-by: Tony Kuker <akuker@gmail.com>
2021-09-15 01:23:04 +00:00
|
|
|
|
return false;
|
2020-08-28 14:18:02 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// If normal, work setting
|
|
|
|
|
ctrl.offset = 0;
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
// SPECIFY(SASI only)
|
2021-07-05 00:50:24 +00:00
|
|
|
|
case SASIDEV::eCmdInvalid:
|
2020-08-28 14:18:02 +00:00
|
|
|
|
break;
|
|
|
|
|
|
2021-07-05 00:50:24 +00:00
|
|
|
|
case SASIDEV::eCmdSetMcastAddr:
|
2021-02-07 19:00:48 +00:00
|
|
|
|
LOGTRACE("%s Done with DaynaPort Set Multicast Address", __PRETTY_FUNCTION__);
|
|
|
|
|
break;
|
Refactoring, device handling extensions, additional settings, improved error handling, 64 bit OS support, fixed issues (#184)
* Device type unification, support of removable media
* Added support for .hdr extension
* Removable flag cleanup
* Manpage update
* Enriched PbOperation with PbDevice
* Added file size to PbImageFile
* Added device list support
* Set image_file
* Make remote interface more robust by ignoring SIGPIPE
* Return status only once
* Fixed typo
* Error handling update
* When starting rascsi parse everything before attaching devices
* Added dry run mode
* Comment update
* Updated logging
* Added Device base class, Disk class inherits from it
* Renaming
* Use vectors for controllers and disks, as preparation for using maps
* Updated file support handling
* Comment update
* DaynaPort and Bridge inherit from Device instead of Disk
* ProcessCmd() now works with devices instead of disks
* Renaming
* Added DeviceFactory
* Improved factory
* Comment update
* protected disk_t
* Code cleanup, added translations
* Device name can be set for rascsi
* rasctl can set device name
* Manpage update
* Manpage update
* Formatting update
* Check for missing name
* Initialize fd
* Initialize type
* Fixed string length issue
* Updated capacity formatting
* Fixed typo
* Split PbDevice into device and device definition
* Added TODO
* Renaming
* Renaming
* Device types can be explicitly specified with -t (no FILE:TYPE syntax anymore)
* Fixed compile-time issue
* Removed unused Append mode, updated read-only handling
* Type handling and manpage update
* Cleanup
* rasctl parser cleanup
* Review
* Constructor update
* Added .hdr (SCRM) support to web interface, tested web interface
* Default folder can be set remotely
* Removed deprecated operation
* DETACH supports all parameters in order to detach all devices
* include cleanup
* Logging should not depend on NDEBUG, for RaSCSI it is not peformance-critical
* INFO is default log level
* Exception renaming
* Updated GetPaddedName()
* Inheritance update
* Added BlockDevice class
* Removed unused code
* Updated typedefs
* Revert "Updated typedefs"
This reverts commit 546b46215a4d9b65067a11698e59ab1123cc6d64.
* Removed unused code
* Fixed warnign
* Use standard C++ integer types, use streams to resolve printf data type issues
* Added TODOs
* Added TODO
* Renaming
* Added TODO
* Added TODO
* Improved dry-run
* Code cleanup
* Updated handling of unknown options, code review and cleanup
* Manpage update
* Added PrimaryDevice
* Include cleanup
* Added pure virtual methods
* Comment updates
* Split rasutil
* Replaced some occurrences of BOOL
* Removed obsolete RASCSI definition in xm6.h
* Removed unused code, updated TODOs, replaced BOOL
* Added capacity check (issue #192)
* Fixed (most likely) https://github.com/akuker/RASCSI/issues/191
* Fixed wrong error messages
* For root the default image folder is /home/pi/images, updated error handling
* Dynaport code review
* Improved error handling
* Implemented READ CAPACITY(16)
* Comment update
* Commands can be 16 bytes long
* Implemented READ/WRITE/VERIFY(16)
* Comment update
* Renamed method to reflect the name of the respective SCSI command
* Do not created devices during dryRun
* Fixed padding of SCSIHD_APPLE vendor and product
* Initial implementation
* Updated ReportLuns
* Byte count update
* Fixed typo
* Finalized REPORT LUNS
* Removed TODO
* Updated TODO
* TODO update
* Updated device factory
* Comment update
* 64 bit update, tested on Ubuntu 64 bit system
* Removed assertion
* SCSI hard disks always have Apple specific mode pages (resolves issue #193)
* Error messsage update, 64 bit cleanup
* Reduced streams usage
* Updated handling of device flags
* MOs are protectable
* Removed duplicate error code handling
* Removed duplicate code
* Fixed CmdReadToc buffer overflow (https://github.com/akuker/RASCSI/issues/194)
* Added naive implementation of GET EVENT STATUS NOTIFICATION to avoid wranings
* HD must set removable device bit if the media is removable
* Removed duplicate logging
* Updated daynaport additional length
* Removed broken daynaport REQUEST SENSE. Successfully tested with my Mac.
* EnableInterface should not always return TRUE
* Updated Inquiry
* Updated LUN handling
* Replaced incorrect free by delete
* Updated comments and write-protection handling
* Made default HD name consistent
* STATUS_NOERROR is default
* Fixed Eject
* More eject handling updates
* Manpage updates
* Logging update
* Changed debug level
* Logging update
* Log capacity of all media types
* Logging update
* Encapsulated disk.blocks
* Encapsulated sector size
* Added overrides
* Added more overrides
* Fixed error message
* Fixed typos
* Fixed logging
* Added logging
* Use PrimaryDevice when calling Inquiry
* Comment update
* Changed default buffer size for testing
* Reverted last change
* Removed debug output
* De-inlined methods because optimized code did not work with them inlined
* Web interface can attach Daynaport again
* Improved handling of read-only hard disks
* Fixed issue with "all" semantics of DETACH
* rasctl supports adding removable media devices without providing a filename
* Removed unused flag in PbDeviceDefinition
* Updated rasctl output for ecjected media (resolves issue #199)
* Validate default folder name when changing default folder
2021-08-21 21:45:30 +00:00
|
|
|
|
|
2020-08-28 14:18:02 +00:00
|
|
|
|
default:
|
2021-11-19 01:24:36 +00:00
|
|
|
|
LOGWARN("Received an unexpected command ($%02X) in %s", (WORD)ctrl.cmd[0] , __PRETTY_FUNCTION__)
|
2020-08-28 14:18:02 +00:00
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Buffer saved successfully
|
Configurable block size, controller/device cleanup, dispatchers per device, bridge setup (#203)
* Use foreach
* Renaming
* Revert "Renaming"
This reverts commit b0554b9c0a052e282625a4565d429313af2b3cc7.
* Manpage updates
* Removed obsolete assertions
* Replaced QWORD by uint64_t and removed respective typedef
* Removed LPCSTR typedef
* Removed LPCTSTR typedef
* Removed LPTSTR typedef
* Renamed SCSI command interface classes
* Renamed xm6.h to rascsi.h
* Moved interface classes to new interfaces subfolder
* Added include
* Fixed compilation issues of 64 bit Ubuntu
* Renaming
* Sort block sizes
* protobuf interface description update
* Fixed handling for sector size for non-disk devices
* Fixed typo
* Fixed comment
* Translate code commends into English, removing redundant ones (#214)
* Comment update
* For other bridge interfaces than eth0 IP address and netmask can be provided
* Added special rule for testing on x86 PCs
* Translated code comments into English, removing some redundant ones in the process, plus fixing typos (#215)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* Comment update
* Removed unused typedefs
* Added special rule for testing on x86 PCs
* Comment update
* Comment update
* Updated capacity calculation
* Updated protobuf interface to signal parameter support
* Simplified protobuf interface
* Updated rasctl server info output
* Updated logging
* protobuf interface has to return block only if it is configurable
* Updated block size handling
* Improved error message if ID is already in use
* Removed typedef
* Renamed protobuf interface method
* Renaming
* Use protobuf::Messsge instead of protobuf::MessageLite
* default_image_folder cannot be an empty string, removed obsolete check
* Logging update
* Made some error messages more concise
* Removed magic constant
* Updated error message
* Comment update
* Names of removable media drives must be constant and not contain the capacity
* Improved DeviceFactory error handling
* More error handing improvements
* Interface comment update
* Pass interface list to ctapdriver when creating bridge
* Moved initialization code
* Updated rasctl server information output
* Improved handling of MO capacities
* Renaming
* Comment update
* Reject inserting a medium when there is already a medium present (eject first)
* Save list of files in use before dry-run
* Updated rasctl server info message
* Comment update
* Fixed typo
* Cleaned list handling
* Sort devices list by ID *and unit*
* Improved block size check
* Fixed issue with missing method in old Raspberry Pi OS protobuf implementation
* Updated error message
* Improve and fix bugs with saving&loading configuration files for rascsi-web (#218)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Removed unused structures, code and type cleanup
* Use unscoped enums for commands
* SASI Format opcode is 0x06, not 0x04 (see comment in code)
* Removed duplicate command
* Code review, data type updates
* Data type updated, use #pragma once
* Logging update
* Renaming
* Renaming
* Removed duplicate code
* Renaming
* Refactoring
* Removed TODO
* Updated logging
* Comment update
* Comment update
* Updated GetEventStatusNotification
* Removed goto
* Options -h and -v do not require to be the root user (fixes issue #166)
* Updated error messages and exception handling
* Added number of supported LUNs to protobuf interface
* Updated list handling of protobuf interface
* Comment update
* Improved error handling
* Added missing return statement
* Allow empty device list
* Fixed unnecessary detach_all() when config file isn't read (#221)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Protecting/unprotecing a non-ready medium is considered not possible
* Updated error message
* Extract detaching all devices, add parameter list support
* Comment update
* Fixed typos
* Restore files in use if dry-run fails
* Feature configurable reserved id for rascsi-web (#223)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make the reserved SCSI id configurable through an argument to start.sh; make the rascsi-web service reserve 7 by default to maintain current behavior.
* Make it possible to reserve multiple scsi ids in the web ui
* Added support for reserved IDs
* rasctl output update
* Re-ordered logging
* Logging update
* Make use of the newly introduced 'rasctl -r' to have the webui reserve ids on the backend side upon startup (#224)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Updated string to integer conversions
* Improved string to integer conversion
* Move string to integer conversion to rasutil
* Removed unused variable
* Fixed detach, which did not remove the filename from the filenames set
* Re-added folder to gitignore
* Set/Display patch version
* Fix issue where reserved ids were not reserved again when restarting rascsi-service from within the web ui (#226)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Make sure reserved SCSI IDs gets reserved again when restarting rascsi-service from within the web ui
* Updated interface comment
* Accept daynaport as legacy type
* Fixed typo
* Remove file from the list of files in use when ejected with a SCSI command
* Check for attached device for INSERT, EJECT, PROTECT, UNPROTECT
* Fixed error handling
* Fixed filepath handling
* Added more device shortcuts to rasctl
* Fixed function declaration
* Extraced ATTACH and DETACH
* Extracted INSERT
* Simplified ProcessCmd
* Comment update
* Fixed memory leak
* Log information on whether a new device is protected or read-only
* Updated errro message
* Updated error message
* Initialize private fields
* Updated rasctl help message
* Added DEVICE_INFO to protobuf interface
* Improved error handling
* DEVICE_INFO supports device list
* Updated server info handling
* Unified result handling with oneof, all commands now return PbResult
* A result can always return a message string
* Fixed typo
* Simplified sending of commands
* Improved error handling
* Removed unused code
* Updated error handling
* Code cleanup
* Comment update
* Updated logging
* Updated error handling
* Updated handling of removed status for devices without image file support
* Comment update
* Fixed typo
* Updated logging
* Updated parameter handling
* Updated setting default interfaces
* Revert "Updated setting default interfaces"
This reverts commit 210abc775d9a79dd0c631cf3877966a2923f4d5b.
* Revert "Updated parameter handling"
This reverts commit 35302addd59f5f5e1cc032888ba32dcbb426a846.
* rascsi supports reserving IDs
* Updated help message
* Replaced BOOL by bool
* Logging update
* Logging update
* Added default parameters to device properties
* Return parameters a device was set up with
* Improved device initialization
* Updated default parameter handling
* Updated default parameter handling
* Fixed typo
* Comment updates
* Comment update
* Manage default parameters in the respective device
* Do not pass empty parameter string
* Added supports_params flag
* Made comparisons more consistent
* Updated error handling
* Updated exception handling
* Renaming
* Comment update
* NEC sectors size must be 512 bytes
* Updated logging
* Updated vendor name handling
* Updated handling of media loading/unloading
* Added stoppable property and stopped status
* Made MO stoppable
* Removed duplicate code
* Removed duplicate code
* Copy read-only property
* Renaming
* Removed duplicate code, added START/STOP
* Improved default parameter handling
* Updated load/eject handling
* Logging update
* Fixed typo
* Verified START/STOP UNIT
* Updated logging
* Updated status handling
* Updated status handling
* More status handling updates
* Logging update
* Made instance fields local variables
* Made disk_t private
* Made some data structures private
* Fixed ARM compile issue
* Fixed ctapdriver initialization issue
* Reset read-only status when opening an image file
* Made logging more consistent
* Updated log level
* Log load/eject on error level for testing
* Revert "Log load/eject on error level for testing"
This reverts commit d35a15ea8e520517d25e1e1054ad1aeda9f85f2e.
* Assume drive is not ready after having been stopped
* Updated status handling
* Fixed typo
* Rebuild manpage
* Fixed issue #234 (MODE SENSE (10) returns wrong mode parameter header)
* Removed unused code
* Enum data type update
* Removed duplicate range check
* Removed duplicate code
* Removed more duplicate code
* Logging update
* SCCD sector size was not meant to be configurable
* Updated configurable sector size properties
* Removed assertion
* Improved error handling
* Updated error handling
* Re-added special error handling only relevant for SASI
* Added TODOs
* Comment update
* Added override modifier
* Removed obsolete debug flag (related code was not called)
* Comment and logging updates
* Removed obsolete try/catch
* Revert "Removed obsolete try/catch"
This reverts commit 39ca12d8b153c706316ce79f4fec65c9abc60024.
* Comment update
* Removed duplicate code
* Updated error messages, use more foreach loops
* Updated logging
* Logging update
* README update
* Added block_count
* Evaluate block size when inserting a media
* rasctl display capacity if available
* Info message update
* Added missing product name to NEC vital product data
* MO block size depends on capacity only
* Extended property/status display
* Property display update
* Updated error handling
* (Doc only changes) Fix typos and add clarification that SASI is used on Unix workstations
Co-authored-by: Daniel Markstedt <markstedt@gmail.com>
Co-authored-by: Tony Kuker <akuker@gmail.com>
2021-09-15 01:23:04 +00:00
|
|
|
|
return true;
|
2020-08-28 14:18:02 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
//
|
|
|
|
|
// Logical unit flush
|
|
|
|
|
//
|
|
|
|
|
//---------------------------------------------------------------------------
|
2021-07-26 18:33:36 +00:00
|
|
|
|
void SASIDEV::FlushUnit()
|
2020-08-28 14:18:02 +00:00
|
|
|
|
{
|
|
|
|
|
ASSERT(ctrl.phase == BUS::dataout);
|
|
|
|
|
|
|
|
|
|
// Logical Unit
|
2021-10-13 09:03:31 +00:00
|
|
|
|
DWORD lun = GetEffectiveLun();
|
2020-08-28 14:18:02 +00:00
|
|
|
|
if (!ctrl.unit[lun]) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
2022-02-10 18:54:48 +00:00
|
|
|
|
|
|
|
|
|
Disk *disk = (Disk *)ctrl.unit[lun];
|
2020-08-28 14:18:02 +00:00
|
|
|
|
|
|
|
|
|
// WRITE system only
|
Configurable block size, controller/device cleanup, dispatchers per device, bridge setup (#203)
* Use foreach
* Renaming
* Revert "Renaming"
This reverts commit b0554b9c0a052e282625a4565d429313af2b3cc7.
* Manpage updates
* Removed obsolete assertions
* Replaced QWORD by uint64_t and removed respective typedef
* Removed LPCSTR typedef
* Removed LPCTSTR typedef
* Removed LPTSTR typedef
* Renamed SCSI command interface classes
* Renamed xm6.h to rascsi.h
* Moved interface classes to new interfaces subfolder
* Added include
* Fixed compilation issues of 64 bit Ubuntu
* Renaming
* Sort block sizes
* protobuf interface description update
* Fixed handling for sector size for non-disk devices
* Fixed typo
* Fixed comment
* Translate code commends into English, removing redundant ones (#214)
* Comment update
* For other bridge interfaces than eth0 IP address and netmask can be provided
* Added special rule for testing on x86 PCs
* Translated code comments into English, removing some redundant ones in the process, plus fixing typos (#215)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* Comment update
* Removed unused typedefs
* Added special rule for testing on x86 PCs
* Comment update
* Comment update
* Updated capacity calculation
* Updated protobuf interface to signal parameter support
* Simplified protobuf interface
* Updated rasctl server info output
* Updated logging
* protobuf interface has to return block only if it is configurable
* Updated block size handling
* Improved error message if ID is already in use
* Removed typedef
* Renamed protobuf interface method
* Renaming
* Use protobuf::Messsge instead of protobuf::MessageLite
* default_image_folder cannot be an empty string, removed obsolete check
* Logging update
* Made some error messages more concise
* Removed magic constant
* Updated error message
* Comment update
* Names of removable media drives must be constant and not contain the capacity
* Improved DeviceFactory error handling
* More error handing improvements
* Interface comment update
* Pass interface list to ctapdriver when creating bridge
* Moved initialization code
* Updated rasctl server information output
* Improved handling of MO capacities
* Renaming
* Comment update
* Reject inserting a medium when there is already a medium present (eject first)
* Save list of files in use before dry-run
* Updated rasctl server info message
* Comment update
* Fixed typo
* Cleaned list handling
* Sort devices list by ID *and unit*
* Improved block size check
* Fixed issue with missing method in old Raspberry Pi OS protobuf implementation
* Updated error message
* Improve and fix bugs with saving&loading configuration files for rascsi-web (#218)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Removed unused structures, code and type cleanup
* Use unscoped enums for commands
* SASI Format opcode is 0x06, not 0x04 (see comment in code)
* Removed duplicate command
* Code review, data type updates
* Data type updated, use #pragma once
* Logging update
* Renaming
* Renaming
* Removed duplicate code
* Renaming
* Refactoring
* Removed TODO
* Updated logging
* Comment update
* Comment update
* Updated GetEventStatusNotification
* Removed goto
* Options -h and -v do not require to be the root user (fixes issue #166)
* Updated error messages and exception handling
* Added number of supported LUNs to protobuf interface
* Updated list handling of protobuf interface
* Comment update
* Improved error handling
* Added missing return statement
* Allow empty device list
* Fixed unnecessary detach_all() when config file isn't read (#221)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Protecting/unprotecing a non-ready medium is considered not possible
* Updated error message
* Extract detaching all devices, add parameter list support
* Comment update
* Fixed typos
* Restore files in use if dry-run fails
* Feature configurable reserved id for rascsi-web (#223)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make the reserved SCSI id configurable through an argument to start.sh; make the rascsi-web service reserve 7 by default to maintain current behavior.
* Make it possible to reserve multiple scsi ids in the web ui
* Added support for reserved IDs
* rasctl output update
* Re-ordered logging
* Logging update
* Make use of the newly introduced 'rasctl -r' to have the webui reserve ids on the backend side upon startup (#224)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Updated string to integer conversions
* Improved string to integer conversion
* Move string to integer conversion to rasutil
* Removed unused variable
* Fixed detach, which did not remove the filename from the filenames set
* Re-added folder to gitignore
* Set/Display patch version
* Fix issue where reserved ids were not reserved again when restarting rascsi-service from within the web ui (#226)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Make sure reserved SCSI IDs gets reserved again when restarting rascsi-service from within the web ui
* Updated interface comment
* Accept daynaport as legacy type
* Fixed typo
* Remove file from the list of files in use when ejected with a SCSI command
* Check for attached device for INSERT, EJECT, PROTECT, UNPROTECT
* Fixed error handling
* Fixed filepath handling
* Added more device shortcuts to rasctl
* Fixed function declaration
* Extraced ATTACH and DETACH
* Extracted INSERT
* Simplified ProcessCmd
* Comment update
* Fixed memory leak
* Log information on whether a new device is protected or read-only
* Updated errro message
* Updated error message
* Initialize private fields
* Updated rasctl help message
* Added DEVICE_INFO to protobuf interface
* Improved error handling
* DEVICE_INFO supports device list
* Updated server info handling
* Unified result handling with oneof, all commands now return PbResult
* A result can always return a message string
* Fixed typo
* Simplified sending of commands
* Improved error handling
* Removed unused code
* Updated error handling
* Code cleanup
* Comment update
* Updated logging
* Updated error handling
* Updated handling of removed status for devices without image file support
* Comment update
* Fixed typo
* Updated logging
* Updated parameter handling
* Updated setting default interfaces
* Revert "Updated setting default interfaces"
This reverts commit 210abc775d9a79dd0c631cf3877966a2923f4d5b.
* Revert "Updated parameter handling"
This reverts commit 35302addd59f5f5e1cc032888ba32dcbb426a846.
* rascsi supports reserving IDs
* Updated help message
* Replaced BOOL by bool
* Logging update
* Logging update
* Added default parameters to device properties
* Return parameters a device was set up with
* Improved device initialization
* Updated default parameter handling
* Updated default parameter handling
* Fixed typo
* Comment updates
* Comment update
* Manage default parameters in the respective device
* Do not pass empty parameter string
* Added supports_params flag
* Made comparisons more consistent
* Updated error handling
* Updated exception handling
* Renaming
* Comment update
* NEC sectors size must be 512 bytes
* Updated logging
* Updated vendor name handling
* Updated handling of media loading/unloading
* Added stoppable property and stopped status
* Made MO stoppable
* Removed duplicate code
* Removed duplicate code
* Copy read-only property
* Renaming
* Removed duplicate code, added START/STOP
* Improved default parameter handling
* Updated load/eject handling
* Logging update
* Fixed typo
* Verified START/STOP UNIT
* Updated logging
* Updated status handling
* Updated status handling
* More status handling updates
* Logging update
* Made instance fields local variables
* Made disk_t private
* Made some data structures private
* Fixed ARM compile issue
* Fixed ctapdriver initialization issue
* Reset read-only status when opening an image file
* Made logging more consistent
* Updated log level
* Log load/eject on error level for testing
* Revert "Log load/eject on error level for testing"
This reverts commit d35a15ea8e520517d25e1e1054ad1aeda9f85f2e.
* Assume drive is not ready after having been stopped
* Updated status handling
* Fixed typo
* Rebuild manpage
* Fixed issue #234 (MODE SENSE (10) returns wrong mode parameter header)
* Removed unused code
* Enum data type update
* Removed duplicate range check
* Removed duplicate code
* Removed more duplicate code
* Logging update
* SCCD sector size was not meant to be configurable
* Updated configurable sector size properties
* Removed assertion
* Improved error handling
* Updated error handling
* Re-added special error handling only relevant for SASI
* Added TODOs
* Comment update
* Added override modifier
* Removed obsolete debug flag (related code was not called)
* Comment and logging updates
* Removed obsolete try/catch
* Revert "Removed obsolete try/catch"
This reverts commit 39ca12d8b153c706316ce79f4fec65c9abc60024.
* Comment update
* Removed duplicate code
* Updated error messages, use more foreach loops
* Updated logging
* Logging update
* README update
* Added block_count
* Evaluate block size when inserting a media
* rasctl display capacity if available
* Info message update
* Added missing product name to NEC vital product data
* MO block size depends on capacity only
* Extended property/status display
* Property display update
* Updated error handling
* (Doc only changes) Fix typos and add clarification that SASI is used on Unix workstations
Co-authored-by: Daniel Markstedt <markstedt@gmail.com>
Co-authored-by: Tony Kuker <akuker@gmail.com>
2021-09-15 01:23:04 +00:00
|
|
|
|
switch ((SASIDEV::sasi_command)ctrl.cmd[0]) {
|
2021-07-05 00:50:24 +00:00
|
|
|
|
case SASIDEV::eCmdWrite6:
|
|
|
|
|
case SASIDEV::eCmdWrite10:
|
Refactoring, device handling extensions, additional settings, improved error handling, 64 bit OS support, fixed issues (#184)
* Device type unification, support of removable media
* Added support for .hdr extension
* Removable flag cleanup
* Manpage update
* Enriched PbOperation with PbDevice
* Added file size to PbImageFile
* Added device list support
* Set image_file
* Make remote interface more robust by ignoring SIGPIPE
* Return status only once
* Fixed typo
* Error handling update
* When starting rascsi parse everything before attaching devices
* Added dry run mode
* Comment update
* Updated logging
* Added Device base class, Disk class inherits from it
* Renaming
* Use vectors for controllers and disks, as preparation for using maps
* Updated file support handling
* Comment update
* DaynaPort and Bridge inherit from Device instead of Disk
* ProcessCmd() now works with devices instead of disks
* Renaming
* Added DeviceFactory
* Improved factory
* Comment update
* protected disk_t
* Code cleanup, added translations
* Device name can be set for rascsi
* rasctl can set device name
* Manpage update
* Manpage update
* Formatting update
* Check for missing name
* Initialize fd
* Initialize type
* Fixed string length issue
* Updated capacity formatting
* Fixed typo
* Split PbDevice into device and device definition
* Added TODO
* Renaming
* Renaming
* Device types can be explicitly specified with -t (no FILE:TYPE syntax anymore)
* Fixed compile-time issue
* Removed unused Append mode, updated read-only handling
* Type handling and manpage update
* Cleanup
* rasctl parser cleanup
* Review
* Constructor update
* Added .hdr (SCRM) support to web interface, tested web interface
* Default folder can be set remotely
* Removed deprecated operation
* DETACH supports all parameters in order to detach all devices
* include cleanup
* Logging should not depend on NDEBUG, for RaSCSI it is not peformance-critical
* INFO is default log level
* Exception renaming
* Updated GetPaddedName()
* Inheritance update
* Added BlockDevice class
* Removed unused code
* Updated typedefs
* Revert "Updated typedefs"
This reverts commit 546b46215a4d9b65067a11698e59ab1123cc6d64.
* Removed unused code
* Fixed warnign
* Use standard C++ integer types, use streams to resolve printf data type issues
* Added TODOs
* Added TODO
* Renaming
* Added TODO
* Added TODO
* Improved dry-run
* Code cleanup
* Updated handling of unknown options, code review and cleanup
* Manpage update
* Added PrimaryDevice
* Include cleanup
* Added pure virtual methods
* Comment updates
* Split rasutil
* Replaced some occurrences of BOOL
* Removed obsolete RASCSI definition in xm6.h
* Removed unused code, updated TODOs, replaced BOOL
* Added capacity check (issue #192)
* Fixed (most likely) https://github.com/akuker/RASCSI/issues/191
* Fixed wrong error messages
* For root the default image folder is /home/pi/images, updated error handling
* Dynaport code review
* Improved error handling
* Implemented READ CAPACITY(16)
* Comment update
* Commands can be 16 bytes long
* Implemented READ/WRITE/VERIFY(16)
* Comment update
* Renamed method to reflect the name of the respective SCSI command
* Do not created devices during dryRun
* Fixed padding of SCSIHD_APPLE vendor and product
* Initial implementation
* Updated ReportLuns
* Byte count update
* Fixed typo
* Finalized REPORT LUNS
* Removed TODO
* Updated TODO
* TODO update
* Updated device factory
* Comment update
* 64 bit update, tested on Ubuntu 64 bit system
* Removed assertion
* SCSI hard disks always have Apple specific mode pages (resolves issue #193)
* Error messsage update, 64 bit cleanup
* Reduced streams usage
* Updated handling of device flags
* MOs are protectable
* Removed duplicate error code handling
* Removed duplicate code
* Fixed CmdReadToc buffer overflow (https://github.com/akuker/RASCSI/issues/194)
* Added naive implementation of GET EVENT STATUS NOTIFICATION to avoid wranings
* HD must set removable device bit if the media is removable
* Removed duplicate logging
* Updated daynaport additional length
* Removed broken daynaport REQUEST SENSE. Successfully tested with my Mac.
* EnableInterface should not always return TRUE
* Updated Inquiry
* Updated LUN handling
* Replaced incorrect free by delete
* Updated comments and write-protection handling
* Made default HD name consistent
* STATUS_NOERROR is default
* Fixed Eject
* More eject handling updates
* Manpage updates
* Logging update
* Changed debug level
* Logging update
* Log capacity of all media types
* Logging update
* Encapsulated disk.blocks
* Encapsulated sector size
* Added overrides
* Added more overrides
* Fixed error message
* Fixed typos
* Fixed logging
* Added logging
* Use PrimaryDevice when calling Inquiry
* Comment update
* Changed default buffer size for testing
* Reverted last change
* Removed debug output
* De-inlined methods because optimized code did not work with them inlined
* Web interface can attach Daynaport again
* Improved handling of read-only hard disks
* Fixed issue with "all" semantics of DETACH
* rasctl supports adding removable media devices without providing a filename
* Removed unused flag in PbDeviceDefinition
* Updated rasctl output for ecjected media (resolves issue #199)
* Validate default folder name when changing default folder
2021-08-21 21:45:30 +00:00
|
|
|
|
case SASIDEV::eCmdWrite16:
|
2021-11-27 04:29:21 +00:00
|
|
|
|
case SASIDEV::eCmdWriteLong16:
|
Refactoring, device handling extensions, additional settings, improved error handling, 64 bit OS support, fixed issues (#184)
* Device type unification, support of removable media
* Added support for .hdr extension
* Removable flag cleanup
* Manpage update
* Enriched PbOperation with PbDevice
* Added file size to PbImageFile
* Added device list support
* Set image_file
* Make remote interface more robust by ignoring SIGPIPE
* Return status only once
* Fixed typo
* Error handling update
* When starting rascsi parse everything before attaching devices
* Added dry run mode
* Comment update
* Updated logging
* Added Device base class, Disk class inherits from it
* Renaming
* Use vectors for controllers and disks, as preparation for using maps
* Updated file support handling
* Comment update
* DaynaPort and Bridge inherit from Device instead of Disk
* ProcessCmd() now works with devices instead of disks
* Renaming
* Added DeviceFactory
* Improved factory
* Comment update
* protected disk_t
* Code cleanup, added translations
* Device name can be set for rascsi
* rasctl can set device name
* Manpage update
* Manpage update
* Formatting update
* Check for missing name
* Initialize fd
* Initialize type
* Fixed string length issue
* Updated capacity formatting
* Fixed typo
* Split PbDevice into device and device definition
* Added TODO
* Renaming
* Renaming
* Device types can be explicitly specified with -t (no FILE:TYPE syntax anymore)
* Fixed compile-time issue
* Removed unused Append mode, updated read-only handling
* Type handling and manpage update
* Cleanup
* rasctl parser cleanup
* Review
* Constructor update
* Added .hdr (SCRM) support to web interface, tested web interface
* Default folder can be set remotely
* Removed deprecated operation
* DETACH supports all parameters in order to detach all devices
* include cleanup
* Logging should not depend on NDEBUG, for RaSCSI it is not peformance-critical
* INFO is default log level
* Exception renaming
* Updated GetPaddedName()
* Inheritance update
* Added BlockDevice class
* Removed unused code
* Updated typedefs
* Revert "Updated typedefs"
This reverts commit 546b46215a4d9b65067a11698e59ab1123cc6d64.
* Removed unused code
* Fixed warnign
* Use standard C++ integer types, use streams to resolve printf data type issues
* Added TODOs
* Added TODO
* Renaming
* Added TODO
* Added TODO
* Improved dry-run
* Code cleanup
* Updated handling of unknown options, code review and cleanup
* Manpage update
* Added PrimaryDevice
* Include cleanup
* Added pure virtual methods
* Comment updates
* Split rasutil
* Replaced some occurrences of BOOL
* Removed obsolete RASCSI definition in xm6.h
* Removed unused code, updated TODOs, replaced BOOL
* Added capacity check (issue #192)
* Fixed (most likely) https://github.com/akuker/RASCSI/issues/191
* Fixed wrong error messages
* For root the default image folder is /home/pi/images, updated error handling
* Dynaport code review
* Improved error handling
* Implemented READ CAPACITY(16)
* Comment update
* Commands can be 16 bytes long
* Implemented READ/WRITE/VERIFY(16)
* Comment update
* Renamed method to reflect the name of the respective SCSI command
* Do not created devices during dryRun
* Fixed padding of SCSIHD_APPLE vendor and product
* Initial implementation
* Updated ReportLuns
* Byte count update
* Fixed typo
* Finalized REPORT LUNS
* Removed TODO
* Updated TODO
* TODO update
* Updated device factory
* Comment update
* 64 bit update, tested on Ubuntu 64 bit system
* Removed assertion
* SCSI hard disks always have Apple specific mode pages (resolves issue #193)
* Error messsage update, 64 bit cleanup
* Reduced streams usage
* Updated handling of device flags
* MOs are protectable
* Removed duplicate error code handling
* Removed duplicate code
* Fixed CmdReadToc buffer overflow (https://github.com/akuker/RASCSI/issues/194)
* Added naive implementation of GET EVENT STATUS NOTIFICATION to avoid wranings
* HD must set removable device bit if the media is removable
* Removed duplicate logging
* Updated daynaport additional length
* Removed broken daynaport REQUEST SENSE. Successfully tested with my Mac.
* EnableInterface should not always return TRUE
* Updated Inquiry
* Updated LUN handling
* Replaced incorrect free by delete
* Updated comments and write-protection handling
* Made default HD name consistent
* STATUS_NOERROR is default
* Fixed Eject
* More eject handling updates
* Manpage updates
* Logging update
* Changed debug level
* Logging update
* Log capacity of all media types
* Logging update
* Encapsulated disk.blocks
* Encapsulated sector size
* Added overrides
* Added more overrides
* Fixed error message
* Fixed typos
* Fixed logging
* Added logging
* Use PrimaryDevice when calling Inquiry
* Comment update
* Changed default buffer size for testing
* Reverted last change
* Removed debug output
* De-inlined methods because optimized code did not work with them inlined
* Web interface can attach Daynaport again
* Improved handling of read-only hard disks
* Fixed issue with "all" semantics of DETACH
* rasctl supports adding removable media devices without providing a filename
* Removed unused flag in PbDeviceDefinition
* Updated rasctl output for ecjected media (resolves issue #199)
* Validate default folder name when changing default folder
2021-08-21 21:45:30 +00:00
|
|
|
|
case SASIDEV::eCmdVerify10:
|
|
|
|
|
case SASIDEV::eCmdVerify16:
|
2020-08-28 14:18:02 +00:00
|
|
|
|
break;
|
Refactoring, device handling extensions, additional settings, improved error handling, 64 bit OS support, fixed issues (#184)
* Device type unification, support of removable media
* Added support for .hdr extension
* Removable flag cleanup
* Manpage update
* Enriched PbOperation with PbDevice
* Added file size to PbImageFile
* Added device list support
* Set image_file
* Make remote interface more robust by ignoring SIGPIPE
* Return status only once
* Fixed typo
* Error handling update
* When starting rascsi parse everything before attaching devices
* Added dry run mode
* Comment update
* Updated logging
* Added Device base class, Disk class inherits from it
* Renaming
* Use vectors for controllers and disks, as preparation for using maps
* Updated file support handling
* Comment update
* DaynaPort and Bridge inherit from Device instead of Disk
* ProcessCmd() now works with devices instead of disks
* Renaming
* Added DeviceFactory
* Improved factory
* Comment update
* protected disk_t
* Code cleanup, added translations
* Device name can be set for rascsi
* rasctl can set device name
* Manpage update
* Manpage update
* Formatting update
* Check for missing name
* Initialize fd
* Initialize type
* Fixed string length issue
* Updated capacity formatting
* Fixed typo
* Split PbDevice into device and device definition
* Added TODO
* Renaming
* Renaming
* Device types can be explicitly specified with -t (no FILE:TYPE syntax anymore)
* Fixed compile-time issue
* Removed unused Append mode, updated read-only handling
* Type handling and manpage update
* Cleanup
* rasctl parser cleanup
* Review
* Constructor update
* Added .hdr (SCRM) support to web interface, tested web interface
* Default folder can be set remotely
* Removed deprecated operation
* DETACH supports all parameters in order to detach all devices
* include cleanup
* Logging should not depend on NDEBUG, for RaSCSI it is not peformance-critical
* INFO is default log level
* Exception renaming
* Updated GetPaddedName()
* Inheritance update
* Added BlockDevice class
* Removed unused code
* Updated typedefs
* Revert "Updated typedefs"
This reverts commit 546b46215a4d9b65067a11698e59ab1123cc6d64.
* Removed unused code
* Fixed warnign
* Use standard C++ integer types, use streams to resolve printf data type issues
* Added TODOs
* Added TODO
* Renaming
* Added TODO
* Added TODO
* Improved dry-run
* Code cleanup
* Updated handling of unknown options, code review and cleanup
* Manpage update
* Added PrimaryDevice
* Include cleanup
* Added pure virtual methods
* Comment updates
* Split rasutil
* Replaced some occurrences of BOOL
* Removed obsolete RASCSI definition in xm6.h
* Removed unused code, updated TODOs, replaced BOOL
* Added capacity check (issue #192)
* Fixed (most likely) https://github.com/akuker/RASCSI/issues/191
* Fixed wrong error messages
* For root the default image folder is /home/pi/images, updated error handling
* Dynaport code review
* Improved error handling
* Implemented READ CAPACITY(16)
* Comment update
* Commands can be 16 bytes long
* Implemented READ/WRITE/VERIFY(16)
* Comment update
* Renamed method to reflect the name of the respective SCSI command
* Do not created devices during dryRun
* Fixed padding of SCSIHD_APPLE vendor and product
* Initial implementation
* Updated ReportLuns
* Byte count update
* Fixed typo
* Finalized REPORT LUNS
* Removed TODO
* Updated TODO
* TODO update
* Updated device factory
* Comment update
* 64 bit update, tested on Ubuntu 64 bit system
* Removed assertion
* SCSI hard disks always have Apple specific mode pages (resolves issue #193)
* Error messsage update, 64 bit cleanup
* Reduced streams usage
* Updated handling of device flags
* MOs are protectable
* Removed duplicate error code handling
* Removed duplicate code
* Fixed CmdReadToc buffer overflow (https://github.com/akuker/RASCSI/issues/194)
* Added naive implementation of GET EVENT STATUS NOTIFICATION to avoid wranings
* HD must set removable device bit if the media is removable
* Removed duplicate logging
* Updated daynaport additional length
* Removed broken daynaport REQUEST SENSE. Successfully tested with my Mac.
* EnableInterface should not always return TRUE
* Updated Inquiry
* Updated LUN handling
* Replaced incorrect free by delete
* Updated comments and write-protection handling
* Made default HD name consistent
* STATUS_NOERROR is default
* Fixed Eject
* More eject handling updates
* Manpage updates
* Logging update
* Changed debug level
* Logging update
* Log capacity of all media types
* Logging update
* Encapsulated disk.blocks
* Encapsulated sector size
* Added overrides
* Added more overrides
* Fixed error message
* Fixed typos
* Fixed logging
* Added logging
* Use PrimaryDevice when calling Inquiry
* Comment update
* Changed default buffer size for testing
* Reverted last change
* Removed debug output
* De-inlined methods because optimized code did not work with them inlined
* Web interface can attach Daynaport again
* Improved handling of read-only hard disks
* Fixed issue with "all" semantics of DETACH
* rasctl supports adding removable media devices without providing a filename
* Removed unused flag in PbDeviceDefinition
* Updated rasctl output for ecjected media (resolves issue #199)
* Validate default folder name when changing default folder
2021-08-21 21:45:30 +00:00
|
|
|
|
|
Configurable block size, controller/device cleanup, dispatchers per device, bridge setup (#203)
* Use foreach
* Renaming
* Revert "Renaming"
This reverts commit b0554b9c0a052e282625a4565d429313af2b3cc7.
* Manpage updates
* Removed obsolete assertions
* Replaced QWORD by uint64_t and removed respective typedef
* Removed LPCSTR typedef
* Removed LPCTSTR typedef
* Removed LPTSTR typedef
* Renamed SCSI command interface classes
* Renamed xm6.h to rascsi.h
* Moved interface classes to new interfaces subfolder
* Added include
* Fixed compilation issues of 64 bit Ubuntu
* Renaming
* Sort block sizes
* protobuf interface description update
* Fixed handling for sector size for non-disk devices
* Fixed typo
* Fixed comment
* Translate code commends into English, removing redundant ones (#214)
* Comment update
* For other bridge interfaces than eth0 IP address and netmask can be provided
* Added special rule for testing on x86 PCs
* Translated code comments into English, removing some redundant ones in the process, plus fixing typos (#215)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* Comment update
* Removed unused typedefs
* Added special rule for testing on x86 PCs
* Comment update
* Comment update
* Updated capacity calculation
* Updated protobuf interface to signal parameter support
* Simplified protobuf interface
* Updated rasctl server info output
* Updated logging
* protobuf interface has to return block only if it is configurable
* Updated block size handling
* Improved error message if ID is already in use
* Removed typedef
* Renamed protobuf interface method
* Renaming
* Use protobuf::Messsge instead of protobuf::MessageLite
* default_image_folder cannot be an empty string, removed obsolete check
* Logging update
* Made some error messages more concise
* Removed magic constant
* Updated error message
* Comment update
* Names of removable media drives must be constant and not contain the capacity
* Improved DeviceFactory error handling
* More error handing improvements
* Interface comment update
* Pass interface list to ctapdriver when creating bridge
* Moved initialization code
* Updated rasctl server information output
* Improved handling of MO capacities
* Renaming
* Comment update
* Reject inserting a medium when there is already a medium present (eject first)
* Save list of files in use before dry-run
* Updated rasctl server info message
* Comment update
* Fixed typo
* Cleaned list handling
* Sort devices list by ID *and unit*
* Improved block size check
* Fixed issue with missing method in old Raspberry Pi OS protobuf implementation
* Updated error message
* Improve and fix bugs with saving&loading configuration files for rascsi-web (#218)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Removed unused structures, code and type cleanup
* Use unscoped enums for commands
* SASI Format opcode is 0x06, not 0x04 (see comment in code)
* Removed duplicate command
* Code review, data type updates
* Data type updated, use #pragma once
* Logging update
* Renaming
* Renaming
* Removed duplicate code
* Renaming
* Refactoring
* Removed TODO
* Updated logging
* Comment update
* Comment update
* Updated GetEventStatusNotification
* Removed goto
* Options -h and -v do not require to be the root user (fixes issue #166)
* Updated error messages and exception handling
* Added number of supported LUNs to protobuf interface
* Updated list handling of protobuf interface
* Comment update
* Improved error handling
* Added missing return statement
* Allow empty device list
* Fixed unnecessary detach_all() when config file isn't read (#221)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Protecting/unprotecing a non-ready medium is considered not possible
* Updated error message
* Extract detaching all devices, add parameter list support
* Comment update
* Fixed typos
* Restore files in use if dry-run fails
* Feature configurable reserved id for rascsi-web (#223)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make the reserved SCSI id configurable through an argument to start.sh; make the rascsi-web service reserve 7 by default to maintain current behavior.
* Make it possible to reserve multiple scsi ids in the web ui
* Added support for reserved IDs
* rasctl output update
* Re-ordered logging
* Logging update
* Make use of the newly introduced 'rasctl -r' to have the webui reserve ids on the backend side upon startup (#224)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Updated string to integer conversions
* Improved string to integer conversion
* Move string to integer conversion to rasutil
* Removed unused variable
* Fixed detach, which did not remove the filename from the filenames set
* Re-added folder to gitignore
* Set/Display patch version
* Fix issue where reserved ids were not reserved again when restarting rascsi-service from within the web ui (#226)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Make sure reserved SCSI IDs gets reserved again when restarting rascsi-service from within the web ui
* Updated interface comment
* Accept daynaport as legacy type
* Fixed typo
* Remove file from the list of files in use when ejected with a SCSI command
* Check for attached device for INSERT, EJECT, PROTECT, UNPROTECT
* Fixed error handling
* Fixed filepath handling
* Added more device shortcuts to rasctl
* Fixed function declaration
* Extraced ATTACH and DETACH
* Extracted INSERT
* Simplified ProcessCmd
* Comment update
* Fixed memory leak
* Log information on whether a new device is protected or read-only
* Updated errro message
* Updated error message
* Initialize private fields
* Updated rasctl help message
* Added DEVICE_INFO to protobuf interface
* Improved error handling
* DEVICE_INFO supports device list
* Updated server info handling
* Unified result handling with oneof, all commands now return PbResult
* A result can always return a message string
* Fixed typo
* Simplified sending of commands
* Improved error handling
* Removed unused code
* Updated error handling
* Code cleanup
* Comment update
* Updated logging
* Updated error handling
* Updated handling of removed status for devices without image file support
* Comment update
* Fixed typo
* Updated logging
* Updated parameter handling
* Updated setting default interfaces
* Revert "Updated setting default interfaces"
This reverts commit 210abc775d9a79dd0c631cf3877966a2923f4d5b.
* Revert "Updated parameter handling"
This reverts commit 35302addd59f5f5e1cc032888ba32dcbb426a846.
* rascsi supports reserving IDs
* Updated help message
* Replaced BOOL by bool
* Logging update
* Logging update
* Added default parameters to device properties
* Return parameters a device was set up with
* Improved device initialization
* Updated default parameter handling
* Updated default parameter handling
* Fixed typo
* Comment updates
* Comment update
* Manage default parameters in the respective device
* Do not pass empty parameter string
* Added supports_params flag
* Made comparisons more consistent
* Updated error handling
* Updated exception handling
* Renaming
* Comment update
* NEC sectors size must be 512 bytes
* Updated logging
* Updated vendor name handling
* Updated handling of media loading/unloading
* Added stoppable property and stopped status
* Made MO stoppable
* Removed duplicate code
* Removed duplicate code
* Copy read-only property
* Renaming
* Removed duplicate code, added START/STOP
* Improved default parameter handling
* Updated load/eject handling
* Logging update
* Fixed typo
* Verified START/STOP UNIT
* Updated logging
* Updated status handling
* Updated status handling
* More status handling updates
* Logging update
* Made instance fields local variables
* Made disk_t private
* Made some data structures private
* Fixed ARM compile issue
* Fixed ctapdriver initialization issue
* Reset read-only status when opening an image file
* Made logging more consistent
* Updated log level
* Log load/eject on error level for testing
* Revert "Log load/eject on error level for testing"
This reverts commit d35a15ea8e520517d25e1e1054ad1aeda9f85f2e.
* Assume drive is not ready after having been stopped
* Updated status handling
* Fixed typo
* Rebuild manpage
* Fixed issue #234 (MODE SENSE (10) returns wrong mode parameter header)
* Removed unused code
* Enum data type update
* Removed duplicate range check
* Removed duplicate code
* Removed more duplicate code
* Logging update
* SCCD sector size was not meant to be configurable
* Updated configurable sector size properties
* Removed assertion
* Improved error handling
* Updated error handling
* Re-added special error handling only relevant for SASI
* Added TODOs
* Comment update
* Added override modifier
* Removed obsolete debug flag (related code was not called)
* Comment and logging updates
* Removed obsolete try/catch
* Revert "Removed obsolete try/catch"
This reverts commit 39ca12d8b153c706316ce79f4fec65c9abc60024.
* Comment update
* Removed duplicate code
* Updated error messages, use more foreach loops
* Updated logging
* Logging update
* README update
* Added block_count
* Evaluate block size when inserting a media
* rasctl display capacity if available
* Info message update
* Added missing product name to NEC vital product data
* MO block size depends on capacity only
* Extended property/status display
* Property display update
* Updated error handling
* (Doc only changes) Fix typos and add clarification that SASI is used on Unix workstations
Co-authored-by: Daniel Markstedt <markstedt@gmail.com>
Co-authored-by: Tony Kuker <akuker@gmail.com>
2021-09-15 01:23:04 +00:00
|
|
|
|
case SASIDEV::eCmdModeSelect6:
|
2021-07-05 00:50:24 +00:00
|
|
|
|
case SASIDEV::eCmdModeSelect10:
|
Refactoring, device handling extensions, additional settings, improved error handling, 64 bit OS support, fixed issues (#184)
* Device type unification, support of removable media
* Added support for .hdr extension
* Removable flag cleanup
* Manpage update
* Enriched PbOperation with PbDevice
* Added file size to PbImageFile
* Added device list support
* Set image_file
* Make remote interface more robust by ignoring SIGPIPE
* Return status only once
* Fixed typo
* Error handling update
* When starting rascsi parse everything before attaching devices
* Added dry run mode
* Comment update
* Updated logging
* Added Device base class, Disk class inherits from it
* Renaming
* Use vectors for controllers and disks, as preparation for using maps
* Updated file support handling
* Comment update
* DaynaPort and Bridge inherit from Device instead of Disk
* ProcessCmd() now works with devices instead of disks
* Renaming
* Added DeviceFactory
* Improved factory
* Comment update
* protected disk_t
* Code cleanup, added translations
* Device name can be set for rascsi
* rasctl can set device name
* Manpage update
* Manpage update
* Formatting update
* Check for missing name
* Initialize fd
* Initialize type
* Fixed string length issue
* Updated capacity formatting
* Fixed typo
* Split PbDevice into device and device definition
* Added TODO
* Renaming
* Renaming
* Device types can be explicitly specified with -t (no FILE:TYPE syntax anymore)
* Fixed compile-time issue
* Removed unused Append mode, updated read-only handling
* Type handling and manpage update
* Cleanup
* rasctl parser cleanup
* Review
* Constructor update
* Added .hdr (SCRM) support to web interface, tested web interface
* Default folder can be set remotely
* Removed deprecated operation
* DETACH supports all parameters in order to detach all devices
* include cleanup
* Logging should not depend on NDEBUG, for RaSCSI it is not peformance-critical
* INFO is default log level
* Exception renaming
* Updated GetPaddedName()
* Inheritance update
* Added BlockDevice class
* Removed unused code
* Updated typedefs
* Revert "Updated typedefs"
This reverts commit 546b46215a4d9b65067a11698e59ab1123cc6d64.
* Removed unused code
* Fixed warnign
* Use standard C++ integer types, use streams to resolve printf data type issues
* Added TODOs
* Added TODO
* Renaming
* Added TODO
* Added TODO
* Improved dry-run
* Code cleanup
* Updated handling of unknown options, code review and cleanup
* Manpage update
* Added PrimaryDevice
* Include cleanup
* Added pure virtual methods
* Comment updates
* Split rasutil
* Replaced some occurrences of BOOL
* Removed obsolete RASCSI definition in xm6.h
* Removed unused code, updated TODOs, replaced BOOL
* Added capacity check (issue #192)
* Fixed (most likely) https://github.com/akuker/RASCSI/issues/191
* Fixed wrong error messages
* For root the default image folder is /home/pi/images, updated error handling
* Dynaport code review
* Improved error handling
* Implemented READ CAPACITY(16)
* Comment update
* Commands can be 16 bytes long
* Implemented READ/WRITE/VERIFY(16)
* Comment update
* Renamed method to reflect the name of the respective SCSI command
* Do not created devices during dryRun
* Fixed padding of SCSIHD_APPLE vendor and product
* Initial implementation
* Updated ReportLuns
* Byte count update
* Fixed typo
* Finalized REPORT LUNS
* Removed TODO
* Updated TODO
* TODO update
* Updated device factory
* Comment update
* 64 bit update, tested on Ubuntu 64 bit system
* Removed assertion
* SCSI hard disks always have Apple specific mode pages (resolves issue #193)
* Error messsage update, 64 bit cleanup
* Reduced streams usage
* Updated handling of device flags
* MOs are protectable
* Removed duplicate error code handling
* Removed duplicate code
* Fixed CmdReadToc buffer overflow (https://github.com/akuker/RASCSI/issues/194)
* Added naive implementation of GET EVENT STATUS NOTIFICATION to avoid wranings
* HD must set removable device bit if the media is removable
* Removed duplicate logging
* Updated daynaport additional length
* Removed broken daynaport REQUEST SENSE. Successfully tested with my Mac.
* EnableInterface should not always return TRUE
* Updated Inquiry
* Updated LUN handling
* Replaced incorrect free by delete
* Updated comments and write-protection handling
* Made default HD name consistent
* STATUS_NOERROR is default
* Fixed Eject
* More eject handling updates
* Manpage updates
* Logging update
* Changed debug level
* Logging update
* Log capacity of all media types
* Logging update
* Encapsulated disk.blocks
* Encapsulated sector size
* Added overrides
* Added more overrides
* Fixed error message
* Fixed typos
* Fixed logging
* Added logging
* Use PrimaryDevice when calling Inquiry
* Comment update
* Changed default buffer size for testing
* Reverted last change
* Removed debug output
* De-inlined methods because optimized code did not work with them inlined
* Web interface can attach Daynaport again
* Improved handling of read-only hard disks
* Fixed issue with "all" semantics of DETACH
* rasctl supports adding removable media devices without providing a filename
* Removed unused flag in PbDeviceDefinition
* Updated rasctl output for ecjected media (resolves issue #199)
* Validate default folder name when changing default folder
2021-08-21 21:45:30 +00:00
|
|
|
|
// Debug code related to Issue #2 on github, where we get an unhandled Mode Select when
|
2020-08-28 14:18:02 +00:00
|
|
|
|
// the mac is rebooted
|
|
|
|
|
// https://github.com/akuker/RASCSI/issues/2
|
2021-02-07 19:00:48 +00:00
|
|
|
|
LOGWARN("Received \'Mode Select\'\n");
|
|
|
|
|
LOGWARN(" Operation Code: [%02X]\n", (WORD)ctrl.cmd[0]);
|
|
|
|
|
LOGWARN(" Logical Unit %01X, PF %01X, SP %01X [%02X]\n",\
|
|
|
|
|
(WORD)ctrl.cmd[1] >> 5, 1 & ((WORD)ctrl.cmd[1] >> 4), \
|
|
|
|
|
(WORD)ctrl.cmd[1] & 1, (WORD)ctrl.cmd[1]);
|
|
|
|
|
LOGWARN(" Reserved: %02X\n", (WORD)ctrl.cmd[2]);
|
|
|
|
|
LOGWARN(" Reserved: %02X\n", (WORD)ctrl.cmd[3]);
|
|
|
|
|
LOGWARN(" Parameter List Len %02X\n", (WORD)ctrl.cmd[4]);
|
|
|
|
|
LOGWARN(" Reserved: %02X\n",(WORD)ctrl.cmd[5]);
|
|
|
|
|
LOGWARN(" Ctrl Len: %08X\n",(WORD)ctrl.length);
|
2020-08-28 14:18:02 +00:00
|
|
|
|
|
2022-02-10 18:54:48 +00:00
|
|
|
|
if (!disk->ModeSelect(
|
2020-08-28 14:18:02 +00:00
|
|
|
|
ctrl.cmd, ctrl.buffer, ctrl.offset)) {
|
|
|
|
|
// MODE SELECT failed
|
2021-02-07 19:00:48 +00:00
|
|
|
|
LOGWARN("Error occured while processing Mode Select command %02X\n", (unsigned char)ctrl.cmd[0]);
|
2020-08-28 14:18:02 +00:00
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
break;
|
Configurable block size, controller/device cleanup, dispatchers per device, bridge setup (#203)
* Use foreach
* Renaming
* Revert "Renaming"
This reverts commit b0554b9c0a052e282625a4565d429313af2b3cc7.
* Manpage updates
* Removed obsolete assertions
* Replaced QWORD by uint64_t and removed respective typedef
* Removed LPCSTR typedef
* Removed LPCTSTR typedef
* Removed LPTSTR typedef
* Renamed SCSI command interface classes
* Renamed xm6.h to rascsi.h
* Moved interface classes to new interfaces subfolder
* Added include
* Fixed compilation issues of 64 bit Ubuntu
* Renaming
* Sort block sizes
* protobuf interface description update
* Fixed handling for sector size for non-disk devices
* Fixed typo
* Fixed comment
* Translate code commends into English, removing redundant ones (#214)
* Comment update
* For other bridge interfaces than eth0 IP address and netmask can be provided
* Added special rule for testing on x86 PCs
* Translated code comments into English, removing some redundant ones in the process, plus fixing typos (#215)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* Comment update
* Removed unused typedefs
* Added special rule for testing on x86 PCs
* Comment update
* Comment update
* Updated capacity calculation
* Updated protobuf interface to signal parameter support
* Simplified protobuf interface
* Updated rasctl server info output
* Updated logging
* protobuf interface has to return block only if it is configurable
* Updated block size handling
* Improved error message if ID is already in use
* Removed typedef
* Renamed protobuf interface method
* Renaming
* Use protobuf::Messsge instead of protobuf::MessageLite
* default_image_folder cannot be an empty string, removed obsolete check
* Logging update
* Made some error messages more concise
* Removed magic constant
* Updated error message
* Comment update
* Names of removable media drives must be constant and not contain the capacity
* Improved DeviceFactory error handling
* More error handing improvements
* Interface comment update
* Pass interface list to ctapdriver when creating bridge
* Moved initialization code
* Updated rasctl server information output
* Improved handling of MO capacities
* Renaming
* Comment update
* Reject inserting a medium when there is already a medium present (eject first)
* Save list of files in use before dry-run
* Updated rasctl server info message
* Comment update
* Fixed typo
* Cleaned list handling
* Sort devices list by ID *and unit*
* Improved block size check
* Fixed issue with missing method in old Raspberry Pi OS protobuf implementation
* Updated error message
* Improve and fix bugs with saving&loading configuration files for rascsi-web (#218)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Removed unused structures, code and type cleanup
* Use unscoped enums for commands
* SASI Format opcode is 0x06, not 0x04 (see comment in code)
* Removed duplicate command
* Code review, data type updates
* Data type updated, use #pragma once
* Logging update
* Renaming
* Renaming
* Removed duplicate code
* Renaming
* Refactoring
* Removed TODO
* Updated logging
* Comment update
* Comment update
* Updated GetEventStatusNotification
* Removed goto
* Options -h and -v do not require to be the root user (fixes issue #166)
* Updated error messages and exception handling
* Added number of supported LUNs to protobuf interface
* Updated list handling of protobuf interface
* Comment update
* Improved error handling
* Added missing return statement
* Allow empty device list
* Fixed unnecessary detach_all() when config file isn't read (#221)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Protecting/unprotecing a non-ready medium is considered not possible
* Updated error message
* Extract detaching all devices, add parameter list support
* Comment update
* Fixed typos
* Restore files in use if dry-run fails
* Feature configurable reserved id for rascsi-web (#223)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make the reserved SCSI id configurable through an argument to start.sh; make the rascsi-web service reserve 7 by default to maintain current behavior.
* Make it possible to reserve multiple scsi ids in the web ui
* Added support for reserved IDs
* rasctl output update
* Re-ordered logging
* Logging update
* Make use of the newly introduced 'rasctl -r' to have the webui reserve ids on the backend side upon startup (#224)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Updated string to integer conversions
* Improved string to integer conversion
* Move string to integer conversion to rasutil
* Removed unused variable
* Fixed detach, which did not remove the filename from the filenames set
* Re-added folder to gitignore
* Set/Display patch version
* Fix issue where reserved ids were not reserved again when restarting rascsi-service from within the web ui (#226)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Make sure reserved SCSI IDs gets reserved again when restarting rascsi-service from within the web ui
* Updated interface comment
* Accept daynaport as legacy type
* Fixed typo
* Remove file from the list of files in use when ejected with a SCSI command
* Check for attached device for INSERT, EJECT, PROTECT, UNPROTECT
* Fixed error handling
* Fixed filepath handling
* Added more device shortcuts to rasctl
* Fixed function declaration
* Extraced ATTACH and DETACH
* Extracted INSERT
* Simplified ProcessCmd
* Comment update
* Fixed memory leak
* Log information on whether a new device is protected or read-only
* Updated errro message
* Updated error message
* Initialize private fields
* Updated rasctl help message
* Added DEVICE_INFO to protobuf interface
* Improved error handling
* DEVICE_INFO supports device list
* Updated server info handling
* Unified result handling with oneof, all commands now return PbResult
* A result can always return a message string
* Fixed typo
* Simplified sending of commands
* Improved error handling
* Removed unused code
* Updated error handling
* Code cleanup
* Comment update
* Updated logging
* Updated error handling
* Updated handling of removed status for devices without image file support
* Comment update
* Fixed typo
* Updated logging
* Updated parameter handling
* Updated setting default interfaces
* Revert "Updated setting default interfaces"
This reverts commit 210abc775d9a79dd0c631cf3877966a2923f4d5b.
* Revert "Updated parameter handling"
This reverts commit 35302addd59f5f5e1cc032888ba32dcbb426a846.
* rascsi supports reserving IDs
* Updated help message
* Replaced BOOL by bool
* Logging update
* Logging update
* Added default parameters to device properties
* Return parameters a device was set up with
* Improved device initialization
* Updated default parameter handling
* Updated default parameter handling
* Fixed typo
* Comment updates
* Comment update
* Manage default parameters in the respective device
* Do not pass empty parameter string
* Added supports_params flag
* Made comparisons more consistent
* Updated error handling
* Updated exception handling
* Renaming
* Comment update
* NEC sectors size must be 512 bytes
* Updated logging
* Updated vendor name handling
* Updated handling of media loading/unloading
* Added stoppable property and stopped status
* Made MO stoppable
* Removed duplicate code
* Removed duplicate code
* Copy read-only property
* Renaming
* Removed duplicate code, added START/STOP
* Improved default parameter handling
* Updated load/eject handling
* Logging update
* Fixed typo
* Verified START/STOP UNIT
* Updated logging
* Updated status handling
* Updated status handling
* More status handling updates
* Logging update
* Made instance fields local variables
* Made disk_t private
* Made some data structures private
* Fixed ARM compile issue
* Fixed ctapdriver initialization issue
* Reset read-only status when opening an image file
* Made logging more consistent
* Updated log level
* Log load/eject on error level for testing
* Revert "Log load/eject on error level for testing"
This reverts commit d35a15ea8e520517d25e1e1054ad1aeda9f85f2e.
* Assume drive is not ready after having been stopped
* Updated status handling
* Fixed typo
* Rebuild manpage
* Fixed issue #234 (MODE SENSE (10) returns wrong mode parameter header)
* Removed unused code
* Enum data type update
* Removed duplicate range check
* Removed duplicate code
* Removed more duplicate code
* Logging update
* SCCD sector size was not meant to be configurable
* Updated configurable sector size properties
* Removed assertion
* Improved error handling
* Updated error handling
* Re-added special error handling only relevant for SASI
* Added TODOs
* Comment update
* Added override modifier
* Removed obsolete debug flag (related code was not called)
* Comment and logging updates
* Removed obsolete try/catch
* Revert "Removed obsolete try/catch"
This reverts commit 39ca12d8b153c706316ce79f4fec65c9abc60024.
* Comment update
* Removed duplicate code
* Updated error messages, use more foreach loops
* Updated logging
* Logging update
* README update
* Added block_count
* Evaluate block size when inserting a media
* rasctl display capacity if available
* Info message update
* Added missing product name to NEC vital product data
* MO block size depends on capacity only
* Extended property/status display
* Property display update
* Updated error handling
* (Doc only changes) Fix typos and add clarification that SASI is used on Unix workstations
Co-authored-by: Daniel Markstedt <markstedt@gmail.com>
Co-authored-by: Tony Kuker <akuker@gmail.com>
2021-09-15 01:23:04 +00:00
|
|
|
|
|
2021-07-05 00:50:24 +00:00
|
|
|
|
case SASIDEV::eCmdSetMcastAddr:
|
2021-02-07 19:00:48 +00:00
|
|
|
|
// TODO: Eventually, we should store off the multicast address configuration data here...
|
|
|
|
|
break;
|
Configurable block size, controller/device cleanup, dispatchers per device, bridge setup (#203)
* Use foreach
* Renaming
* Revert "Renaming"
This reverts commit b0554b9c0a052e282625a4565d429313af2b3cc7.
* Manpage updates
* Removed obsolete assertions
* Replaced QWORD by uint64_t and removed respective typedef
* Removed LPCSTR typedef
* Removed LPCTSTR typedef
* Removed LPTSTR typedef
* Renamed SCSI command interface classes
* Renamed xm6.h to rascsi.h
* Moved interface classes to new interfaces subfolder
* Added include
* Fixed compilation issues of 64 bit Ubuntu
* Renaming
* Sort block sizes
* protobuf interface description update
* Fixed handling for sector size for non-disk devices
* Fixed typo
* Fixed comment
* Translate code commends into English, removing redundant ones (#214)
* Comment update
* For other bridge interfaces than eth0 IP address and netmask can be provided
* Added special rule for testing on x86 PCs
* Translated code comments into English, removing some redundant ones in the process, plus fixing typos (#215)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* Comment update
* Removed unused typedefs
* Added special rule for testing on x86 PCs
* Comment update
* Comment update
* Updated capacity calculation
* Updated protobuf interface to signal parameter support
* Simplified protobuf interface
* Updated rasctl server info output
* Updated logging
* protobuf interface has to return block only if it is configurable
* Updated block size handling
* Improved error message if ID is already in use
* Removed typedef
* Renamed protobuf interface method
* Renaming
* Use protobuf::Messsge instead of protobuf::MessageLite
* default_image_folder cannot be an empty string, removed obsolete check
* Logging update
* Made some error messages more concise
* Removed magic constant
* Updated error message
* Comment update
* Names of removable media drives must be constant and not contain the capacity
* Improved DeviceFactory error handling
* More error handing improvements
* Interface comment update
* Pass interface list to ctapdriver when creating bridge
* Moved initialization code
* Updated rasctl server information output
* Improved handling of MO capacities
* Renaming
* Comment update
* Reject inserting a medium when there is already a medium present (eject first)
* Save list of files in use before dry-run
* Updated rasctl server info message
* Comment update
* Fixed typo
* Cleaned list handling
* Sort devices list by ID *and unit*
* Improved block size check
* Fixed issue with missing method in old Raspberry Pi OS protobuf implementation
* Updated error message
* Improve and fix bugs with saving&loading configuration files for rascsi-web (#218)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Removed unused structures, code and type cleanup
* Use unscoped enums for commands
* SASI Format opcode is 0x06, not 0x04 (see comment in code)
* Removed duplicate command
* Code review, data type updates
* Data type updated, use #pragma once
* Logging update
* Renaming
* Renaming
* Removed duplicate code
* Renaming
* Refactoring
* Removed TODO
* Updated logging
* Comment update
* Comment update
* Updated GetEventStatusNotification
* Removed goto
* Options -h and -v do not require to be the root user (fixes issue #166)
* Updated error messages and exception handling
* Added number of supported LUNs to protobuf interface
* Updated list handling of protobuf interface
* Comment update
* Improved error handling
* Added missing return statement
* Allow empty device list
* Fixed unnecessary detach_all() when config file isn't read (#221)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Protecting/unprotecing a non-ready medium is considered not possible
* Updated error message
* Extract detaching all devices, add parameter list support
* Comment update
* Fixed typos
* Restore files in use if dry-run fails
* Feature configurable reserved id for rascsi-web (#223)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make the reserved SCSI id configurable through an argument to start.sh; make the rascsi-web service reserve 7 by default to maintain current behavior.
* Make it possible to reserve multiple scsi ids in the web ui
* Added support for reserved IDs
* rasctl output update
* Re-ordered logging
* Logging update
* Make use of the newly introduced 'rasctl -r' to have the webui reserve ids on the backend side upon startup (#224)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Updated string to integer conversions
* Improved string to integer conversion
* Move string to integer conversion to rasutil
* Removed unused variable
* Fixed detach, which did not remove the filename from the filenames set
* Re-added folder to gitignore
* Set/Display patch version
* Fix issue where reserved ids were not reserved again when restarting rascsi-service from within the web ui (#226)
* Translate code commends into English, removing redundant ones
* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
code
- Fixed a few typos and mistakes
* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device
* Add comment and TODO
* Partial translation of cfilesystem.h
* Move csv read/write logic into file_cmd.py
* Load default.csv on rascsi-web startup
* Add rudimentary error handling to config loading/saving
* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.
* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids
* Fix error handling when failing to open a csv file for read or write
* Run detach_all() only after succeeding to open a file for reading
* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.
* Make sure reserved SCSI IDs gets reserved again when restarting rascsi-service from within the web ui
* Updated interface comment
* Accept daynaport as legacy type
* Fixed typo
* Remove file from the list of files in use when ejected with a SCSI command
* Check for attached device for INSERT, EJECT, PROTECT, UNPROTECT
* Fixed error handling
* Fixed filepath handling
* Added more device shortcuts to rasctl
* Fixed function declaration
* Extraced ATTACH and DETACH
* Extracted INSERT
* Simplified ProcessCmd
* Comment update
* Fixed memory leak
* Log information on whether a new device is protected or read-only
* Updated errro message
* Updated error message
* Initialize private fields
* Updated rasctl help message
* Added DEVICE_INFO to protobuf interface
* Improved error handling
* DEVICE_INFO supports device list
* Updated server info handling
* Unified result handling with oneof, all commands now return PbResult
* A result can always return a message string
* Fixed typo
* Simplified sending of commands
* Improved error handling
* Removed unused code
* Updated error handling
* Code cleanup
* Comment update
* Updated logging
* Updated error handling
* Updated handling of removed status for devices without image file support
* Comment update
* Fixed typo
* Updated logging
* Updated parameter handling
* Updated setting default interfaces
* Revert "Updated setting default interfaces"
This reverts commit 210abc775d9a79dd0c631cf3877966a2923f4d5b.
* Revert "Updated parameter handling"
This reverts commit 35302addd59f5f5e1cc032888ba32dcbb426a846.
* rascsi supports reserving IDs
* Updated help message
* Replaced BOOL by bool
* Logging update
* Logging update
* Added default parameters to device properties
* Return parameters a device was set up with
* Improved device initialization
* Updated default parameter handling
* Updated default parameter handling
* Fixed typo
* Comment updates
* Comment update
* Manage default parameters in the respective device
* Do not pass empty parameter string
* Added supports_params flag
* Made comparisons more consistent
* Updated error handling
* Updated exception handling
* Renaming
* Comment update
* NEC sectors size must be 512 bytes
* Updated logging
* Updated vendor name handling
* Updated handling of media loading/unloading
* Added stoppable property and stopped status
* Made MO stoppable
* Removed duplicate code
* Removed duplicate code
* Copy read-only property
* Renaming
* Removed duplicate code, added START/STOP
* Improved default parameter handling
* Updated load/eject handling
* Logging update
* Fixed typo
* Verified START/STOP UNIT
* Updated logging
* Updated status handling
* Updated status handling
* More status handling updates
* Logging update
* Made instance fields local variables
* Made disk_t private
* Made some data structures private
* Fixed ARM compile issue
* Fixed ctapdriver initialization issue
* Reset read-only status when opening an image file
* Made logging more consistent
* Updated log level
* Log load/eject on error level for testing
* Revert "Log load/eject on error level for testing"
This reverts commit d35a15ea8e520517d25e1e1054ad1aeda9f85f2e.
* Assume drive is not ready after having been stopped
* Updated status handling
* Fixed typo
* Rebuild manpage
* Fixed issue #234 (MODE SENSE (10) returns wrong mode parameter header)
* Removed unused code
* Enum data type update
* Removed duplicate range check
* Removed duplicate code
* Removed more duplicate code
* Logging update
* SCCD sector size was not meant to be configurable
* Updated configurable sector size properties
* Removed assertion
* Improved error handling
* Updated error handling
* Re-added special error handling only relevant for SASI
* Added TODOs
* Comment update
* Added override modifier
* Removed obsolete debug flag (related code was not called)
* Comment and logging updates
* Removed obsolete try/catch
* Revert "Removed obsolete try/catch"
This reverts commit 39ca12d8b153c706316ce79f4fec65c9abc60024.
* Comment update
* Removed duplicate code
* Updated error messages, use more foreach loops
* Updated logging
* Logging update
* README update
* Added block_count
* Evaluate block size when inserting a media
* rasctl display capacity if available
* Info message update
* Added missing product name to NEC vital product data
* MO block size depends on capacity only
* Extended property/status display
* Property display update
* Updated error handling
* (Doc only changes) Fix typos and add clarification that SASI is used on Unix workstations
Co-authored-by: Daniel Markstedt <markstedt@gmail.com>
Co-authored-by: Tony Kuker <akuker@gmail.com>
2021-09-15 01:23:04 +00:00
|
|
|
|
|
2020-08-28 14:18:02 +00:00
|
|
|
|
default:
|
2021-11-19 01:24:36 +00:00
|
|
|
|
LOGWARN("Received an unexpected flush command $%02X\n",(WORD)ctrl.cmd[0]);
|
2020-08-28 14:18:02 +00:00
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
2021-10-13 09:03:31 +00:00
|
|
|
|
|
|
|
|
|
int SASIDEV::GetEffectiveLun() const
|
|
|
|
|
{
|
|
|
|
|
return ctrl.lun != -1 ? ctrl.lun : (ctrl.cmd[1] >> 5) & 0x07;
|
|
|
|
|
}
|
|
|
|
|
|