Whamcloud - gitweb
- configurable stack size fo x86_64
[fs/lustre-release.git] / lustre / kernel_patches / patches / dev_read_only_2.4.20.patch
1 Index: linux-2.4.20-8/drivers/block/blkpg.c
2 ===================================================================
3 --- linux-2.4.20-8.orig/drivers/block/blkpg.c   2002-08-03 08:39:43.000000000 +0800
4 +++ linux-2.4.20-8/drivers/block/blkpg.c        2003-12-08 15:50:20.000000000 +0800
5 @@ -296,3 +296,42 @@
6  }
7  
8  EXPORT_SYMBOL(blk_ioctl);
9 +
10 +  
11 +
12 +#define NUM_DEV_NO_WRITE 16
13 +static int dev_no_write[NUM_DEV_NO_WRITE];
14 +
15 +/*
16 + * Debug code for turning block devices "read-only" (will discard writes
17 + * silently).  This is for filesystem crash/recovery testing.
18 + */
19 +void dev_set_rdonly(kdev_t dev, int no_write)
20 +{
21 +       if (dev) {
22 +               printk(KERN_WARNING "Turning device %s read-only\n",
23 +                      bdevname(dev));
24 +               dev_no_write[no_write] = 0xdead0000 + dev;
25 +       }
26 +}
27 +
28 +int dev_check_rdonly(kdev_t dev) {
29 +       int i;
30 +
31 +       for (i = 0; i < NUM_DEV_NO_WRITE; i++) {
32 +               if ((dev_no_write[i] & 0xffff0000) == 0xdead0000 &&
33 +                   dev == (dev_no_write[i] & 0xffff))
34 +                       return 1;
35 +       }
36 +       return 0;
37 +}
38 +
39 +void dev_clear_rdonly(int no_write) {
40 +       dev_no_write[no_write] = 0;
41 +}
42 +
43 +EXPORT_SYMBOL(dev_set_rdonly);
44 +EXPORT_SYMBOL(dev_check_rdonly);
45 +EXPORT_SYMBOL(dev_clear_rdonly);
46 +
47 +
48 Index: linux-2.4.20-8/drivers/block/ll_rw_blk.c
49 ===================================================================
50 --- linux-2.4.20-8.orig/drivers/block/ll_rw_blk.c       2003-12-08 15:47:50.000000000 +0800
51 +++ linux-2.4.20-8/drivers/block/ll_rw_blk.c    2003-12-08 15:51:17.000000000 +0800
52 @@ -1164,6 +1164,10 @@
53                         buffer_IO_error(bh);
54                         break;
55                 }
56 +               if ((dev_check_rdonly(bh->b_rdev))&&(rw & WRITE)) {
57 +                        bh->b_end_io(bh, 0);
58 +                        break;
59 +                }
60         } while (q->make_request_fn(q, rw, bh));
61  }
62