xref: /dragonfly/usr.sbin/makefs/ffs/buf.h (revision b709ee55)
15978408cSSascha Wildner /*	$NetBSD: buf.h,v 1.3 2001/11/02 03:12:49 lukem Exp $	*/
25978408cSSascha Wildner 
35978408cSSascha Wildner /*-
45978408cSSascha Wildner  * SPDX-License-Identifier: BSD-4-Clause
55978408cSSascha Wildner  *
65978408cSSascha Wildner  * Copyright (c) 2001 Wasabi Systems, Inc.
75978408cSSascha Wildner  * All rights reserved.
85978408cSSascha Wildner  *
95978408cSSascha Wildner  * Written by Luke Mewburn for Wasabi Systems, Inc.
105978408cSSascha Wildner  *
115978408cSSascha Wildner  * Redistribution and use in source and binary forms, with or without
125978408cSSascha Wildner  * modification, are permitted provided that the following conditions
135978408cSSascha Wildner  * are met:
145978408cSSascha Wildner  * 1. Redistributions of source code must retain the above copyright
155978408cSSascha Wildner  *    notice, this list of conditions and the following disclaimer.
165978408cSSascha Wildner  * 2. Redistributions in binary form must reproduce the above copyright
175978408cSSascha Wildner  *    notice, this list of conditions and the following disclaimer in the
185978408cSSascha Wildner  *    documentation and/or other materials provided with the distribution.
195978408cSSascha Wildner  * 3. All advertising materials mentioning features or use of this software
205978408cSSascha Wildner  *    must display the following acknowledgement:
215978408cSSascha Wildner  *      This product includes software developed for the NetBSD Project by
225978408cSSascha Wildner  *      Wasabi Systems, Inc.
235978408cSSascha Wildner  * 4. The name of Wasabi Systems, Inc. may not be used to endorse
245978408cSSascha Wildner  *    or promote products derived from this software without specific prior
255978408cSSascha Wildner  *    written permission.
265978408cSSascha Wildner  *
275978408cSSascha Wildner  * THIS SOFTWARE IS PROVIDED BY WASABI SYSTEMS, INC. ``AS IS'' AND
285978408cSSascha Wildner  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
295978408cSSascha Wildner  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
305978408cSSascha Wildner  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL WASABI SYSTEMS, INC
315978408cSSascha Wildner  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
325978408cSSascha Wildner  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
335978408cSSascha Wildner  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
345978408cSSascha Wildner  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
355978408cSSascha Wildner  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
365978408cSSascha Wildner  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
375978408cSSascha Wildner  * POSSIBILITY OF SUCH DAMAGE.
385978408cSSascha Wildner  *
395978408cSSascha Wildner  * $FreeBSD: head/usr.sbin/makefs/ffs/buf.h 336736 2018-07-26 13:33:10Z emaste $
405978408cSSascha Wildner  */
415978408cSSascha Wildner 
425978408cSSascha Wildner #ifndef _FFS_BUF_H
435978408cSSascha Wildner #define	_FFS_BUF_H
445978408cSSascha Wildner 
455978408cSSascha Wildner #include <sys/param.h>
465978408cSSascha Wildner #include <sys/queue.h>
472d60b848STomohiro Kusumi #include <sys/vfscache.h>
485978408cSSascha Wildner 
49811c2036SSascha Wildner #include "ffs.h"	/* XXX swildner: for compat defines */
50811c2036SSascha Wildner 
515978408cSSascha Wildner struct makefs_fsinfo;
525978408cSSascha Wildner struct ucred;
535978408cSSascha Wildner 
546bcbb706STomohiro Kusumi struct m_vnode {
555978408cSSascha Wildner 	struct makefs_fsinfo *fs;
565978408cSSascha Wildner 	void *v_data;
572d60b848STomohiro Kusumi 	enum vtype v_type; /* DragonFly */
58e00b9e51STomohiro Kusumi 	int v_logical; /* DragonFly */
59e00b9e51STomohiro Kusumi 	int v_vflushed; /* DragonFly */
60e00b9e51STomohiro Kusumi 	int v_malloced; /* DragonFly */
615978408cSSascha Wildner };
625978408cSSascha Wildner 
632d60b848STomohiro Kusumi typedef enum buf_cmd {
642d60b848STomohiro Kusumi 	BUF_CMD_READ = 1,
652d60b848STomohiro Kusumi 	BUF_CMD_WRITE,
662d60b848STomohiro Kusumi 	BUF_CMD_FLUSH,
672d60b848STomohiro Kusumi } buf_cmd_t;
682d60b848STomohiro Kusumi 
694e2eefe9STomohiro Kusumi struct m_buf {
70*02f727feSTomohiro Kusumi 	char *		b_data;
715978408cSSascha Wildner 	long		b_bufsize;
725978408cSSascha Wildner 	long		b_bcount;
73811c2036SSascha Wildner 	makefs_daddr_t	b_blkno;
74811c2036SSascha Wildner 	makefs_daddr_t	b_lblkno;
752d60b848STomohiro Kusumi 	makefs_daddr_t	b_loffset; /* DragonFly */
762d60b848STomohiro Kusumi 	buf_cmd_t	b_cmd; /* DragonFly */
776bcbb706STomohiro Kusumi 	struct m_vnode	*b_vp; /* DragonFly */
785978408cSSascha Wildner 	struct makefs_fsinfo *b_fs;
795978408cSSascha Wildner 
804e2eefe9STomohiro Kusumi 	TAILQ_ENTRY(m_buf)	b_tailq;
815978408cSSascha Wildner };
825978408cSSascha Wildner 
835978408cSSascha Wildner void		bcleanup(void);
846bcbb706STomohiro Kusumi int		bread(struct m_vnode *, makefs_daddr_t, int, struct ucred *,
854e2eefe9STomohiro Kusumi     struct m_buf **);
864e2eefe9STomohiro Kusumi void		brelse(struct m_buf *);
874e2eefe9STomohiro Kusumi int		bwrite(struct m_buf *);
884e2eefe9STomohiro Kusumi struct m_buf *	getblk(struct m_vnode *, makefs_daddr_t, int, int, int, int);
895978408cSSascha Wildner 
905978408cSSascha Wildner #define	bdwrite(bp)	bwrite(bp)
915978408cSSascha Wildner #define	clrbuf(bp)	memset((bp)->b_data, 0, (u_int)(bp)->b_bcount)
925978408cSSascha Wildner 
935978408cSSascha Wildner #endif	/* _FFS_BUF_H */
94