X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Fkernel_patches%2Fpatches%2Fdev_read_only-2.6.32-rhel6.patch;h=54b51cb4abe40e4411427b16a5545a9aa2d062c5;hp=09338812eaad072f82ae2400da3c8e6cb74df033;hb=c65b502fe9feda61c7ad7137f5022c654c6ba501;hpb=6697349ea92c2c61a40b8f23655f66de60ca1501 diff --git a/lustre/kernel_patches/patches/dev_read_only-2.6.32-rhel6.patch b/lustre/kernel_patches/patches/dev_read_only-2.6.32-rhel6.patch index 0933881..54b51cb 100644 --- a/lustre/kernel_patches/patches/dev_read_only-2.6.32-rhel6.patch +++ b/lustre/kernel_patches/patches/dev_read_only-2.6.32-rhel6.patch @@ -1,3 +1,8 @@ +This patch is no longer needed for Lustre. It is only included +for testing and ease of using the same kernel with older Lustre +versions. This testing functionality was replaced in Linux 3.0 +by the dm-flakey driver. + This functionality is mainly used during testing, in order to simulate a server crash for ldiskfs by discarding all of the writes to the filesystem. For recovery testing we could simulate @@ -14,14 +19,11 @@ a DMU-based target is not safe as it could trigger a storage failure if the data is ever read from disk again and the checksum does not match that expected by the block pointer. -Initial efforts to remove this patch are under way in bug 20776. -Once this work comes to fruition this patch can be dropped. - -Index: linux-2.6.32-71.18.1.el6-master/block/blk-core.c +Index: linux-2.6.32-131.0.15.el6.x86_64/block/blk-core.c =================================================================== ---- linux-2.6.32-71.18.1.el6-master.orig/block/blk-core.c 2011-03-05 11:35:40.404043293 +0800 -+++ linux-2.6.32-71.18.1.el6-master/block/blk-core.c 2011-03-11 20:21:10.492302510 +0800 -@@ -1405,6 +1405,8 @@ +--- linux-2.6.32-131.0.15.el6.x86_64.orig/block/blk-core.c 2011-05-10 21:38:33.000000000 +0300 ++++ linux-2.6.32-131.0.15.el6.x86_64/block/blk-core.c 2011-05-19 21:01:04.000000000 +0300 +@@ -1416,6 +1416,8 @@ static inline int should_fail_request(st #endif /* CONFIG_FAIL_MAKE_REQUEST */ @@ -30,31 +32,20 @@ Index: linux-2.6.32-71.18.1.el6-master/block/blk-core.c /* * Check whether this bio extends beyond the end of the device. */ -@@ -1506,6 +1508,23 @@ +@@ -1517,6 +1519,12 @@ static inline void __generic_make_reques if (unlikely(test_bit(QUEUE_FLAG_DEAD, &q->queue_flags))) goto end_io; -+ /* this is cfs's dev_rdonly check */ -+ if (bio_rw(bio) == WRITE && dev_check_rdonly(bio->bi_bdev)) { -+ struct block_device *bdev = bio->bi_bdev; -+ -+ printk(KERN_WARNING "Write to readonly device %s (%#x) " -+ "bi_flags: %lx, bi_vcnt: %d, bi_idx: %d, " -+ "bi->size: %d, bi_cnt: %d, bi_private: %p\n", -+ bdev->bd_disk ? bdev->bd_disk->disk_name : "", -+ bdev->bd_dev, bio->bi_flags, bio->bi_vcnt, -+ bio->bi_idx, bio->bi_size, -+ atomic_read(&bio->bi_cnt), bio->bi_private); -+ set_bit(BIO_RDONLY, &bio->bi_flags); -+ bio_endio(bio, 0); -+ clear_bit(BIO_RDONLY, &bio->bi_flags); -+ break; -+ } ++ /* this is cfs's dev_rdonly check */ ++ if (bio_rw(bio) == WRITE && dev_check_rdonly(bio->bi_bdev)) { ++ err = 0; ++ goto end_io; ++ } + if (should_fail_request(bio)) goto end_io; -@@ -2578,6 +2586,99 @@ +@@ -2619,6 +2638,99 @@ int kblockd_schedule_work(struct request } EXPORT_SYMBOL(kblockd_schedule_work); @@ -154,11 +145,11 @@ Index: linux-2.6.32-71.18.1.el6-master/block/blk-core.c int __init blk_dev_init(void) { BUILD_BUG_ON(__REQ_NR_BITS > 8 * -Index: linux-2.6.32-71.18.1.el6-master/fs/block_dev.c +Index: linux-2.6.32-131.0.15.el6.x86_64/fs/block_dev.c =================================================================== ---- linux-2.6.32-71.18.1.el6-master.orig/fs/block_dev.c 2011-03-05 11:35:40.486042782 +0800 -+++ linux-2.6.32-71.18.1.el6-master/fs/block_dev.c 2011-03-05 11:37:35.624324775 +0800 -@@ -1389,6 +1389,7 @@ +--- linux-2.6.32-131.0.15.el6.x86_64.orig/fs/block_dev.c 2011-05-10 21:38:29.000000000 +0300 ++++ linux-2.6.32-131.0.15.el6.x86_64/fs/block_dev.c 2011-05-19 21:01:04.000000000 +0300 +@@ -1389,6 +1389,7 @@ static int __blkdev_put(struct block_dev if (bdev != bdev->bd_contains) victim = bdev->bd_contains; bdev->bd_contains = NULL; @@ -166,11 +157,11 @@ Index: linux-2.6.32-71.18.1.el6-master/fs/block_dev.c } unlock_kernel(); mutex_unlock(&bdev->bd_mutex); -Index: linux-2.6.32-71.18.1.el6-master/include/linux/fs.h +Index: linux-2.6.32-131.0.15.el6.x86_64/include/linux/fs.h =================================================================== ---- linux-2.6.32-71.18.1.el6-master.orig/include/linux/fs.h 2011-03-05 11:35:40.445043037 +0800 -+++ linux-2.6.32-71.18.1.el6-master/include/linux/fs.h 2011-03-05 11:37:35.726324137 +0800 -@@ -2204,6 +2204,10 @@ +--- linux-2.6.32-131.0.15.el6.x86_64.orig/include/linux/fs.h 2011-05-10 21:38:29.000000000 +0300 ++++ linux-2.6.32-131.0.15.el6.x86_64/include/linux/fs.h 2011-05-19 21:01:04.000000000 +0300 +@@ -2244,6 +2244,10 @@ struct bio; extern void submit_bio(int, struct bio *); extern int bdev_read_only(struct block_device *); #endif @@ -181,15 +172,3 @@ Index: linux-2.6.32-71.18.1.el6-master/include/linux/fs.h extern int set_blocksize(struct block_device *, int); extern int sb_set_blocksize(struct super_block *, int); extern int sb_min_blocksize(struct super_block *, int); -Index: linux+rh+chaos/include/linux/bio.h -=================================================================== ---- linux+rh+chaos.orig/include/linux/bio.h -+++ linux+rh+chaos/include/linux/bio.h -@@ -126,6 +126,7 @@ struct bio { - #define BIO_NULL_MAPPED 9 /* contains invalid user pages */ - #define BIO_FS_INTEGRITY 10 /* fs owns integrity data, not block layer */ - #define BIO_QUIET 11 /* Make BIO Quiet */ -+#define BIO_RDONLY 31 /* device is readonly */ - #define bio_flagged(bio, flag) ((bio)->bi_flags & (1 << (flag))) - - /*