@@ -67,7 +67,7 @@ static char *get_node_with_prefix(const char *path, const char *prefix,
67
67
return result ;
68
68
}
69
69
70
- static long get_virtio_blkdev (int disk_id )
70
+ int lkl_get_virtio_blkdev (int disk_id , uint32_t * pdevid )
71
71
{
72
72
char sysfs_path [LKL_PATH_MAX ];
73
73
int sysfs_path_len = 0 ;
@@ -77,6 +77,7 @@ static long get_virtio_blkdev(int disk_id)
77
77
int opendir_ret ;
78
78
char * virtio_name = NULL ;
79
79
char * disk_name = NULL ;
80
+ uint32_t device_id ;
80
81
81
82
if (disk_id < 0 )
82
83
return - LKL_EINVAL ;
@@ -136,12 +137,14 @@ static long get_virtio_blkdev(int disk_id)
136
137
goto out_close ;
137
138
}
138
139
139
- ret = new_encode_dev (major , minor );
140
+ device_id = new_encode_dev (major , minor );
140
141
141
142
out_close :
142
143
lkl_sys_close (fd );
143
144
144
- return ret ;
145
+ * pdevid = device_id ;
146
+
147
+ return 0 ;
145
148
}
146
149
147
150
long lkl_mount_dev (unsigned int disk_id , const char * fs_type , int flags ,
@@ -155,7 +158,9 @@ long lkl_mount_dev(unsigned int disk_id, const char *fs_type, int flags,
155
158
if (mnt_str_len < sizeof (dev_str ))
156
159
return - LKL_ENOMEM ;
157
160
158
- dev = get_virtio_blkdev (disk_id );
161
+ err = lkl_get_virtio_blkdev (disk_id , & dev );
162
+ if (err < 0 )
163
+ return err ;
159
164
160
165
snprintf (dev_str , sizeof (dev_str ), "/dev/%08x" , dev );
161
166
snprintf (mnt_str , mnt_str_len , "/mnt/%08x" , dev );
@@ -231,7 +236,9 @@ long lkl_umount_dev(unsigned int disk_id, int flags, long timeout_ms)
231
236
unsigned int dev ;
232
237
int err ;
233
238
234
- dev = get_virtio_blkdev (disk_id );
239
+ err = lkl_get_virtio_blkdev (disk_id , & dev );
240
+ if (err < 0 )
241
+ return err ;
235
242
236
243
snprintf (dev_str , sizeof (dev_str ), "/dev/%08x" , dev );
237
244
snprintf (mnt_str , sizeof (mnt_str ), "/mnt/%08x" , dev );
0 commit comments