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