⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ext3-map_inode_page-2.6-suse.patch

📁 非常经典的一个分布式系统
💻 PATCH
字号:
 fs/ext3/inode.c |   52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ fs/ext3/super.c |    3 +++ 2 files changed, 55 insertions(+)Index: linux-2.6.0/fs/ext3/inode.c===================================================================--- linux-2.6.0.orig/fs/ext3/inode.c	2003-12-31 00:33:49.000000000 +0300+++ linux-2.6.0/fs/ext3/inode.c	2003-12-31 01:14:17.000000000 +0300@@ -3136,3 +3136,62 @@ 		ret = ret2; 	return ret; }++int ext3_map_inode_page(struct inode *inode, struct page *page,+                        unsigned long *blocks, int *created, int create)+{+        unsigned int blocksize, blocks_per_page;+        unsigned long iblock;+        struct buffer_head dummy;+        void *handle;+        int i, rc = 0, failed = 0, needed_blocks;++        blocksize = inode->i_sb->s_blocksize;+        blocks_per_page = PAGE_SIZE >> inode->i_sb->s_blocksize_bits;+        iblock = page->index * blocks_per_page;++        for (i = 0; i < blocks_per_page; i++, iblock++) {+                blocks[i] = ext3_bmap(inode->i_mapping, iblock);+                if (blocks[i] == 0) {+                        failed++;+			if (created)+				created[i] = -1;+		} else if (created) {+                        created[i] = 0;+                }+        }++        if (failed == 0 || create == 0)+                return 0;++        needed_blocks = ext3_writepage_trans_blocks(inode);+        handle = ext3_journal_start(inode, needed_blocks);+        if (IS_ERR(handle))+                return PTR_ERR(handle);++        iblock = page->index * blocks_per_page;+        for (i = 0; i < blocks_per_page; i++, iblock++) {+                if (blocks[i] != 0)+                        continue;++                rc = ext3_get_block_handle(handle, inode, iblock, &dummy, 1, 1);+                if (rc) {+                        printk(KERN_INFO "ext3_map_inode_page: error reading "+                               "block %ld\n", iblock);+                        goto out;+                }+		/* Unmap any metadata buffers from the block mapping, to avoid+		 * data corruption due to direct-write from Lustre being+		 * clobbered by a later flush of the blockdev metadata buffer.*/+                if (buffer_new(&dummy))+                        unmap_underlying_metadata(dummy.b_bdev,+                                                      dummy.b_blocknr);+                blocks[i] = dummy.b_blocknr;+		if (created)+			created[i] = 1;+        }++ out:+	ext3_journal_stop(handle);+        return rc;+}Index: linux-2.6.0/fs/ext3/super.c===================================================================--- linux-2.6.0.orig/fs/ext3/super.c	2003-12-31 00:33:49.000000000 +0300+++ linux-2.6.0/fs/ext3/super.c	2003-12-31 01:10:40.000000000 +0300@@ -2051,6 +2051,10 @@                         int nblocks, loff_t newsize); EXPORT_SYMBOL(ext3_prep_san_write); +int ext3_map_inode_page(struct inode *inode, struct page *page,+                        unsigned long *blocks, int *created, int create);+EXPORT_SYMBOL(ext3_map_inode_page);+ MODULE_AUTHOR("Remy Card, Stephen Tweedie, Andrew Morton, Andreas Dilger, Theodore Ts'o and others"); MODULE_DESCRIPTION("Second Extended Filesystem with journaling extensions"); MODULE_LICENSE("GPL");

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -