@@ -47,7 +47,7 @@ pub struct LoopDevice {
4747 inner : SpinLock < LoopDeviceInner > , //加锁保护LoopDeviceInner
4848 //有主设备次设备号
4949 block_dev_meta : BlockDevMeta ,
50- dev_id : Arc < DeviceId > ,
50+ // dev_id: Arc<DeviceId>,
5151 locked_kobj_state : LockedKObjectState , //对Kobject状态的锁
5252 self_ref : Weak < Self > , //对自身的弱引用
5353 fs : RwLock < Weak < DevFS > > , //文件系统弱引用
@@ -59,7 +59,7 @@ pub struct LoopDeviceInner {
5959 pub file_inode : Option < Arc < dyn IndexNode > > ,
6060 // 文件大小
6161 pub file_size : usize ,
62- // 设备名称
62+ // 设备名称 Major和Minor
6363 pub device_number : DeviceNumber ,
6464 // 数据偏移量
6565 pub offset : usize ,
@@ -73,26 +73,25 @@ pub struct LoopDeviceInner {
7373 pub visible : bool ,
7474 // 使用弱引用避免循环引用
7575 pub self_ref : Weak < LoopDevice > ,
76+ // KObject的公共数据
7677 pub kobject_common : KObjectCommonData ,
78+ // 设备的公共数据
7779 pub device_common : DeviceCommonData ,
7880}
7981impl Debug for LoopDevice {
8082 fn fmt ( & self , f : & mut Formatter < ' _ > ) -> core:: fmt:: Result {
8183 f. debug_struct ( "LoopDevice" )
8284 . field ( "devname" , & self . block_dev_meta . devname )
83- . field ( "dev_id" , & self . dev_id . id ( ) )
8485 . finish ( )
8586 }
8687}
8788impl LoopDevice {
8889 fn inner ( & self ) -> SpinLockGuard < LoopDeviceInner > {
90+ // 获取 LoopDeviceInner 的自旋锁
8991 self . inner . lock ( )
9092 }
91- pub fn new_empty_loop_device (
92- devname : DevName ,
93- dev_id : Arc < DeviceId > ,
94- minor : u32 ,
95- ) -> Option < Arc < Self > > {
93+ //注册一个新的空loop设备占位
94+ pub fn new_empty_loop_device ( devname : DevName , minor : u32 ) -> Option < Arc < Self > > {
9695 // 创建一个空的 LoopDevice
9796 let dev = Arc :: new_cyclic ( |self_ref| Self {
9897 inner : SpinLock :: new ( LoopDeviceInner {
@@ -110,7 +109,6 @@ impl LoopDevice {
110109 } ) ,
111110 //只用重复8次,就会有从0-7八个次设备号
112111 block_dev_meta : BlockDevMeta :: new ( devname, Major :: new ( 7 ) ) , // Loop 设备主设备号为 7
113- dev_id,
114112 locked_kobj_state : LockedKObjectState :: default ( ) ,
115113 self_ref : self_ref. clone ( ) ,
116114 fs : RwLock :: new ( Weak :: default ( ) ) ,
@@ -453,17 +451,14 @@ impl BlockDevice for LoopDevice {
453451 Vec :: new ( )
454452 }
455453}
456- //注册8个loop设备
457454use crate :: init:: initcall:: INITCALL_DEVICE ;
458455#[ unified_init( INITCALL_DEVICE ) ]
459456pub fn register_loop_devices ( ) -> Result < ( ) , SystemError > {
460457 for minor in 0 ..8 {
461458 let devname = DevName :: new ( format ! ( "loop{}" , minor) , minor) ;
462459 let dev_id =
463460 DeviceId :: new ( None , Some ( devname. name ( ) . to_string ( ) ) ) . ok_or ( SystemError :: EINVAL ) ?;
464- if let Some ( loop_dev) =
465- LoopDevice :: new_empty_loop_device ( devname. clone ( ) , dev_id, minor as u32 )
466- {
461+ if let Some ( loop_dev) = LoopDevice :: new_empty_loop_device ( devname. clone ( ) , minor as u32 ) {
467462 log:: info!(
468463 "Registering loop device: {}" ,
469464 loop_dev. block_dev_meta. devname
0 commit comments