-+ /* 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;
++ }