Re: [stable][PATCH < 2.6.19] Fix data corruption with dm-crypt over RAID5
Christophe Saout wrote: > Fix corruption issue with dm-crypt on top of software raid5. Cancelled > readahead bio's that report no error, just have BIO_UPTODATE cleared > were reported as successful reads to the higher layers (and leaving > random content in the buffer cache). Already fixed in 2.6.19. > > Signed-off-by: Christophe Saout <[EMAIL PROTECTED]> > > > --- linux-2.6.18.orig/drivers/md/dm-crypt.c 2006-09-20 05:42:06.0 > +0200 > +++ linux-2.6.18/drivers/md/dm-crypt.c2006-12-02 03:03:36.0 > +0100 > @@ -717,13 +717,15 @@ > if (bio->bi_size) > return 1; > > + if (!bio_flagged(bio, BIO_UPTODATE) && !error) > + error = -EIO; > + > bio_put(bio); > > /* > * successful reads are decrypted by the worker thread > */ > - if ((bio_data_dir(bio) == READ) > - && bio_flagged(bio, BIO_UPTODATE)) { > + if (bio_data_dir(io->bio) == READ && !error) { > kcryptd_queue_io(io); Why doesn't kcryptd_queue_io() check the return value from queue_work()? 476 static void kcryptd_queue_io(struct crypt_io *io) 477 { 478 INIT_WORK(>work, kcryptd_do_work, io); 479 queue_work(_kcryptd_workqueue, >work); 480 } -piet > return 0; > } - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [stable][PATCH 2.6.19] Fix data corruption with dm-crypt over RAID5
Christophe Saout wrote: Fix corruption issue with dm-crypt on top of software raid5. Cancelled readahead bio's that report no error, just have BIO_UPTODATE cleared were reported as successful reads to the higher layers (and leaving random content in the buffer cache). Already fixed in 2.6.19. Signed-off-by: Christophe Saout [EMAIL PROTECTED] --- linux-2.6.18.orig/drivers/md/dm-crypt.c 2006-09-20 05:42:06.0 +0200 +++ linux-2.6.18/drivers/md/dm-crypt.c2006-12-02 03:03:36.0 +0100 @@ -717,13 +717,15 @@ if (bio-bi_size) return 1; + if (!bio_flagged(bio, BIO_UPTODATE) !error) + error = -EIO; + bio_put(bio); /* * successful reads are decrypted by the worker thread */ - if ((bio_data_dir(bio) == READ) - bio_flagged(bio, BIO_UPTODATE)) { + if (bio_data_dir(io-bio) == READ !error) { kcryptd_queue_io(io); Why doesn't kcryptd_queue_io() check the return value from queue_work()? 476 static void kcryptd_queue_io(struct crypt_io *io) 477 { 478 INIT_WORK(io-work, kcryptd_do_work, io); 479 queue_work(_kcryptd_workqueue, io-work); 480 } -piet return 0; } - To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [dm-devel] [stable][PATCH < 2.6.19] Fix data corruption with dm-crypt over RAID5
On Sat, 2006-12-02 at 03:27 +0100, Christophe Saout wrote: Hi Christophe: I'm wondering about trying out your patch with dm-crypt on 2.6.12. The code in drivers/md/dm-crypt.c`crypt_endio() appears to be the same. Is there a reason that this isn't necessary or would be a bad idea. Looks like the existing code isn't checking the BIO_UPTODATE flag before doing the bio_put(). Looks the the second part of not calling kcryptd_queue_io() and forwarding the processing to the cryptd is effectively the same. The 1st change will set error if BIO_UPTODATE isn't set and that will cause the 2nd change to skip calling kcryptd_queue_io(). I'm not sure about the change in the arg to bio_data_dir() changing from bio to io->bio. Perhaps they are equivalent; care to comment on that. Unless I hear otherwise I'll try it out Tomorrow. -piet > Fix corruption issue with dm-crypt on top of software raid5. Cancelled > readahead bio's that report no error, just have BIO_UPTODATE cleared > were reported as successful reads to the higher layers (and leaving > random content in the buffer cache). Already fixed in 2.6.19. > > Signed-off-by: Christophe Saout <[EMAIL PROTECTED]> > > > --- linux-2.6.18.orig/drivers/md/dm-crypt.c 2006-09-20 05:42:06.0 > +0200 > +++ linux-2.6.18/drivers/md/dm-crypt.c2006-12-02 03:03:36.0 > +0100 > @@ -717,13 +717,15 @@ > if (bio->bi_size) > return 1; > > + if (!bio_flagged(bio, BIO_UPTODATE) && !error) > + error = -EIO; > + > bio_put(bio); > > /* >* successful reads are decrypted by the worker thread >*/ > - if ((bio_data_dir(bio) == READ) > - && bio_flagged(bio, BIO_UPTODATE)) { > + if (bio_data_dir(io->bio) == READ && !error) { > kcryptd_queue_io(io); > return 0; > } > > > -- > dm-devel mailing list > [EMAIL PROTECTED] > https://www.redhat.com/mailman/listinfo/dm-devel -- Piet DelaneyPhone: (408) 200-5256 Blue Lane Technologies Fax: (408) 200-5299 10450 Bubb Rd. Cupertino, Ca. 95014Email: [EMAIL PROTECTED] signature.asc Description: This is a digitally signed message part
Re: [dm-devel] [stable][PATCH 2.6.19] Fix data corruption with dm-crypt over RAID5
On Sat, 2006-12-02 at 03:27 +0100, Christophe Saout wrote: Hi Christophe: I'm wondering about trying out your patch with dm-crypt on 2.6.12. The code in drivers/md/dm-crypt.c`crypt_endio() appears to be the same. Is there a reason that this isn't necessary or would be a bad idea. Looks like the existing code isn't checking the BIO_UPTODATE flag before doing the bio_put(). Looks the the second part of not calling kcryptd_queue_io() and forwarding the processing to the cryptd is effectively the same. The 1st change will set error if BIO_UPTODATE isn't set and that will cause the 2nd change to skip calling kcryptd_queue_io(). I'm not sure about the change in the arg to bio_data_dir() changing from bio to io-bio. Perhaps they are equivalent; care to comment on that. Unless I hear otherwise I'll try it out Tomorrow. -piet Fix corruption issue with dm-crypt on top of software raid5. Cancelled readahead bio's that report no error, just have BIO_UPTODATE cleared were reported as successful reads to the higher layers (and leaving random content in the buffer cache). Already fixed in 2.6.19. Signed-off-by: Christophe Saout [EMAIL PROTECTED] --- linux-2.6.18.orig/drivers/md/dm-crypt.c 2006-09-20 05:42:06.0 +0200 +++ linux-2.6.18/drivers/md/dm-crypt.c2006-12-02 03:03:36.0 +0100 @@ -717,13 +717,15 @@ if (bio-bi_size) return 1; + if (!bio_flagged(bio, BIO_UPTODATE) !error) + error = -EIO; + bio_put(bio); /* * successful reads are decrypted by the worker thread */ - if ((bio_data_dir(bio) == READ) - bio_flagged(bio, BIO_UPTODATE)) { + if (bio_data_dir(io-bio) == READ !error) { kcryptd_queue_io(io); return 0; } -- dm-devel mailing list [EMAIL PROTECTED] https://www.redhat.com/mailman/listinfo/dm-devel -- Piet DelaneyPhone: (408) 200-5256 Blue Lane Technologies Fax: (408) 200-5299 10450 Bubb Rd. Cupertino, Ca. 95014Email: [EMAIL PROTECTED] signature.asc Description: This is a digitally signed message part
Re: [stable][PATCH < 2.6.19] Fix data corruption with dm-crypt over RAID5
Am Freitag, den 01.12.2006, 19:49 -0800 schrieb Chris Wright: > * Christophe Saout ([EMAIL PROTECTED]) wrote: > > Fix corruption issue with dm-crypt on top of software raid5. Cancelled > > readahead bio's that report no error, just have BIO_UPTODATE cleared > > were reported as successful reads to the higher layers (and leaving > > random content in the buffer cache). Already fixed in 2.6.19. > > I take it this is fixed a different way in 2.6.19? Mind clarifying the > difference? It's more or less fixed the same way in 2.6.19. The function was reordered by Milan Broz to accommodate the changed write path (commit 8b004457168995f2ae2a35327f885183a9e74141): > [PATCH] dm crypt: restructure for workqueue change > > Restructure part of the dm-crypt code in preparation for workqueue > changes. > > Use 'base_bio' or 'clone' variable names consistently throughout. No > functional changes are included in this patch. "No functional changes" actually included the correct fix, accidental or not. > Minor nit: introduces trailing whitespaces, cleaned it up locally. Ouch, sorry. signature.asc Description: Dies ist ein digital signierter Nachrichtenteil
Re: [stable][PATCH 2.6.19] Fix data corruption with dm-crypt over RAID5
Am Freitag, den 01.12.2006, 19:49 -0800 schrieb Chris Wright: * Christophe Saout ([EMAIL PROTECTED]) wrote: Fix corruption issue with dm-crypt on top of software raid5. Cancelled readahead bio's that report no error, just have BIO_UPTODATE cleared were reported as successful reads to the higher layers (and leaving random content in the buffer cache). Already fixed in 2.6.19. I take it this is fixed a different way in 2.6.19? Mind clarifying the difference? It's more or less fixed the same way in 2.6.19. The function was reordered by Milan Broz to accommodate the changed write path (commit 8b004457168995f2ae2a35327f885183a9e74141): [PATCH] dm crypt: restructure for workqueue change Restructure part of the dm-crypt code in preparation for workqueue changes. Use 'base_bio' or 'clone' variable names consistently throughout. No functional changes are included in this patch. No functional changes actually included the correct fix, accidental or not. Minor nit: introduces trailing whitespaces, cleaned it up locally. Ouch, sorry. signature.asc Description: Dies ist ein digital signierter Nachrichtenteil
Re: [stable][PATCH < 2.6.19] Fix data corruption with dm-crypt over RAID5
[Note: please Cc: [EMAIL PROTECTED] on -stable patches] * Christophe Saout ([EMAIL PROTECTED]) wrote: > Fix corruption issue with dm-crypt on top of software raid5. Cancelled > readahead bio's that report no error, just have BIO_UPTODATE cleared > were reported as successful reads to the higher layers (and leaving > random content in the buffer cache). Already fixed in 2.6.19. I take it this is fixed a different way in 2.6.19? Mind clarifying the difference? > Signed-off-by: Christophe Saout <[EMAIL PROTECTED]> > > > --- linux-2.6.18.orig/drivers/md/dm-crypt.c 2006-09-20 05:42:06.0 > +0200 > +++ linux-2.6.18/drivers/md/dm-crypt.c2006-12-02 03:03:36.0 > +0100 > @@ -717,13 +717,15 @@ > if (bio->bi_size) > return 1; > > + if (!bio_flagged(bio, BIO_UPTODATE) && !error) > + error = -EIO; > + Minor nit: introduces trailing whitespaces, cleaned it up locally. thanks, -chris -- This is a note to let you know that we have just queued up the patch titled Subject: dm crypt: Fix data corruption with dm-crypt over RAID5 to the 2.6.18-stable tree. Its filename is dm-crypt-fix-data-corruption-with-dm-crypt-over-raid5.patch A git repo of this tree can be found at http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary >From [EMAIL PROTECTED] Fri Dec 1 18:36:19 2006 Date: Sat, 02 Dec 2006 03:27:56 +0100 From: Christophe Saout <[EMAIL PROTECTED]> To: linux-kernel@vger.kernel.org Cc: [EMAIL PROTECTED], Andrey <[EMAIL PROTECTED]>, Andrew Morton <[EMAIL PROTECTED]>, [EMAIL PROTECTED], Neil Brown <[EMAIL PROTECTED]>, Jens Axboe <[EMAIL PROTECTED]>, Chris Wright <[EMAIL PROTECTED]> Subject: dm crypt: Fix data corruption with dm-crypt over RAID5 Fix corruption issue with dm-crypt on top of software raid5. Cancelled readahead bio's that report no error, just have BIO_UPTODATE cleared were reported as successful reads to the higher layers (and leaving random content in the buffer cache). Already fixed in 2.6.19. Signed-off-by: Christophe Saout <[EMAIL PROTECTED]> Signed-off-by: Chris Wright <[EMAIL PROTECTED]> --- drivers/md/dm-crypt.c |6 -- 1 file changed, 4 insertions(+), 2 deletions(-) --- linux-2.6.18.5.orig/drivers/md/dm-crypt.c +++ linux-2.6.18.5/drivers/md/dm-crypt.c @@ -717,13 +717,15 @@ static int crypt_endio(struct bio *bio, if (bio->bi_size) return 1; + if (!bio_flagged(bio, BIO_UPTODATE) && !error) + error = -EIO; + bio_put(bio); /* * successful reads are decrypted by the worker thread */ - if ((bio_data_dir(bio) == READ) - && bio_flagged(bio, BIO_UPTODATE)) { + if (bio_data_dir(io->bio) == READ && !error) { kcryptd_queue_io(io); return 0; } - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[stable][PATCH < 2.6.19] Fix data corruption with dm-crypt over RAID5
Fix corruption issue with dm-crypt on top of software raid5. Cancelled readahead bio's that report no error, just have BIO_UPTODATE cleared were reported as successful reads to the higher layers (and leaving random content in the buffer cache). Already fixed in 2.6.19. Signed-off-by: Christophe Saout <[EMAIL PROTECTED]> --- linux-2.6.18.orig/drivers/md/dm-crypt.c 2006-09-20 05:42:06.0 +0200 +++ linux-2.6.18/drivers/md/dm-crypt.c 2006-12-02 03:03:36.0 +0100 @@ -717,13 +717,15 @@ if (bio->bi_size) return 1; + if (!bio_flagged(bio, BIO_UPTODATE) && !error) + error = -EIO; + bio_put(bio); /* * successful reads are decrypted by the worker thread */ - if ((bio_data_dir(bio) == READ) - && bio_flagged(bio, BIO_UPTODATE)) { + if (bio_data_dir(io->bio) == READ && !error) { kcryptd_queue_io(io); return 0; } - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[stable][PATCH 2.6.19] Fix data corruption with dm-crypt over RAID5
Fix corruption issue with dm-crypt on top of software raid5. Cancelled readahead bio's that report no error, just have BIO_UPTODATE cleared were reported as successful reads to the higher layers (and leaving random content in the buffer cache). Already fixed in 2.6.19. Signed-off-by: Christophe Saout [EMAIL PROTECTED] --- linux-2.6.18.orig/drivers/md/dm-crypt.c 2006-09-20 05:42:06.0 +0200 +++ linux-2.6.18/drivers/md/dm-crypt.c 2006-12-02 03:03:36.0 +0100 @@ -717,13 +717,15 @@ if (bio-bi_size) return 1; + if (!bio_flagged(bio, BIO_UPTODATE) !error) + error = -EIO; + bio_put(bio); /* * successful reads are decrypted by the worker thread */ - if ((bio_data_dir(bio) == READ) -bio_flagged(bio, BIO_UPTODATE)) { + if (bio_data_dir(io-bio) == READ !error) { kcryptd_queue_io(io); return 0; } - To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [stable][PATCH 2.6.19] Fix data corruption with dm-crypt over RAID5
[Note: please Cc: [EMAIL PROTECTED] on -stable patches] * Christophe Saout ([EMAIL PROTECTED]) wrote: Fix corruption issue with dm-crypt on top of software raid5. Cancelled readahead bio's that report no error, just have BIO_UPTODATE cleared were reported as successful reads to the higher layers (and leaving random content in the buffer cache). Already fixed in 2.6.19. I take it this is fixed a different way in 2.6.19? Mind clarifying the difference? Signed-off-by: Christophe Saout [EMAIL PROTECTED] --- linux-2.6.18.orig/drivers/md/dm-crypt.c 2006-09-20 05:42:06.0 +0200 +++ linux-2.6.18/drivers/md/dm-crypt.c2006-12-02 03:03:36.0 +0100 @@ -717,13 +717,15 @@ if (bio-bi_size) return 1; + if (!bio_flagged(bio, BIO_UPTODATE) !error) + error = -EIO; + Minor nit: introduces trailing whitespaces, cleaned it up locally. thanks, -chris -- This is a note to let you know that we have just queued up the patch titled Subject: dm crypt: Fix data corruption with dm-crypt over RAID5 to the 2.6.18-stable tree. Its filename is dm-crypt-fix-data-corruption-with-dm-crypt-over-raid5.patch A git repo of this tree can be found at http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary From [EMAIL PROTECTED] Fri Dec 1 18:36:19 2006 Date: Sat, 02 Dec 2006 03:27:56 +0100 From: Christophe Saout [EMAIL PROTECTED] To: linux-kernel@vger.kernel.org Cc: [EMAIL PROTECTED], Andrey [EMAIL PROTECTED], Andrew Morton [EMAIL PROTECTED], [EMAIL PROTECTED], Neil Brown [EMAIL PROTECTED], Jens Axboe [EMAIL PROTECTED], Chris Wright [EMAIL PROTECTED] Subject: dm crypt: Fix data corruption with dm-crypt over RAID5 Fix corruption issue with dm-crypt on top of software raid5. Cancelled readahead bio's that report no error, just have BIO_UPTODATE cleared were reported as successful reads to the higher layers (and leaving random content in the buffer cache). Already fixed in 2.6.19. Signed-off-by: Christophe Saout [EMAIL PROTECTED] Signed-off-by: Chris Wright [EMAIL PROTECTED] --- drivers/md/dm-crypt.c |6 -- 1 file changed, 4 insertions(+), 2 deletions(-) --- linux-2.6.18.5.orig/drivers/md/dm-crypt.c +++ linux-2.6.18.5/drivers/md/dm-crypt.c @@ -717,13 +717,15 @@ static int crypt_endio(struct bio *bio, if (bio-bi_size) return 1; + if (!bio_flagged(bio, BIO_UPTODATE) !error) + error = -EIO; + bio_put(bio); /* * successful reads are decrypted by the worker thread */ - if ((bio_data_dir(bio) == READ) -bio_flagged(bio, BIO_UPTODATE)) { + if (bio_data_dir(io-bio) == READ !error) { kcryptd_queue_io(io); return 0; } - To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/