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