1/*- 2 * Copyright (c) 2002 Poul-Henning Kamp 3 * Copyright (c) 2002 Networks Associates Technology, Inc. 4 * All rights reserved. 5 * 6 * This software was developed for the FreeBSD Project by Poul-Henning Kamp 7 * and NAI Labs, the Security Research Division of Network Associates, Inc. 8 * under DARPA/SPAWAR contract N66001-01-C-8035 ("CBOSS"), as part of the --- 18 unchanged lines hidden (view full) --- 27 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 28 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 29 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 30 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 31 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 32 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 33 * SUCH DAMAGE. 34 * |
35 * $FreeBSD: head/sys/geom/geom_disk.c 104602 2002-10-07 06:25:26Z phk $ |
36 */ 37 38#include "opt_geom.h" 39#ifndef NO_GEOM 40 41#include <sys/param.h> 42#include <sys/systm.h> 43#include <sys/kernel.h> --- 83 unchanged lines hidden (view full) --- 127 128 mtx_unlock(&Giant); 129 bp->bio_completed = bp->bio_length - bp->bio_resid; 130 g_std_done(bp); 131 mtx_lock(&Giant); 132} 133 134static void |
135g_disk_start(struct bio *bp) 136{ 137 struct bio *bp2; 138 dev_t dev; 139 struct disk *dp; 140 struct g_ioctl *gio; 141 int error; 142 --- 23 unchanged lines hidden (view full) --- 166 else if (g_handleattr_off_t(bp, "GEOM::mediasize", dp->d_mediasize)) 167 break; 168 else if (g_handleattr_off_t(bp, "GEOM::frontstuff", 0)) 169 break; 170 else if (!strcmp(bp->bio_attribute, "GEOM::kerneldump")) 171 g_disk_kerneldump(bp, dp); 172 else if (!strcmp(bp->bio_attribute, "GEOM::ioctl") && 173 bp->bio_length == sizeof *gio) { |
174 gio = (struct g_ioctl *)bp->bio_data; 175 gio->func = devsw(dp->d_dev)->d_ioctl; 176 gio->dev = dp->d_dev; 177 error = EDIRIOCTL; |
178 } else 179 error = ENOIOCTL; 180 break; 181 case BIO_SETATTR: 182 if (!strcmp(bp->bio_attribute, "GEOM::ioctl") && 183 bp->bio_length == sizeof *gio) { |
184 gio = (struct g_ioctl *)bp->bio_data; 185 gio->func = devsw(dp->d_dev)->d_ioctl; 186 gio->dev = dp->d_dev; 187 error = EDIRIOCTL; |
188 } else 189 error = ENOIOCTL; 190 break; 191 default: 192 error = EOPNOTSUPP; 193 break; 194 } 195 if (error) { --- 104 unchanged lines hidden --- |