xref: /netbsd-src/sys/fs/v7fs/v7fs_datablock.h (revision f96feeccb787e2c1a595460b5a01703db354f751)
1*f96feeccSuch /*	$NetBSD: v7fs_datablock.h,v 1.2 2011/07/16 12:35:32 uch Exp $	*/
29255b46fSuch 
39255b46fSuch /*-
49255b46fSuch  * Copyright (c) 2011 The NetBSD Foundation, Inc.
59255b46fSuch  * All rights reserved.
69255b46fSuch  *
79255b46fSuch  * This code is derived from software contributed to The NetBSD Foundation
89255b46fSuch  * by UCHIYAMA Yasushi.
99255b46fSuch  *
109255b46fSuch  * Redistribution and use in source and binary forms, with or without
119255b46fSuch  * modification, are permitted provided that the following conditions
129255b46fSuch  * are met:
139255b46fSuch  * 1. Redistributions of source code must retain the above copyright
149255b46fSuch  *    notice, this list of conditions and the following disclaimer.
159255b46fSuch  * 2. Redistributions in binary form must reproduce the above copyright
169255b46fSuch  *    notice, this list of conditions and the following disclaimer in the
179255b46fSuch  *    documentation and/or other materials provided with the distribution.
189255b46fSuch  *
199255b46fSuch  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
209255b46fSuch  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
219255b46fSuch  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
229255b46fSuch  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
239255b46fSuch  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
249255b46fSuch  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
259255b46fSuch  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
269255b46fSuch  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
279255b46fSuch  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
289255b46fSuch  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
299255b46fSuch  * POSSIBILITY OF SUCH DAMAGE.
309255b46fSuch  */
319255b46fSuch 
329255b46fSuch #ifndef _V7FS_DATABLOCK_H_
339255b46fSuch #define	_V7FS_DATABLOCK_H_
349255b46fSuch 
359255b46fSuch __BEGIN_DECLS
369255b46fSuch bool datablock_number_sanity(const struct v7fs_self *, v7fs_daddr_t);
379255b46fSuch int v7fs_datablock_allocate(struct v7fs_self *, v7fs_daddr_t *);
389255b46fSuch int v7fs_datablock_foreach(struct v7fs_self *, struct v7fs_inode *,
399255b46fSuch     int (*)(struct v7fs_self *, void *, v7fs_daddr_t, size_t), void *);
409255b46fSuch v7fs_daddr_t v7fs_datablock_last(struct v7fs_self *, struct v7fs_inode *,
419255b46fSuch     v7fs_off_t);
429255b46fSuch int v7fs_datablock_expand(struct v7fs_self *, struct v7fs_inode *, size_t);
439255b46fSuch int v7fs_datablock_contract(struct v7fs_self *, struct v7fs_inode *, size_t);
449255b46fSuch int v7fs_datablock_size_change(struct v7fs_self *, size_t, struct v7fs_inode *);
45*f96feeccSuch 
46*f96feeccSuch struct v7fs_daddr_map {
47*f96feeccSuch 	int level; /* direct, index1, index2, index3 */
48*f96feeccSuch 	v7fs_daddr_t index[3];
49*f96feeccSuch };
50*f96feeccSuch int v7fs_datablock_addr(size_t, struct v7fs_daddr_map *);
519255b46fSuch __END_DECLS
529255b46fSuch #endif /*!_V7FS_INODE_H_ */
53