git.openpandora.org
/
pandora-kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
md/raid5: don't record new size if resize_stripes fails.
[pandora-kernel.git]
/
drivers
/
md
/
dm-flakey.c
diff --git
a/drivers/md/dm-flakey.c
b/drivers/md/dm-flakey.c
index
f84c080
..
746b5e8
100644
(file)
--- a/
drivers/md/dm-flakey.c
+++ b/
drivers/md/dm-flakey.c
@@
-323,7
+323,7
@@
static int flakey_end_io(struct dm_target *ti, struct bio *bio,
* Corrupt successful READs while in down state.
* If flags were specified, only corrupt those that match.
*/
* Corrupt successful READs while in down state.
* If flags were specified, only corrupt those that match.
*/
- if (!error && bio_submitted_while_down &&
+ if (
fc->corrupt_bio_byte &&
!error && bio_submitted_while_down &&
(bio_data_dir(bio) == READ) && (fc->corrupt_bio_rw == READ) &&
all_corrupt_bio_flags_match(bio, fc))
corrupt_bio_data(bio, fc);
(bio_data_dir(bio) == READ) && (fc->corrupt_bio_rw == READ) &&
all_corrupt_bio_flags_match(bio, fc))
corrupt_bio_data(bio, fc);
@@
-331,8
+331,8
@@
static int flakey_end_io(struct dm_target *ti, struct bio *bio,
return error;
}
return error;
}
-static
int
flakey_status(struct dm_target *ti, status_type_t type,
-
char *result, unsigned int
maxlen)
+static
void
flakey_status(struct dm_target *ti, status_type_t type,
+
char *result, unsigned
maxlen)
{
unsigned sz = 0;
struct flakey_c *fc = ti->private;
{
unsigned sz = 0;
struct flakey_c *fc = ti->private;
@@
-362,14
+362,22
@@
static int flakey_status(struct dm_target *ti, status_type_t type,
break;
}
break;
}
- return 0;
}
static int flakey_ioctl(struct dm_target *ti, unsigned int cmd, unsigned long arg)
{
struct flakey_c *fc = ti->private;
}
static int flakey_ioctl(struct dm_target *ti, unsigned int cmd, unsigned long arg)
{
struct flakey_c *fc = ti->private;
+ struct dm_dev *dev = fc->dev;
+ int r = 0;
+
+ /*
+ * Only pass ioctls through if the device sizes match exactly.
+ */
+ if (fc->start ||
+ ti->len != i_size_read(dev->bdev->bd_inode) >> SECTOR_SHIFT)
+ r = scsi_verify_blk_ioctl(NULL, cmd);
- return
__blkdev_driver_ioctl(fc->dev->bdev, fc->
dev->mode, cmd, arg);
+ return
r ? : __blkdev_driver_ioctl(dev->bdev,
dev->mode, cmd, arg);
}
static int flakey_merge(struct dm_target *ti, struct bvec_merge_data *bvm,
}
static int flakey_merge(struct dm_target *ti, struct bvec_merge_data *bvm,
@@
-396,7
+404,7
@@
static int flakey_iterate_devices(struct dm_target *ti, iterate_devices_callout_
static struct target_type flakey_target = {
.name = "flakey",
static struct target_type flakey_target = {
.name = "flakey",
- .version = {1, 2,
0
},
+ .version = {1, 2,
1
},
.module = THIS_MODULE,
.ctr = flakey_ctr,
.dtr = flakey_dtr,
.module = THIS_MODULE,
.ctr = flakey_ctr,
.dtr = flakey_dtr,