Hello everyone,
I am running 14.0 (23A344) and have sporadic issues like operation not being permitted when trying to remove some folders in ~/Library after some application was uninstalled using AppCleaner.app, which I have used for years. It works 99% of the time, but sometimes I get errors that some files/folders in ~/Library can not be removed. If I try to "sudo rm -rf" that folder from Terminal, I get operation not permitted.
So this did bring me to DiskUtility. I am running MBP 14 M1 Pro. As always when I get a new machine, the first thing I do is reformat SSD to Case Sensitive Encrypted from default Case Insensitive since that gives me issues with my source code compilation when developed between Mac and Linux.
Here is my Disk Util. I do not get any warnings on any other partitions/sections under and including "Macintosh HD volume" at the top of the hierarchy.
When I run FirstAid on the Data partition, I get the following warnings.
Now I can run this repeatedly, and the same errors are produced. I can do a reboot in between running Disk Utilities, and the same warnings. I did boot to Safe Mode and run Disk Utility, and the same warnings.
I contacted Apple support and have a case: 102125788648, but I was also instructed to create a case here.
Here is my side story, why I can not use Time Machine.
As a last resort, I was asked to reformat and reinstall. That is not an option for me at this point since restoring everything is a 1-2 day job.
Now, I know there is a Time Machine, but on my two attempts in the past, backups created on brand new external Samsung 970 Pro SSD failed to restore.
These two backups/restores were a few months apart. So on the second support call, it was suggested by support to back/restore using TimeMachine. After stating that I had a horror story on my first attempt a few months back, I was assured that the issue had been fixed and I should not have an issue. Oh well, same issue.
After spending considerable time with support (a few folks) they noticed that the Time Machine folder structure was wrong and some intermediate folder was missing causing the issue. In both cases, I never heard anything back if it was addressed/fixed, except the support during the second case, assured me that it was fixed.
That is why I did try to use Time Machine with him to back up while he was screensharing to make sure I did not do anything unusual. Still, restoration failed.
So even Time Machine should make restoration painless, for it was pain, since on the first occasion I lost all the files. On second I could brow Time Machine folders in Terminal and pick files/folders from there. Took a long time.
And to throw another strange case, I could only access them from Terminal under my wife's machine which is running an older Mac, but the new restored Mac I "was not able"! which is very weird. Both machines were at the time Intel machines. So I never attempted to use TimeMachine again on M1 Pro.
So I hope everyone sees why I do not want to reformat and restore.
Now, I have a feeling that most of my problems might be related to Case Sensitive reformated SSD. I can not go back to Case Insensitive (default), as I explained above.
I am here to provide any information to help get this fixed.
Any suggestions or anything to try?
Robert
BlockStorageDeviceDriverKit
RSS for tagDevelop drivers for block storage devices using BlockStorageDeviceDriverKit.
Posts under BlockStorageDeviceDriverKit tag
4 Posts
Sort by:
Post
Replies
Boosts
Views
Activity
I want to use DriverKit to develop a USBDriver, which serves as a bridge between USB devices and the system. All messages between USB devices and the system will be forwarded through the USBDriver.
Can anyone give me some tips or suggestions? What API should I use? I couldn't find anything like this in the documentation or sample code.
class MyUSBDriver: public IOUserClient
{
public:
virtual bool init() override;
virtual kern_return_t Start(IOService * provider) override;
virtual kern_return_t Stop(IOService * provider) override;
virtual void free() override;
virtual kern_return_t GetRegistryEntryID(uint64_t * registryEntryID) override;
virtual kern_return_t NewUserClient(uint32_t type, IOUserClient** userClient) override;
virtual kern_return_t ExternalMethod(uint64_t selector,
IOUserClientMethodArguments* arguments,
const IOUserClientMethodDispatch* dispatch,
OSObject* target,
void* reference) override;
};
I am now able to retrieve the device descriptor in the Start method
IOUSBHostDevice *device = OSDynamicCast(IOUSBHostDevice, provider);
if (device) {
const IOUSBDeviceDescriptor *deviceDescriptor = device->CopyDeviceDescriptor();
if (deviceDescriptor) {
uint16_t idVendor = deviceDescriptor->idVendor;
uint16_t idProduct = deviceDescriptor->idProduct;
uint8_t iSerialNumber = deviceDescriptor->iSerialNumber;
IOUSBHostFreeDescriptor(deviceDescriptor);
}
}
I have created a USB filter using Mac DriverKit, but the filter is unable to retrieve configuration information during startup.
After the USB filter has started and registered the service, my app can send the configuration information to the filter. Therefore, I would like to know if there is a way to exit the USB filter and allow the system to take control of the USB device once the filter has exited.
I have tried calling Terminate(0), but it did not work as even after the USB filter exited, the Finder still couldn't display the USB device.
Many USB storage devices are NVMe devices accessed through a USB-NVMe bridge chip, such as those by JMicron and Asmedia. These chipsets do not forward SMART data requests to the devices, but do have the capability to forward raw NVMe commands to the devices using vendor specific requests.
How can we provide access to SMART data for NVMe devices accessed through a bridge chip like this?
Many people used the OSX SAT SMART kext driver to provide access to SMART data for devices using USB-SATA chips, but it is a kext and doesn't support NVMe. See https://binaryfruit.com/drivedx/usb-drive-support#install-instructions
Would we need to implement a kext like that to make this work? Is there a DriverKit way to do this?