patch-2.3.9 linux/fs/efs/file.c
Next file: linux/fs/efs/symlink.c
Previous file: linux/fs/efs/dir.c
Back to the patch index
Back to the overall index
- Lines: 101
- Date:
Sun Jun 27 10:10:41 1999
- Orig file:
v2.3.8/linux/fs/efs/file.c
- Orig date:
Thu May 13 23:50:15 1999
diff -u --recursive --new-file v2.3.8/linux/fs/efs/file.c linux/fs/efs/file.c
@@ -8,6 +8,59 @@
#include <linux/efs_fs.h>
+int efs_get_block(struct inode *inode, long iblock,
+ struct buffer_head *bh_result, int create)
+{
+ int error = -EROFS;
+ long phys;
+
+ if (create)
+ return error;
+ if (iblock >= inode->i_blocks) {
+#ifdef DEBUG
+ /*
+ * i have no idea why this happens as often as it does
+ */
+ printk(KERN_WARNING "EFS: bmap(): block %d >= %ld (filesize %ld)\n",
+ block,
+ inode->i_blocks,
+ inode->i_size);
+#endif
+ return 0;
+ }
+ phys = efs_map_block(inode, iblock);
+ if (phys) {
+ bh_result->b_dev = inode->i_dev;
+ bh_result->b_blocknr = phys;
+ bh_result->b_state |= (1UL << BH_Mapped);
+ }
+ return 0;
+}
+
+int efs_bmap(struct inode *inode, efs_block_t block) {
+
+ if (block < 0) {
+ printk(KERN_WARNING "EFS: bmap(): block < 0\n");
+ return 0;
+ }
+
+ /* are we about to read past the end of a file ? */
+ if (!(block < inode->i_blocks)) {
+#ifdef DEBUG
+ /*
+ * i have no idea why this happens as often as it does
+ */
+ printk(KERN_WARNING "EFS: bmap(): block %d >= %ld (filesize %ld)\n",
+ block,
+ inode->i_blocks,
+ inode->i_size);
+#endif
+ return 0;
+ }
+
+ return efs_map_block(inode, block);
+}
+
static struct file_operations efs_file_operations = {
NULL, /* lseek */
generic_file_read, /* read */
@@ -38,35 +91,12 @@
NULL, /* rename */
NULL, /* readlink */
NULL, /* follow_link */
- generic_readpage, /* readpage */
+ efs_get_block, /* get_block */
+ block_read_full_page, /* readpage */
NULL, /* writepage */
- efs_bmap, /* bmap */
+ NULL, /* flushpage */
NULL, /* truncate */
NULL, /* permission */
- NULL /* smap */
+ NULL, /* smap */
+ NULL /* revalidate */
};
-
-int efs_bmap(struct inode *inode, efs_block_t block) {
-
- if (block < 0) {
- printk(KERN_WARNING "EFS: bmap(): block < 0\n");
- return 0;
- }
-
- /* are we about to read past the end of a file ? */
- if (!(block < inode->i_blocks)) {
-#ifdef DEBUG
- /*
- * i have no idea why this happens as often as it does
- */
- printk(KERN_WARNING "EFS: bmap(): block %d >= %ld (filesize %ld)\n",
- block,
- inode->i_blocks,
- inode->i_size);
-#endif
- return 0;
- }
-
- return efs_map_block(inode, block);
-}
-
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)