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