Whamcloud - gitweb
- chaos-2.4.18 patch files
authorbraam <braam>
Tue, 22 Jul 2003 05:30:45 +0000 (05:30 +0000)
committerbraam <braam>
Tue, 22 Jul 2003 05:30:45 +0000 (05:30 +0000)
lustre/kernel_patches/patches/dev_read_only_2.4.18_chaos.patch [new file with mode: 0644]
lustre/kernel_patches/patches/ext3-map_inode_page.patch
lustre/kernel_patches/patches/ext3-map_inode_page_2.4.18.patch [new file with mode: 0644]
lustre/kernel_patches/pc/dev_read_only_2.4.18_chaos.pc [new file with mode: 0644]
lustre/kernel_patches/pc/ext3-map_inode_page_2.4.18.pc [new file with mode: 0644]
lustre/kernel_patches/txt/dev_read_only_2.4.18_chaos.txt [new file with mode: 0644]
lustre/kernel_patches/txt/ext3-map_inode_page_2.4.18.txt [new file with mode: 0644]

diff --git a/lustre/kernel_patches/patches/dev_read_only_2.4.18_chaos.patch b/lustre/kernel_patches/patches/dev_read_only_2.4.18_chaos.patch
new file mode 100644 (file)
index 0000000..bac5ebf
--- /dev/null
@@ -0,0 +1,73 @@
+
+
+
+ 0 files changed
+
+--- linux-2.4.18-17.8.0/drivers/block/blkpg.c~dev_read_only    2002-12-06 14:52:29.000000000 -0800
++++ linux-2.4.18-17.8.0-zab/drivers/block/blkpg.c      2002-12-06 14:52:29.000000000 -0800
+@@ -297,3 +297,38 @@ int blk_ioctl(kdev_t dev, unsigned int c
+ }
+ EXPORT_SYMBOL(blk_ioctl);
++
++#define NUM_DEV_NO_WRITE 16
++static int dev_no_write[NUM_DEV_NO_WRITE];
++
++/*
++ * Debug code for turning block devices "read-only" (will discard writes
++ * silently).  This is for filesystem crash/recovery testing.
++ */
++void dev_set_rdonly(kdev_t dev, int no_write)
++{
++      if (dev) {
++              printk(KERN_WARNING "Turning device %s read-only\n",
++                     bdevname(dev));
++              dev_no_write[no_write] = 0xdead0000 + dev;
++      }
++}
++
++int dev_check_rdonly(kdev_t dev) {
++      int i;
++
++      for (i = 0; i < NUM_DEV_NO_WRITE; i++) {
++              if ((dev_no_write[i] & 0xffff0000) == 0xdead0000 &&
++                  dev == (dev_no_write[i] & 0xffff))
++                      return 1;
++      }
++      return 0;
++}
++
++void dev_clear_rdonly(int no_write) {
++      dev_no_write[no_write] = 0;
++}
++
++EXPORT_SYMBOL(dev_set_rdonly);
++EXPORT_SYMBOL(dev_check_rdonly);
++EXPORT_SYMBOL(dev_clear_rdonly);
+--- linux-2.4.18-17.8.0/drivers/block/loop.c~dev_read_only     2002-12-06 14:52:29.000000000 -0800
++++ linux-2.4.18-17.8.0-zab/drivers/block/loop.c       2002-12-06 14:52:29.000000000 -0800
+@@ -491,6 +491,9 @@ static int loop_make_request(request_que
+       spin_unlock_irq(&lo->lo_lock);
+       if (rw == WRITE) {
++              if (dev_check_rdonly(rbh->b_rdev))
++                      goto err;
++
+               if (lo->lo_flags & LO_FLAGS_READ_ONLY)
+                       goto err;
+       } else if (rw == READA) {
+--- linux-2.4.18-17.8.0/drivers/ide/ide-disk.c~dev_read_only   2002-12-06 14:52:29.000000000 -0800
++++ linux-2.4.18-17.8.0-zab/drivers/ide/ide-disk.c     2002-12-06 14:52:29.000000000 -0800
+@@ -557,6 +557,10 @@ static ide_startstop_t lba_48_rw_disk (i
+  */
+ static ide_startstop_t do_rw_disk (ide_drive_t *drive, struct request *rq, unsigned long block)
+ {
++      if (rq->cmd == WRITE && dev_check_rdonly(rq->rq_dev)) {
++              ide_end_request(1, HWGROUP(drive));
++              return ide_stopped;
++      }
+       if (IDE_CONTROL_REG)
+               OUT_BYTE(drive->ctl,IDE_CONTROL_REG);
+
+_
index c9b7c15..80f14de 100644 (file)
@@ -82,5 +82,3 @@
  EXPORT_SYMBOL(ext3_xattr_set);
  EXPORT_SYMBOL(ext3_prep_san_write);
 +EXPORT_SYMBOL(ext3_map_inode_page);
-
-_
diff --git a/lustre/kernel_patches/patches/ext3-map_inode_page_2.4.18.patch b/lustre/kernel_patches/patches/ext3-map_inode_page_2.4.18.patch
new file mode 100644 (file)
index 0000000..8386ee3
--- /dev/null
@@ -0,0 +1,86 @@
+
+
+
+ fs/ext3/ext3-exports.c |    3 ++
+ fs/ext3/inode.c        |   55 +++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 58 insertions(+)
+
+--- linux-2.4.18-p4smp/fs/ext3/inode.c~ext3-map_inode_page_2.4.18      2003-07-21 22:51:45.000000000 -0600
++++ linux-2.4.18-p4smp-braam/fs/ext3/inode.c   2003-07-21 22:51:47.000000000 -0600
+@@ -3003,3 +3003,58 @@ int ext3_prep_san_write(struct inode *in
+               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 >> (PAGE_SHIFT - inode->i_sb->s_blocksize_bits);
++
++        for (i = 0; i < blocks_per_page; i++, iblock++) {
++                blocks[i] = ext3_bmap(inode->i_mapping, iblock);
++                if (blocks[i] == 0) {
++                        failed++;
++                        created[i] = -1;
++                } else {
++                        created[i] = 0;
++                }
++        }
++
++        if (failed == 0 || create == 0)
++                return 0;
++
++        needed_blocks = ext3_writepage_trans_blocks(inode) * failed;
++        lock_kernel();
++        handle = ext3_journal_start(inode, needed_blocks);
++        unlock_kernel();
++        if (IS_ERR(handle))
++                return PTR_ERR(handle);
++
++        iblock = page->index >> (PAGE_SHIFT - inode->i_sb->s_blocksize_bits);
++        for (i = 0; i < blocks_per_page; i++, iblock++) {
++                if (blocks[i] != 0)
++                        continue;
++
++                rc = ext3_get_block_handle(handle, inode, iblock, &dummy, 1);
++                if (rc) {
++                        printk(KERN_INFO "ext3_map_inode_page: error reading "
++                               "block %ld\n", iblock);
++                        goto out;
++                }
++                blocks[i] = dummy.b_blocknr;
++                created[i] = 1;
++        }
++
++ out:
++      lock_kernel();
++      ext3_journal_stop(handle, inode);
++      unlock_kernel();
++        return rc;
++}
+--- linux-2.4.18-p4smp/fs/ext3/ext3-exports.c~ext3-map_inode_page_2.4.18       2003-07-21 22:51:45.000000000 -0600
++++ linux-2.4.18-p4smp-braam/fs/ext3/ext3-exports.c    2003-07-21 22:51:47.000000000 -0600
+@@ -9,6 +9,8 @@
+ int ext3_prep_san_write(struct inode *inode, long *blocks,
+                       int nblocks, loff_t newsize);
++int ext3_map_inode_page(struct inode *inode, struct page *page,
++                        unsigned long *block, int *created, int create);
+ EXPORT_SYMBOL(ext3_force_commit);
+ EXPORT_SYMBOL(ext3_bread);
+@@ -18,3 +20,4 @@ EXPORT_SYMBOL(ext3_xattr_get);
+ EXPORT_SYMBOL(ext3_xattr_list);
+ EXPORT_SYMBOL(ext3_xattr_set);
+ EXPORT_SYMBOL(ext3_prep_san_write);
++EXPORT_SYMBOL(ext3_map_inode_page);
+
+_
diff --git a/lustre/kernel_patches/pc/dev_read_only_2.4.18_chaos.pc b/lustre/kernel_patches/pc/dev_read_only_2.4.18_chaos.pc
new file mode 100644 (file)
index 0000000..4760ad1
--- /dev/null
@@ -0,0 +1,3 @@
+drivers/block/blkpg.c
+drivers/block/loop.c
+drivers/ide/ide-disk.c
diff --git a/lustre/kernel_patches/pc/ext3-map_inode_page_2.4.18.pc b/lustre/kernel_patches/pc/ext3-map_inode_page_2.4.18.pc
new file mode 100644 (file)
index 0000000..6631de4
--- /dev/null
@@ -0,0 +1,3 @@
+fs/ext3/inode.c
+fs/ext3/ext3-exports.c
+fs/ext3/Makefile
diff --git a/lustre/kernel_patches/txt/dev_read_only_2.4.18_chaos.txt b/lustre/kernel_patches/txt/dev_read_only_2.4.18_chaos.txt
new file mode 100644 (file)
index 0000000..010cdb7
--- /dev/null
@@ -0,0 +1,3 @@
+DESC
+(undescribed patch)
+EDESC
diff --git a/lustre/kernel_patches/txt/ext3-map_inode_page_2.4.18.txt b/lustre/kernel_patches/txt/ext3-map_inode_page_2.4.18.txt
new file mode 100644 (file)
index 0000000..010cdb7
--- /dev/null
@@ -0,0 +1,3 @@
+DESC
+(undescribed patch)
+EDESC