在英特尔白皮书中,它说:
Linux中的MD RAID是一个块驱动程序,它在Linux文件系统驱动程序(如ext2文件系统)和低级硬盘驱动程序(如AHCI驱动程序和SAS驱动程序)之间过滤数据。
在内核代码drivers/md/md.c
中,我只找到这个file_operations
:
static const struct file_operations md_seq_fops = {
.owner = THIS_MODULE,
.open = md_seq_open,
.read = seq_read,
.llseek = seq_lseek,
.release = seq_release_private,
.poll = mdstat_poll,
};
md_fops 既没有读也没有写:
static const struct block_device_operations md_fops =
{
.owner = THIS_MODULE,
.open = md_open,
.release = md_release,
.ioctl = md_ioctl,
#ifdef CONFIG_COMPAT
.compat_ioctl = md_compat_ioctl,
#endif
.getgeo = md_getgeo,
.media_changed = md_media_changed,
.revalidate_disk= md_revalidate,
};
这是MD驱动程序执行的file_operations open, read...?MD驱动如何写入数据?使用AHCI驱动程序?
当调用 write 系统调用时,写入数据的步骤是什么?
sys_write -> vfs_write -> 文件->f_op->write 还是 do_sync_write?md_seq_fops 既没有 write 也没有 aio_write