Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/fs/efs/file.c
15109 views
1
/*
2
* file.c
3
*
4
* Copyright (c) 1999 Al Smith
5
*
6
* Portions derived from work (c) 1995,1996 Christian Vogelgsang.
7
*/
8
9
#include <linux/buffer_head.h>
10
#include "efs.h"
11
12
int efs_get_block(struct inode *inode, sector_t iblock,
13
struct buffer_head *bh_result, int create)
14
{
15
int error = -EROFS;
16
long phys;
17
18
if (create)
19
return error;
20
if (iblock >= inode->i_blocks) {
21
#ifdef DEBUG
22
/*
23
* i have no idea why this happens as often as it does
24
*/
25
printk(KERN_WARNING "EFS: bmap(): block %d >= %ld (filesize %ld)\n",
26
block,
27
inode->i_blocks,
28
inode->i_size);
29
#endif
30
return 0;
31
}
32
phys = efs_map_block(inode, iblock);
33
if (phys)
34
map_bh(bh_result, inode->i_sb, phys);
35
return 0;
36
}
37
38
int efs_bmap(struct inode *inode, efs_block_t block) {
39
40
if (block < 0) {
41
printk(KERN_WARNING "EFS: bmap(): block < 0\n");
42
return 0;
43
}
44
45
/* are we about to read past the end of a file ? */
46
if (!(block < inode->i_blocks)) {
47
#ifdef DEBUG
48
/*
49
* i have no idea why this happens as often as it does
50
*/
51
printk(KERN_WARNING "EFS: bmap(): block %d >= %ld (filesize %ld)\n",
52
block,
53
inode->i_blocks,
54
inode->i_size);
55
#endif
56
return 0;
57
}
58
59
return efs_map_block(inode, block);
60
}
61
62