If Linux suddenly happen to fail to recognize a USB drive, check
dmesg for errors. Once you see a bunch of errors like
usb 1-5: device descriptor read/64, error -32 usb 1-5: new high speed USB device using ehci_hcd and address 21 usb 1-5: device not accepting address 21, error -32
most probably it’s a result of hardware failure rather than a driver or kernel bug. USB has an over-current protection, which gets triggered when power consumption from the port is too high.
Unplug all USB devices from PC, turn power off, and wait a minute or two. Plug everything back and boot into Linux.
I spent the whole morning, until found out why. I hope that this message will save someone a few hours, and nerves.
PS: Actual errors may vary. You may see different port and/or error code. Ex.:
usb 3-1: device descriptor read/64, error -62
usb 4-2: device descriptor read/64, error -71
usb 2-3: device descriptor read/64, error -101
but the root of the problem is the same.