Skip to content

Commit b371cee

Browse files
authored
Merge pull request torvalds#248 from M1cha/pull-fs
lkl: make get_virtio_blkdev a public library function
2 parents 75def1f + f922487 commit b371cee

File tree

2 files changed

+23
-5
lines changed

2 files changed

+23
-5
lines changed

tools/lkl/include/lkl.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,17 @@ int lkl_disk_add(struct lkl_disk *disk);
111111
*/
112112
int lkl_disk_remove(struct lkl_disk disk);
113113

114+
/**
115+
* lkl_get_virtio_blkdev - get device id of a disk
116+
*
117+
* This function returns the device id for the given disk.
118+
*
119+
* @disk_id - the disk id identifying the disk
120+
* @pdevid - pointer to memory where dev id will be returned
121+
* @returns - 0 on success, a negative value on error
122+
*/
123+
int lkl_get_virtio_blkdev(int disk_id, uint32_t *pdevid);
124+
114125
/**
115126
* lkl_mount_dev - mount a disk
116127
*

tools/lkl/lib/fs.c

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ static char *get_node_with_prefix(const char *path, const char *prefix,
6767
return result;
6868
}
6969

70-
static long get_virtio_blkdev(int disk_id)
70+
int lkl_get_virtio_blkdev(int disk_id, uint32_t *pdevid)
7171
{
7272
char sysfs_path[LKL_PATH_MAX];
7373
int sysfs_path_len = 0;
@@ -77,6 +77,7 @@ static long get_virtio_blkdev(int disk_id)
7777
int opendir_ret;
7878
char *virtio_name = NULL;
7979
char *disk_name = NULL;
80+
uint32_t device_id;
8081

8182
if (disk_id < 0)
8283
return -LKL_EINVAL;
@@ -136,12 +137,14 @@ static long get_virtio_blkdev(int disk_id)
136137
goto out_close;
137138
}
138139

139-
ret = new_encode_dev(major, minor);
140+
device_id = new_encode_dev(major, minor);
140141

141142
out_close:
142143
lkl_sys_close(fd);
143144

144-
return ret;
145+
*pdevid = device_id;
146+
147+
return 0;
145148
}
146149

147150
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,
155158
if (mnt_str_len < sizeof(dev_str))
156159
return -LKL_ENOMEM;
157160

158-
dev = get_virtio_blkdev(disk_id);
161+
err = lkl_get_virtio_blkdev(disk_id, &dev);
162+
if (err < 0)
163+
return err;
159164

160165
snprintf(dev_str, sizeof(dev_str), "/dev/%08x", dev);
161166
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)
231236
unsigned int dev;
232237
int err;
233238

234-
dev = get_virtio_blkdev(disk_id);
239+
err = lkl_get_virtio_blkdev(disk_id, &dev);
240+
if (err < 0)
241+
return err;
235242

236243
snprintf(dev_str, sizeof(dev_str), "/dev/%08x", dev);
237244
snprintf(mnt_str, sizeof(mnt_str), "/mnt/%08x", dev);

0 commit comments

Comments
 (0)