loop设备是一种伪设备,能使我们像块设备一样访问一个文件。
在使用之前,一个Loop设备必须和一个文件进行关联。
可以分两步走:
1)losetup /dev/loop0 /path/to/file
2)mount /dev/loop0 /mnt/test
其实上面的两个步骤可以写成一个步骤:
mount -o loop /path/to/file /mnt/test
工作原理:
1)通过ioctl接口,将文件的struct file结构和loop设备的成员lv->lo_backing_file关联
2)内核启用一线程,监听对loop设备的读写
3)对每一个到达loop设备的bio请求,转换为对相应文件的读写
__do_lo_send_write
-> file->f_op->write