xref: /netbsd/sys/fs/udf/udf_strat_bootstrap.c (revision d5bbd78e)
1*d5bbd78eSreinoud /* $NetBSD: udf_strat_bootstrap.c,v 1.5 2016/05/24 09:55:57 reinoud Exp $ */
2e979c658Sreinoud 
3e979c658Sreinoud /*
4e979c658Sreinoud  * Copyright (c) 2006, 2008 Reinoud Zandijk
5e979c658Sreinoud  * All rights reserved.
6e979c658Sreinoud  *
7e979c658Sreinoud  * Redistribution and use in source and binary forms, with or without
8e979c658Sreinoud  * modification, are permitted provided that the following conditions
9e979c658Sreinoud  * are met:
10e979c658Sreinoud  * 1. Redistributions of source code must retain the above copyright
11e979c658Sreinoud  *    notice, this list of conditions and the following disclaimer.
12e979c658Sreinoud  * 2. Redistributions in binary form must reproduce the above copyright
13e979c658Sreinoud  *    notice, this list of conditions and the following disclaimer in the
14e979c658Sreinoud  *    documentation and/or other materials provided with the distribution.
15e979c658Sreinoud  *
16e979c658Sreinoud  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
17e979c658Sreinoud  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18e979c658Sreinoud  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19e979c658Sreinoud  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
20e979c658Sreinoud  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
21e979c658Sreinoud  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22e979c658Sreinoud  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
23e979c658Sreinoud  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24e979c658Sreinoud  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
25e979c658Sreinoud  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26e979c658Sreinoud  *
27e979c658Sreinoud  */
28e979c658Sreinoud 
29e979c658Sreinoud #include <sys/cdefs.h>
30e979c658Sreinoud #ifndef lint
31*d5bbd78eSreinoud __KERNEL_RCSID(0, "$NetBSD: udf_strat_bootstrap.c,v 1.5 2016/05/24 09:55:57 reinoud Exp $");
32e979c658Sreinoud #endif /* not lint */
33e979c658Sreinoud 
34e979c658Sreinoud 
35e979c658Sreinoud #if defined(_KERNEL_OPT)
36e979c658Sreinoud #include "opt_compat_netbsd.h"
37e979c658Sreinoud #endif
38e979c658Sreinoud 
39e979c658Sreinoud #include <sys/param.h>
40e979c658Sreinoud #include <sys/systm.h>
41e979c658Sreinoud #include <sys/sysctl.h>
42e979c658Sreinoud #include <sys/namei.h>
43e979c658Sreinoud #include <sys/proc.h>
44e979c658Sreinoud #include <sys/kernel.h>
45e979c658Sreinoud #include <sys/vnode.h>
46e979c658Sreinoud #include <miscfs/genfs/genfs_node.h>
47e979c658Sreinoud #include <sys/mount.h>
48e979c658Sreinoud #include <sys/buf.h>
49e979c658Sreinoud #include <sys/file.h>
50e979c658Sreinoud #include <sys/device.h>
51e979c658Sreinoud #include <sys/disklabel.h>
52e979c658Sreinoud #include <sys/ioctl.h>
53e979c658Sreinoud #include <sys/dirent.h>
54e979c658Sreinoud #include <sys/stat.h>
55e979c658Sreinoud #include <sys/conf.h>
56e979c658Sreinoud #include <sys/kauth.h>
57e979c658Sreinoud #include <sys/kthread.h>
58e979c658Sreinoud #include <dev/clock_subr.h>
59e979c658Sreinoud 
60e979c658Sreinoud #include <fs/udf/ecma167-udf.h>
61e979c658Sreinoud #include <fs/udf/udf_mount.h>
62e979c658Sreinoud 
63e979c658Sreinoud #include "udf.h"
64e979c658Sreinoud #include "udf_subr.h"
65e979c658Sreinoud #include "udf_bswap.h"
66e979c658Sreinoud 
67e979c658Sreinoud 
68e979c658Sreinoud #define VTOI(vnode) ((struct udf_node *) vnode->v_data)
69e979c658Sreinoud #define PRIV(ump) ((struct strat_private *) ump->strategy_private)
70e979c658Sreinoud 
71e979c658Sreinoud /* --------------------------------------------------------------------- */
72e979c658Sreinoud 
73e979c658Sreinoud static int
udf_create_logvol_dscr_bootstrap(struct udf_strat_args * args)74e979c658Sreinoud udf_create_logvol_dscr_bootstrap(struct udf_strat_args *args)
75e979c658Sreinoud {
76e979c658Sreinoud 	panic("udf_create_logvol_dscr_bootstrap: not possible\n");
77e979c658Sreinoud 	return 0;
78e979c658Sreinoud }
79e979c658Sreinoud 
80e979c658Sreinoud 
81e979c658Sreinoud static void
udf_free_logvol_dscr_bootstrap(struct udf_strat_args * args)82e979c658Sreinoud udf_free_logvol_dscr_bootstrap(struct udf_strat_args *args)
83e979c658Sreinoud {
84e979c658Sreinoud 	panic("udf_free_logvol_dscr_bootstrap: no node descriptor reading\n");
85e979c658Sreinoud }
86e979c658Sreinoud 
87e979c658Sreinoud 
88e979c658Sreinoud static int
udf_read_logvol_dscr_bootstrap(struct udf_strat_args * args)89e979c658Sreinoud udf_read_logvol_dscr_bootstrap(struct udf_strat_args *args)
90e979c658Sreinoud {
91e979c658Sreinoud 	panic("udf_read_logvol_dscr_bootstrap: no node descriptor reading\n");
92e979c658Sreinoud 	return 0;
93e979c658Sreinoud }
94e979c658Sreinoud 
95e979c658Sreinoud 
96e979c658Sreinoud static int
udf_write_logvol_dscr_bootstrap(struct udf_strat_args * args)97e979c658Sreinoud udf_write_logvol_dscr_bootstrap(struct udf_strat_args *args)
98e979c658Sreinoud {
99e979c658Sreinoud 	panic("udf_write_logvol_dscr_bootstrap: no writing\n");
100e979c658Sreinoud }
101e979c658Sreinoud 
102e979c658Sreinoud /* --------------------------------------------------------------------- */
103e979c658Sreinoud 
104e979c658Sreinoud static void
udf_queuebuf_bootstrap(struct udf_strat_args * args)105e979c658Sreinoud udf_queuebuf_bootstrap(struct udf_strat_args *args)
106e979c658Sreinoud {
107e979c658Sreinoud 	struct udf_mount *ump = args->ump;
108e979c658Sreinoud 	struct buf *buf = args->nestbuf;
109e979c658Sreinoud 
110e979c658Sreinoud 	KASSERT(ump);
111e979c658Sreinoud 	KASSERT(buf);
112e979c658Sreinoud 	KASSERT(buf->b_iodone == nestiobuf_iodone);
113e979c658Sreinoud 
114e979c658Sreinoud 	KASSERT(buf->b_flags & B_READ);
115e979c658Sreinoud 	VOP_STRATEGY(ump->devvp, buf);
116e979c658Sreinoud }
117e979c658Sreinoud 
118*d5bbd78eSreinoud 
119*d5bbd78eSreinoud static void
udf_sync_caches_bootstrap(struct udf_strat_args * args)120*d5bbd78eSreinoud udf_sync_caches_bootstrap(struct udf_strat_args *args)
121*d5bbd78eSreinoud {
122*d5bbd78eSreinoud 	/* empty */
123*d5bbd78eSreinoud }
124*d5bbd78eSreinoud 
125*d5bbd78eSreinoud 
126e979c658Sreinoud static void
udf_discstrat_init_bootstrap(struct udf_strat_args * args)127e979c658Sreinoud udf_discstrat_init_bootstrap(struct udf_strat_args *args)
128e979c658Sreinoud {
129e979c658Sreinoud 	/* empty */
130e979c658Sreinoud }
131e979c658Sreinoud 
132e979c658Sreinoud 
133e979c658Sreinoud static void
udf_discstrat_finish_bootstrap(struct udf_strat_args * args)134e979c658Sreinoud udf_discstrat_finish_bootstrap(struct udf_strat_args *args)
135e979c658Sreinoud {
136e979c658Sreinoud 	/* empty */
137e979c658Sreinoud }
138e979c658Sreinoud 
139e979c658Sreinoud /* --------------------------------------------------------------------- */
140e979c658Sreinoud 
141e979c658Sreinoud struct udf_strategy udf_strat_bootstrap =
142e979c658Sreinoud {
143e979c658Sreinoud 	udf_create_logvol_dscr_bootstrap,
144e979c658Sreinoud 	udf_free_logvol_dscr_bootstrap,
145e979c658Sreinoud 	udf_read_logvol_dscr_bootstrap,
146e979c658Sreinoud 	udf_write_logvol_dscr_bootstrap,
147e979c658Sreinoud 	udf_queuebuf_bootstrap,
148*d5bbd78eSreinoud 	udf_sync_caches_bootstrap,
149e979c658Sreinoud 	udf_discstrat_init_bootstrap,
150e979c658Sreinoud 	udf_discstrat_finish_bootstrap
151e979c658Sreinoud };
152e979c658Sreinoud 
153e979c658Sreinoud 
154