【发布时间】:2016-01-04 03:12:10
【问题描述】:
在an Intel white paper 中,它说:
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
【问题讨论】:
标签: linux-kernel drivers raid