LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Linux - Newbie (https://www.linuxquestions.org/questions/linux-newbie-8/)
-   -   disk driver (https://www.linuxquestions.org/questions/linux-newbie-8/disk-driver-4175443245/)

puntino 12-28-2012 07:47 AM

disk driver
 
Hello,
I would like to know which kernel module is the hard disk driver.
the command lsmod list the following kernel modules:
Code:

Module                  Size  Used by
pcspkr                  4352  0
snd_ens1371            24448  0
snd_rawmidi            26176  1 snd_ens1371
snd_seq_device          9876  1 snd_rawmidi
snd_ac97_codec        99920  1 snd_ens1371
snd_pcm                79532  2 snd_ens1371,snd_ac97_codec
snd_timer              25116  1 snd_pcm
snd                    55972  6 snd_ens1371,snd_rawmidi,snd_seq_device,snd_ac97_codec,snd_pcm,snd_timer
snd_page_alloc        11784  1 snd_pcm
pcnet32                35716  0
ac97_bus                3712  1 snd_ac97_codec
i2c_piix4              10508  0
intel_agp              25876  1
agpgart                36000  1 intel_agp
tg3                  118940  0
e1000                126048  0
reiserfs              234048  0
raid10                25104  0
raid456              127784  0
async_memcpy            4096  1 raid456
async_xor              5248  1 raid456
xor                    10120  2 raid456,async_xor
async_tx              10308  3 raid456,async_memcpy,async_xor
raid1                  26000  0
raid0                  9344  0
md_mod                81716  4 raid10,raid456,raid1,raid0
sbp2                  26008  0
ohci_hcd              23060  0
uhci_hcd              25752  0
ehci_hcd              32788  0
lpfc                  235216  0
qla2xxx              180980  0
megaraid_sas          31024  0
megaraid_mbox          33864  0
megaraid_mm            12588  1 megaraid_mbox
megaraid              41320  0
aacraid                71204  0
sx8                    20380  0
DAC960                74184  0
cciss                  62756  0
cpqarray              23268  0
3w_9xxx                34852  0
3w_xxxx                28320  0
mptsas                41320  0
scsi_transport_sas    35088  1 mptsas
mptfc                  20916  0
atp870u                32128  0
dc395x                36108  0
sim710                  6404  0
53c700                29348  1 sim710
qla1280              119948  0
imm                    14352  0
parport                39912  1 imm
dmx3191d              14856  0
sym53c8xx              78100  0
qlogicfas408            8704  0
aha152x                41552  0
aha1740                9472  0
advansys              86272  0
initio                20452  0
BusLogic              73076  0
arcmsr                25984  0
pdc_adma              12036  0
sata_inic162x          13316  0
sata_qstor            12036  0
sata_vsc              10372  0
sata_uli                8964  0
sata_sis              10244  0
sata_sx4              14724  0
sata_svw                9348  0
sata_sil24            17924  0
sata_promise          15492  0
scsi_wait_scan          2432  0
pata_cs5535            7680  0
pata_cs5530            9728  0
pata_cs5520            10240  0
pata_via              12804  0
pata_jmicron            7424  0
pata_sis              15364  1 sata_sis
pata_netcell            7044  0
pata_sc1200            8064  0
pata_pdc202xx_old      9472  0
pata_triflex            8580  0
pata_atiixp            9216  0
pata_opti              8452  0
pata_ali              12032  0
pata_it8213            9348  0
pata_isapnp            6656  0
pata_pcmcia            15104  0
pcmcia                43532  1 pata_pcmcia
pcmcia_core            42516  2 pata_pcmcia,pcmcia
pata_ns87415            8708  0
pata_ns87410            8320  0
pata_serverworks      10880  0
pata_cypress            8192  0
pata_oldpiix            8964  0
pata_artop            10756  0
pata_it821x            12292  0
pata_optidma          10504  0
pata_hpt3x2n          10752  0
pata_hpt3x3            9476  0
pata_hpt37x            16896  0
pata_hpt366            10368  0
pata_cmd64x            10112  0
pata_efar              9348  0
pata_rz1000            7556  0
pata_sil680            11140  0
pata_radisys            8452  0
pata_pdc2027x          13316  0
pata_mpiix              8580  0

while the command lspci:
Code:

00:00.0 Host bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (rev 01)
00:01.0 PCI bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 01)
00:07.0 ISA bridge: Intel Corporation 82371AB/EB/MB PIIX4 ISA (rev 08)
00:07.1 IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev 01)
00:07.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 08)
00:07.7 System peripheral: VMware Inc Device 0740 (rev 10)
00:0f.0 VGA compatible controller: VMware Inc [VMware SVGA II] PCI Display Adapter
00:10.0 SCSI storage controller: LSI Logic / Symbios Logic 53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI (rev 01)
00:11.0 PCI bridge: VMware Inc Device 0790 (rev 02)
00:15.0 PCI bridge: VMware Inc Device 07a0 (rev 01)
00:15.1 PCI bridge: VMware Inc Device 07a0 (rev 01)
00:15.2 PCI bridge: VMware Inc Device 07a0 (rev 01)
00:15.3 PCI bridge: VMware Inc Device 07a0 (rev 01)
00:15.4 PCI bridge: VMware Inc Device 07a0 (rev 01)
00:15.5 PCI bridge: VMware Inc Device 07a0 (rev 01)
00:15.6 PCI bridge: VMware Inc Device 07a0 (rev 01)
00:15.7 PCI bridge: VMware Inc Device 07a0 (rev 01)
00:16.0 PCI bridge: VMware Inc Device 07a0 (rev 01)
00:16.1 PCI bridge: VMware Inc Device 07a0 (rev 01)
00:16.2 PCI bridge: VMware Inc Device 07a0 (rev 01)
00:16.3 PCI bridge: VMware Inc Device 07a0 (rev 01)
00:16.4 PCI bridge: VMware Inc Device 07a0 (rev 01)
00:16.5 PCI bridge: VMware Inc Device 07a0 (rev 01)
00:16.6 PCI bridge: VMware Inc Device 07a0 (rev 01)
00:16.7 PCI bridge: VMware Inc Device 07a0 (rev 01)
00:17.0 PCI bridge: VMware Inc Device 07a0 (rev 01)
00:17.1 PCI bridge: VMware Inc Device 07a0 (rev 01)
00:17.2 PCI bridge: VMware Inc Device 07a0 (rev 01)
00:17.3 PCI bridge: VMware Inc Device 07a0 (rev 01)
00:17.4 PCI bridge: VMware Inc Device 07a0 (rev 01)
00:17.5 PCI bridge: VMware Inc Device 07a0 (rev 01)
00:17.6 PCI bridge: VMware Inc Device 07a0 (rev 01)
00:17.7 PCI bridge: VMware Inc Device 07a0 (rev 01)
00:18.0 PCI bridge: VMware Inc Device 07a0 (rev 01)
00:18.1 PCI bridge: VMware Inc Device 07a0 (rev 01)
00:18.2 PCI bridge: VMware Inc Device 07a0 (rev 01)
00:18.3 PCI bridge: VMware Inc Device 07a0 (rev 01)
00:18.4 PCI bridge: VMware Inc Device 07a0 (rev 01)
00:18.5 PCI bridge: VMware Inc Device 07a0 (rev 01)
00:18.6 PCI bridge: VMware Inc Device 07a0 (rev 01)
00:18.7 PCI bridge: VMware Inc Device 07a0 (rev 01)
02:00.0 USB Controller: Intel Corporation 82371AB/EB/MB PIIX4 USB
02:01.0 Ethernet controller: Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] (rev 10)
02:02.0 Multimedia audio controller: Ensoniq ES1371 [AudioPCI-97] (rev 02)
02:03.0 USB Controller: VMware Inc Device 0770

