On Thu, 12 Feb 2015, Mikulas Patocka wrote: > It may be possible that a device claims discard support but it rejects > discards with -EOPNOTSUPP. It happens when using loopback on ext2/ext3 > filesystem driven by the ext4 driver. It may also happen if the underlying > devices are moved from one disk on another. > > If discard error happens, we reject the bio with -EOPNOTSUPP, but we do > not degrade the array. > > This patch fixes failed test shell/lvconvert-repair-transient.sh in the > lvm2 testsuite if the testsuite is extracted on an ext2 or ext3 filesystem > and it is being driven by the ext4 driver. > > Signed-off-by: Mikulas Patocka <mpatocka@xxxxxxxxxx> I forgot to add Cc: stable@xxxxxxxxxx BTW. that ext4 behavior is specific to RHEL 7. On upstream kernel, the ext4 driver can punch a hole in the ext2 or ext3 filesystem, but there are corruptions when doing it - see bug 1176840. Mikulas > Index: linux-2.6/drivers/md/dm-raid1.c > =================================================================== > --- linux-2.6.orig/drivers/md/dm-raid1.c > +++ linux-2.6/drivers/md/dm-raid1.c > @@ -604,6 +604,15 @@ static void write_callback(unsigned long > return; > } > > + /* > + * If the bio is discard, return an error, but do not > + * degrade the array. > + */ > + if (bio->bi_rw & REQ_DISCARD) { > + bio_endio(bio, -EOPNOTSUPP); > + return; > + } > + > for (i = 0; i < ms->nr_mirrors; i++) > if (test_bit(i, &error)) > fail_mirror(ms->mirror + i, DM_RAID1_WRITE_ERROR); > -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel