Deleted Added
sdiff udiff text old ( 315221 ) new ( 328889 )
full compact
1/*-
2 * Copyright (c) 2011 Google, Inc.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 11 unchanged lines hidden (view full) ---

20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 * SUCH DAMAGE.
25 */
26
27#include <sys/cdefs.h>
28__FBSDID("$FreeBSD: stable/11/sys/boot/userboot/userboot/userboot_disk.c 315221 2017-03-14 02:06:03Z pfg $");
29
30/*
31 * Userboot disk image handling.
32 */
33
34#include <sys/disk.h>
35#include <stand.h>
36#include <stdarg.h>

--- 18 unchanged lines hidden (view full) ---

55static void userdisk_cleanup(void);
56static int userdisk_strategy(void *devdata, int flag, daddr_t dblk,
57 size_t size, char *buf, size_t *rsize);
58static int userdisk_realstrategy(void *devdata, int flag, daddr_t dblk,
59 size_t size, char *buf, size_t *rsize);
60static int userdisk_open(struct open_file *f, ...);
61static int userdisk_close(struct open_file *f);
62static int userdisk_ioctl(struct open_file *f, u_long cmd, void *data);
63static void userdisk_print(int verbose);
64
65struct devsw userboot_disk = {
66 "disk",
67 DEVT_DISK,
68 userdisk_init,
69 userdisk_strategy,
70 userdisk_open,
71 userdisk_close,

--- 39 unchanged lines hidden (view full) ---

111 if (userdisk_maxunit > 0)
112 free(ud_info);
113 disk_cleanup(&userboot_disk);
114}
115
116/*
117 * Print information about disks
118 */
119static void
120userdisk_print(int verbose)
121{
122 struct disk_devdesc dev;
123 char line[80];
124 int i;
125
126 for (i = 0; i < userdisk_maxunit; i++) {
127 sprintf(line, " disk%d: Guest drive image\n", i);
128 pager_output(line);
129 dev.d_dev = &userboot_disk;
130 dev.d_unit = i;
131 dev.d_slice = -1;
132 dev.d_partition = -1;
133 if (disk_open(&dev, ud_info[i].mediasize,
134 ud_info[i].sectorsize, 0) == 0) {
135 sprintf(line, " disk%d", i);
136 disk_print(&dev, line, verbose);
137 disk_close(&dev);
138 }
139 }
140}
141
142/*
143 * Attempt to open the disk described by (dev) for use by (f).
144 */
145static int
146userdisk_open(struct open_file *f, ...)
147{

--- 77 unchanged lines hidden ---