From mboxrd@z Thu Jan 1 00:00:00 1970 From: James Bottomley Subject: Re: [PATCH] dm-mirror: do not degrade the mirror on discard error Date: Sat, 14 Feb 2015 18:39:54 -0800 Message-ID: <1423967994.19864.9.camel@HansenPartnership.com> References: Reply-To: device-mapper development Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dm-devel-bounces@redhat.com Errors-To: dm-devel-bounces@redhat.com To: Mikulas Patocka Cc: Heinz Mauelshagen , Mike Snitzer , dm-devel@redhat.com, "Alasdair G. Kergon" , Zdenek Kabelac List-Id: dm-devel.ids On Thu, 2015-02-12 at 10:09 -0500, 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 > > 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); I think the error gets ignored, so this is probably harmless, but shouldn't you propagate the actual error here? discard is advisory and can fail for a variety of reasons (alignment being chief) for which EOPNOTSUPP is inappropriate. James