According to the lspci output the driver should be
SCSI storage controller: LSI Logic / Symbios Logic 53c1030 PCI-
but what is the relative kernel module?
Thank you in advance

smallpond 12-28-2012 09:42 AM

If it was a separate module, how would the kernel load it from disk?

Code:

grep BLK_DEV_SD /boot/config-`uname -r`
This is 'y' showing it is compiled into the kernel, not a separate module.

jpollard 12-28-2012 06:49 PM

Usually such required drivers would be loaded from the initrd file which is a mini-root filesystem containing the initial drivers. This is loaded into memory as part of the inital boot (via grub/lilo/...) which in turn is loaded by the BIOS/EFI rom.

So modules for the physical disks are loaded from disk, but not necessarily by the operating system.

I have had to modify the initrd file for VMs that didn't have the VM disk driver installed - once added the module to the initrd, booting the system worked just fine.

In my case, your command returns "CONFIG_BLK_DEV_SD=y", but that is only supporting block interface to drivers (in this case, the generic SCSI layer. The actual disk driver depends on the hardware interface for the SATA drives (which I believe is the pata_it821 module).

In one of my VMs for testing, the same CONFIG_BLK_DEV_SD is used, but the actual driver is the virtual I/O subsystem that defines the vda devices, but that was not in the initrd by default.

Chris E 12-28-2012 07:15 PM

The driver/module in use is mptsas as confirmed by lspci:

00:10.0 SCSI storage controller: LSI Logic / Symbios Logic 53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI (rev 01)

puntino 12-30-2012 04:37 AM

Guys, thank you all.
I have some doubts about the actual disk driver.
As you can see from the output of the lspci command I get an IDE interface:
00:07.1 IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev 01)
If I check out kernel configuration (Device Drivers -> ATA/ATAPI/MFM/RLL support")
there is an Intel PIIXn chipsets support.
Also, the interface of /dev/hda is IDE.
Thus, the driver should be the one provided by Intel.
Yet, the command dmesg | egrep -i --color 'disk'
Code:

hda VMWare Virtual IDE Hard driver, ATA Disk driver
I suppose that the code of the driver is complied in
the Linux kernel. The code of the disk driver should be (nm -l -n output):
Code:

c031c750 t sectors_to_MB        /usr/src/linux-2.6.24-FNM_v2.1/drivers/ide/ide-disk.c:433
c031c7b0 t idedisk_capacity        /usr/src/linux-2.6.24-FNM_v2.1/drivers/ide/ide-disk.c:551
c031c7d0 t set_lba_addressing        /usr/src/linux-2.6.24-FNM_v2.1/drivers/ide/ide-disk.c:811
c031c840 t idedisk_getgeo        /usr/src/linux-2.6.24-FNM_v2.1/drivers/ide/ide-disk.c:1102
c031c870 t idedisk_media_changed        /usr/src/linux-2.6.24-FNM_v2.1/drivers/ide/ide-disk.c:1161
c031c8a0 t proc_idedisk_read_capacity        /usr/src/linux-2.6.24-FNM_v2.1/drivers/ide/ide-disk.c:603
c031c910 t proc_idedisk_read_cache        /usr/src/linux-2.6.24-FNM_v2.1/drivers/ide/ide-disk.c:589
c031c9a0 t get_smart_data        /usr/src/linux-2.6.24-FNM_v2.1/drivers/ide/ide-disk.c:571
c031ca50 t proc_idedisk_read_smart_values        /usr/src/linux-2.6.24-FNM_v2.1/drivers/ide/ide-disk.c:632
c031cb10 t proc_idedisk_read_smart_thresholds        /usr/src/linux-2.6.24-FNM_v2.1/drivers/ide/ide-disk.c:613
c031cbd0 t ide_cacheflush_p        /usr/src/linux-2.6.24-FNM_v2.1/drivers/ide/ide-disk.c:949
c031cc70 t ide_device_shutdown        /usr/src/linux-2.6.24-FNM_v2.1/drivers/ide/ide-disk.c:997
c031ccc0 t idedisk_check_hpa        /usr/src/linux-2.6.24-FNM_v2.1/drivers/ide/ide-disk.c:469
c031d200 t init_idedisk_capacity        /usr/src/linux-2.6.24-FNM_v2.1/drivers/ide/ide-disk.c:524
c031d3b0 t ide_disk_resume        /usr/src/linux-2.6.24-FNM_v2.1/drivers/ide/ide-disk.c:991
c031d3e0 t ide_disk_put        /usr/src/linux-2.6.24-FNM_v2.1/drivers/ide/ide-disk.c:77
c031d410 t idedisk_release        /usr/src/linux-2.6.24-FNM_v2.1/drivers/ide/ide-disk.c:1076
c031d4b0 t ide_disk_remove        /usr/src/linux-2.6.24-FNM_v2.1/drivers/ide/ide-disk.c:958
c031d500 t ide_disk_release        /usr/src/linux-2.6.24-FNM_v2.1/drivers/ide/ide-disk.c:972
c031d530 t idedisk_ioctl        /usr/src/linux-2.6.24-FNM_v2.1/drivers/ide/ide-disk.c:1114
c031d650 t write_cache        /usr/src/linux-2.6.24-FNM_v2.1/drivers/ide/ide-disk.c:747
c031d790 t set_nowerr        /usr/src/linux-2.6.24-FNM_v2.1/drivers/ide/ide-disk.c:699
c031d7f0 t set_multcount        /usr/src/linux-2.6.24-FNM_v2.1/drivers/ide/ide-disk.c:682
c031d880 t ide_disk_probe        /usr/src/linux-2.6.24-FNM_v2.1/drivers/ide/ide-disk.c:1194
c031df60 t ide_do_rw_disk        /usr/src/linux-2.6.24-FNM_v2.1/drivers/ide/ide-disk.c:282
c031e3c0 t idedisk_prepare_flush        /usr/src/linux-2.6.24-FNM_v2.1/drivers/ide/ide-disk.c:660
c031e450 t set_acoustic        /usr/src/linux-2.6.24-FNM_v2.1/drivers/ide/ide-disk.c:786
c031e4d0 t idedisk_open        /usr/src/linux-2.6.24-FNM_v2.1/drivers/ide/ide-disk.c:1045
c031e5a0 t idedisk_revalidate_disk        /usr/src/linux-2.6.24-FNM_v2.1/drivers/ide/ide-disk.c:1175


Anyway, I'm confused because if that code includes (in somehow)
the disk driver, what is mptsas for?
Thank you in advance,


All times are GMT -5. The time now is 01:44 AM.