brintos

brintos / linux-shallow public Read only

0
0
Text · 1.2 KiB · 9e641da Raw
58 lines · c
1// SPDX-License-Identifier: GPL-2.02/*3 * file.c4 *5 * Copyright (c) 1999 Al Smith6 *7 * Portions derived from work (c) 1995,1996 Christian Vogelgsang.8 */9 10#include <linux/buffer_head.h>11#include "efs.h"12 13int efs_get_block(struct inode *inode, sector_t iblock,14		  struct buffer_head *bh_result, int create)15{16	int error = -EROFS;17	long phys;18 19	if (create)20		return error;21	if (iblock >= inode->i_blocks) {22#ifdef DEBUG23		/*24		 * i have no idea why this happens as often as it does25		 */26		pr_warn("%s(): block %d >= %ld (filesize %ld)\n",27			__func__, block, inode->i_blocks, inode->i_size);28#endif29		return 0;30	}31	phys = efs_map_block(inode, iblock);32	if (phys)33		map_bh(bh_result, inode->i_sb, phys);34	return 0;35}36 37int efs_bmap(struct inode *inode, efs_block_t block) {38 39	if (block < 0) {40		pr_warn("%s(): block < 0\n", __func__);41		return 0;42	}43 44	/* are we about to read past the end of a file ? */45	if (!(block < inode->i_blocks)) {46#ifdef DEBUG47		/*48		 * i have no idea why this happens as often as it does49		 */50		pr_warn("%s(): block %d >= %ld (filesize %ld)\n",51			__func__, block, inode->i_blocks, inode->i_size);52#endif53		return 0;54	}55 56	return efs_map_block(inode, block);57}58