Whamcloud - gitweb
- add disk write instrumentation to 2.4.18 patch
[fs/lustre-release.git] / lustre / patches / patch-2.4.18
1 --- linux-2.4.17/kernel/ksyms.c.lustre  Fri Feb 22 15:26:38 2002
2 +++ linux-2.4.17/kernel/ksyms.c Fri Feb 22 15:27:44 2002
3 @@ -282,6 +282,11 @@
4  EXPORT_SYMBOL(lock_may_write);
5  EXPORT_SYMBOL(dcache_readdir);
6  
7 +/* lustre */
8 +EXPORT_SYMBOL(pagecache_lock);
9 +EXPORT_SYMBOL(do_kern_mount);
10 +
11 +
12  /* for stackable file systems (lofs, wrapfs, cryptfs, etc.) */
13  EXPORT_SYMBOL(default_llseek);
14  EXPORT_SYMBOL(dentry_open);
15 --- linux-2.4.17/include/linux/fs.h.lustre      Fri Feb 22 15:27:53 2002
16 +++ linux-2.4.17/include/linux/fs.h     Fri Feb 22 15:28:52 2002
17 @@ -983,7 +984,7 @@
18  extern struct vfsmount *kern_mount(struct file_system_type *);
19  extern int may_umount(struct vfsmount *);
20  extern long do_mount(char *, char *, char *, unsigned long, void *);
21 -
22 +struct vfsmount *do_kern_mount(char *type, int flags, char *name, void *data);
23  #define kern_umount mntput
24  
25  extern int vfs_statfs(struct super_block *, struct statfs *);
26 --- linux-2.4.17/fs/ext3/Makefile.orig  Fri Dec 21 10:41:55 2001
27 +++ linux-2.4.17/fs/ext3/Makefile       Fri Mar 22 11:00:58 2002
28 @@ -8,6 +8,8 @@
29  # Note 2! The CFLAGS definitions are now in the main makefile...
30  
31  O_TARGET := ext3.o
32 +
33 +export-objs := super.o
34  
35  obj-y    := balloc.o bitmap.o dir.o file.o fsync.o ialloc.o inode.o \
36                 ioctl.o namei.o super.o symlink.o
37 --- linux-2.4.17/fs/ext3/super.c.orig   Fri Dec 21 10:41:55 2001
38 +++ linux-2.4.17/fs/ext3/super.c        Fri Mar 22 11:00:41 2002
39 @@ -1742,7 +1742,7 @@
40         unregister_filesystem(&ext3_fs_type);
41  }
42  
43 -EXPORT_NO_SYMBOLS;
44 +EXPORT_SYMBOL(ext3_bread);
45  
46  MODULE_AUTHOR("Remy Card, Stephen Tweedie, Andrew Morton, Andreas Dilger, Theodore Ts'o and others");
47  MODULE_DESCRIPTION("Second Extended Filesystem with journaling extensions");
48 --- lum/include/linux/blkdev.h.orig     Thu Mar 28 11:40:24 2002
49 +++ lum/include/linux/blkdev.h  Thu Mar 28 23:38:46 2002
50 @@ -228,4 +228,8 @@
51         return retval;
52  }
53  
54 +#define CONFIG_DEV_RDONLY
55 +void dev_set_rdonly(kdev_t, int);
56 +int dev_check_rdonly(kdev_t);
57 +void dev_clear_rdonly(int);
58  #endif
59 --- lum/drivers/block/blkpg.c.orig      Sun Nov 11 11:20:21 2001
60 +++ lum/drivers/block/blkpg.c   Thu Mar 28 16:30:41 2002
61 @@ -294,3 +294,38 @@
62  }
63  
64  EXPORT_SYMBOL(blk_ioctl);
65 +
66 +#define NUM_DEV_NO_WRITE 16
67 +static int dev_no_write[NUM_DEV_NO_WRITE];
68 +
69 +/*
70 + * Debug code for turning block devices "read-only" (will discard writes
71 + * silently).  This is for filesystem crash/recovery testing.
72 + */
73 +void dev_set_rdonly(kdev_t dev, int no_write)
74 +{
75 +       if (dev) {
76 +               printk(KERN_WARNING "Turning device %s read-only\n", 
77 +                      bdevname(dev));
78 +               dev_no_write[no_write] = 0xdead0000 + dev;
79 +       }
80 +}
81 +
82 +int dev_check_rdonly(kdev_t dev) {
83 +       int i;
84 +
85 +       for (i = 0; i < NUM_DEV_NO_WRITE; i++) {
86 +               if ((dev_no_write[i] & 0xffff0000) == 0xdead0000 &&
87 +                   dev == (dev_no_write[i] & 0xffff))
88 +                       return 1;
89 +       }
90 +       return 0;
91 +}
92 +
93 +void dev_clear_rdonly(int no_write) {
94 +       dev_no_write[no_write] = 0;
95 +}
96 +
97 +EXPORT_SYMBOL(dev_set_rdonly);
98 +EXPORT_SYMBOL(dev_check_rdonly);
99 +EXPORT_SYMBOL(dev_clear_rdonly);
100 --- lum/drivers/block/loop.c.orig       Fri Dec 21 10:41:53 2001
101 +++ lum/drivers/block/loop.c    Thu Mar 28 23:39:25 2002
102 @@ -471,6 +475,11 @@
103         spin_unlock_irq(&lo->lo_lock);
104  
105         if (rw == WRITE) {
106 +#ifdef CONFIG_DEV_RDONLY
107 +               if (dev_check_rdonly(rbh->b_rdev))
108 +                       goto err;
109 +#endif
110 +
111                 if (lo->lo_flags & LO_FLAGS_READ_ONLY)
112                         goto err;
113         } else if (rw == READA) {
114 --- lum/drivers/ide/ide-disk.c.orig     Fri Dec 21 10:41:54 2001
115 +++ lum/drivers/ide/ide-disk.c  Thu Mar 28 23:38:41 2002
116 @@ -367,6 +367,12 @@
117   */
118  static ide_startstop_t do_rw_disk (ide_drive_t *drive, struct request *rq, unsigned long block)
119  {
120 +#ifdef CONFIG_DEV_RDONLY
121 +       if (rq->cmd == WRITE && dev_check_rdonly(rq->rq_dev)) {
122 +               ide_end_request(1, HWGROUP(drive));
123 +               return ide_stopped;
124 +       }
125 +#endif
126         if (IDE_CONTROL_REG)
127                 OUT_BYTE(drive->ctl,IDE_CONTROL_REG);
128         OUT_BYTE(0x00, IDE_FEATURE_REG);
129 --- lum/arch/um/drivers/ubd.c.orig      Wed Mar 13 14:04:59 2002
130 +++ lum/arch/um/drivers/ubd.c   Thu Mar 28 23:39:15 2002
131 @@ -693,14 +697,23 @@
132                 spin_unlock(&io_request_lock);
133                 return(1);
134         }
135 -       if((req->cmd == WRITE) && 
136 -          ((dev->openflags & O_ACCMODE) == O_RDONLY)){
137 -               printk("Write attempted on readonly ubd device %d\n", 
138 -                      minor(req->rq_dev));
139 -               spin_lock(&io_request_lock);
140 -               end_request(0);
141 -               spin_unlock(&io_request_lock);
142 -               return(1);
143 +       if (req->cmd == WRITE) {
144 +#ifdef CONFIG_DEV_RDONLY
145 +               if (dev_check_rdonly(req->rq_dev)) {
146 +                       spin_lock(&io_request_lock);
147 +                       end_request(1);
148 +                       spin_unlock(&io_request_lock);
149 +                       return(0);
150 +               }
151 +#endif
152 +               if ((dev->openflags & O_ACCMODE) == O_RDONLY) {
153 +                       printk("Write attempted on readonly ubd device %d\n",
154 +                              minor(req->rq_dev));
155 +                       spin_lock(&io_request_lock);
156 +                       end_request(0);
157 +                       spin_unlock(&io_request_lock);
158 +                       return(1);
159 +               }
160         }
161  
162          block = req->sector;