Deleted Added
full compact
subr_disk.c (92074) subr_disk.c (93496)
1/*
2 * ----------------------------------------------------------------------------
3 * "THE BEER-WARE LICENSE" (Revision 42):
4 * <phk@FreeBSD.ORG> wrote this file. As long as you retain this notice you
5 * can do whatever you want with this stuff. If we meet some day, and you think
6 * this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
7 * ----------------------------------------------------------------------------
8 *
1/*
2 * ----------------------------------------------------------------------------
3 * "THE BEER-WARE LICENSE" (Revision 42):
4 * <phk@FreeBSD.ORG> wrote this file. As long as you retain this notice you
5 * can do whatever you want with this stuff. If we meet some day, and you think
6 * this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
7 * ----------------------------------------------------------------------------
8 *
9 * $FreeBSD: head/sys/kern/subr_disk.c 92074 2002-03-11 08:08:02Z phk $
9 * $FreeBSD: head/sys/kern/subr_disk.c 93496 2002-03-31 22:37:00Z phk $
10 *
11 */
12
13#include "opt_geom.h"
14#ifndef GEOM
15
16#include <sys/param.h>
17#include <sys/systm.h>

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

193 dp->d_dev = dev;
194 dp->d_dsflags = flags;
195 dp->d_devsw = cdevsw;
196 LIST_INSERT_HEAD(&disklist, dp, d_list);
197
198 return (dev);
199}
200
10 *
11 */
12
13#include "opt_geom.h"
14#ifndef GEOM
15
16#include <sys/param.h>
17#include <sys/systm.h>

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

193 dp->d_dev = dev;
194 dp->d_dsflags = flags;
195 dp->d_devsw = cdevsw;
196 LIST_INSERT_HEAD(&disklist, dp, d_list);
197
198 return (dev);
199}
200
201int
202disk_dumpcheck(dev_t dev, u_int *count, u_int *blkno, u_int *secsize)
201static int
202diskdumpconf(u_int onoff, dev_t dev, struct disk *dp)
203{
203{
204 struct disk *dp;
204 struct dumperinfo di;
205 struct disklabel *dl;
205 struct disklabel *dl;
206 u_int boff;
207
206
208 dp = dev->si_disk;
209 if (!dp)
210 return (ENXIO);
211 if (!dp->d_slice)
212 return (ENXIO);
207 if (!onoff)
208 return(set_dumper(NULL));
213 dl = dsgetlabel(dev, dp->d_slice);
214 if (!dl)
215 return (ENXIO);
209 dl = dsgetlabel(dev, dp->d_slice);
210 if (!dl)
211 return (ENXIO);
216 *count = Maxmem * (PAGE_SIZE / dl->d_secsize);
217 if (dumplo <= LABELSECTOR ||
218 (dumplo + *count > dl->d_partitions[dkpart(dev)].p_size))
219 return (EINVAL);
220 boff = dl->d_partitions[dkpart(dev)].p_offset +
221 dp->d_slice->dss_slices[dkslice(dev)].ds_offset;
222 *blkno = boff + dumplo;
223 *secsize = dl->d_secsize;
224 return (0);
225
212 bzero(&di, sizeof di);
213 di.dumper = (dumper_t *)dp->d_devsw->d_dump;
214 di.priv = dp->d_dev;
215 di.blocksize = dl->d_secsize;
216 di.mediaoffset = (off_t)(dl->d_partitions[dkpart(dev)].p_offset +
217 dp->d_slice->dss_slices[dkslice(dev)].ds_offset) * DEV_BSIZE;
218 di.mediasize =
219 (off_t)(dl->d_partitions[dkpart(dev)].p_size) * DEV_BSIZE;
220 return(set_dumper(&di));
226}
227
228void
229disk_invalidate (struct disk *disk)
230{
231 if (disk->d_slice)
232 dsgone(&disk->d_slice);
233}

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

383
384}
385
386static int
387diskioctl(dev_t dev, u_long cmd, caddr_t data, int fflag, struct thread *td)
388{
389 struct disk *dp;
390 int error;
221}
222
223void
224disk_invalidate (struct disk *disk)
225{
226 if (disk->d_slice)
227 dsgone(&disk->d_slice);
228}

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

378
379}
380
381static int
382diskioctl(dev_t dev, u_long cmd, caddr_t data, int fflag, struct thread *td)
383{
384 struct disk *dp;
385 int error;
386 u_int u;
391 dev_t pdev;
392
393 pdev = dkmodpart(dkmodslice(dev, WHOLE_DISK_SLICE), RAW_PART);
394 dp = pdev->si_disk;
395 if (!dp)
396 return (ENXIO);
387 dev_t pdev;
388
389 pdev = dkmodpart(dkmodslice(dev, WHOLE_DISK_SLICE), RAW_PART);
390 dp = pdev->si_disk;
391 if (!dp)
392 return (ENXIO);
393 if (cmd == DIOCGKERNELDUMP) {
394 u = *(u_int *)data;
395 return (diskdumpconf(u, dev, dp));
396 }
397 error = dsioctl(dev, cmd, data, fflag, &dp->d_slice);
398 if (error == ENOIOCTL)
399 error = dp->d_devsw->d_ioctl(dev, cmd, data, fflag, td);
400 return (error);
401}
402
403static int
404diskpsize(dev_t dev)

--- 26 unchanged lines hidden ---
397 error = dsioctl(dev, cmd, data, fflag, &dp->d_slice);
398 if (error == ENOIOCTL)
399 error = dp->d_devsw->d_ioctl(dev, cmd, data, fflag, td);
400 return (error);
401}
402
403static int
404diskpsize(dev_t dev)

--- 26 unchanged lines hidden ---