We can issue a host bus scan on Linux host to get the /dev/sd* devices on host.
The scan is issued using this command :
echo "- - -" > /sys/class/scsi_host/host0/scan
Can someone please tell me the flow of events in the Linux userspace/kernel code which leads to formation of /dev/sd* devices post scsi scan ?
Is this a PCI bus scan OR SCSI commands sent to controller of storage OR something new ?
How does a rescan LUN on Linux works
960 views Asked by K_K At
1
There are 1 answers
Related Questions in LINUX
- Is there some way to use printf to print a horizontal list of decrementing hex digits in NASM assembly on Linux
- Why does Hugo generate different taxonomy-related HTML on different OS's?
- Writes in io_uring do not advance the file offset
- Why `set -o pipefail` gives different output even though the pipe is not failing
- what really controls the permissions: UID or eUID?
- Compiling eBPF program in Docker fails due to missing '__u64' type
- Docker container unable to make HTTPS requests to external API
- Whow to use callback_query_handler in Python 3.10
- Create kea runtime directory at startup in Yocto image
- Problem on CPU scheduling algorithms in OS
- How to copy files into the singularity sandbox?
- Android kernel error: undefined reference to `get_hw_version_platform'
- Is there a need for BPF Linux namespace?
- Error when trying to execute a binary compiled in a Kali Linux machine on an Ubuntu system
- Issue with launching application after updating ElectronJs to version 28.0.0 on Windows and Linux
Related Questions in LINUX-KERNEL
- Android kernel error: undefined reference to `get_hw_version_platform'
- Is there a need for BPF Linux namespace?
- Facing fatal errors while running "yum update" command on CentOS 7/Cloudlinux 7
- crash utility itself crashes while decoding kdump generated from null pointer dereference in kernel module
- How to compile the Linux kernel with -O0 for more detailed debug?
- Linux support for parallel Pixel data Image sensor
- Can't upgrade to newest version of linux-image-6.5.0-26-generic
- How to protect a page so that it cannot be write in mips arch?
- How to extract the .img file into normal kernel source file in the linux?
- Storage size of struct hash_desc desc; isn't known
- How can I intercept failed file openning calls?
- struct nameidata-Linux Kernel Module
- How to modify a 'struct msghdr' in Linux Kernel Module?
- How to allocate 500MB+ physically contiguous memory in a Linux kernel module and copy data to that memory from a userspace process?
- Hyper Threading: nosmt in grub configuration
Related Questions in STORAGE
- Worth it to access data by blocks on modern OS/hardware?
- Remove files with LastWriteTime
- spring security + form login + redis session storage -> keep coming out anonymous User
- How to redirect to another page eg main.py after user fill in and click register button and store it on .ini local database on python using kivy
- JSON document based storage Flutter(android and iOS)
- Invoke-WebRequest : Cannot validate argument on parameter 'Uri' Brocade switch FOS REST API
- How to set storage path for main domain from sub domain - Laravel
- Could converting a JPG to PNG or PPM be a good idea?
- How to restart automatically the application after clearing its storage?
- How to change an item in a list forever?
- Internal Storage Video Downloder
- Flask Download File with Get Request
- How to initialize a data storage system
- Slow D3DX11CreateShaderResourceViewFromFile relatively CrystalDiskMark speed
- How to store and build paths that depend on user input
Related Questions in SCSI
- ISCSI and MaxOutstandingR2T
- On Linux, for a scsi device, how to make an inquiry call (sg_ll_inquiry()) to page code 00 and check which other pages are supported?
- Functions of IOUserSCSIPeripheralDeviceType00 class in SCSIPeripheralsDriverKit always return kIOReturnUnsupported (0xe00002c7)
- libaums threw IOException: unsupported PeripheralQualifier or PeripheralDeviceType
- SCSI commands that can benefit from a full duplex SAS connection
- How to send a generic SCSI command to a USB drive under MACOS
- DEXT. How to set property for SCSI device created by UserCreateTargetForId()
- 53C94 SCSI IC as target - Cannot handle WRITE(10) command from Initiator
- SCSIControllerDriverKit: Process gets stuck on UserCreateTargetForID
- When should I use REQ_OP_FLUSH in a kernel blockdev driver? (Do REQ_OP_FLUSH bio's flush dirty RAID controller caches?)
- How do I pass SCSI (CDB) commands through a USB connection
- how does Linux get the max_hw_sectors_kb value?
- Why physical disk connected to the same HBA port may have different paths?
- How to access physical address from a DriverKit driver?
- Read a sector from physical drive
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Looked upon the code how iscsid scan works. __scsi_scan_target is the key function which does the SCSI scan. This function first it tries to probe and add LUN 0 using scsi_probe_and_add_lun function.
scsi_probe_and_add_lun function will :
1. allocate scsi_device data structure
2. call scsi_probe_lun and send SCSI enquiries to LUN 0.
3. call scsi_add_lun to fill the scsi_device data structure from the enquiries done.
this data structure is added using scsi_sysfs_add_sdev function.
Then it tries to send SCSI report LUN command to get the number of LUNS in function scsi_report_lun_scan. This function finds the number of LUNs and again tries to add all the LUNs using scsi_probe_and_add_lun function.
scsi_sysfs_add_sdev function adds the devices by calling scsi_target_add and device_add for scsi_device.
This device_add calls the drivers' probe function (sd_probe):
linux-3.14.69\drivers\scsi\sd.c
This sd_probe function allocates the disk and launches thread sd_probe_async.
sd_probe_async calls add_disk and prints the message : "Attached SCSI %sdisk"