pktcdvd: Switch to bio_kmalloc()
From: Kent Overstreet <koverstreet@google.com>
This is prep work for killing bi_destructor Signed-off-by: Kent Overstreet <koverstreet@google.com> --- drivers/block/pktcdvd.c | 115 ++++++++++++++++------------------------------- 1 files changed, 39 insertions(+), 76 deletions(-) diff --git a/drivers/block/pktcdvd.c b/drivers/block/pktcdvd.c index ba66e44..6fe693a 100644 --- a/drivers/block/pktcdvd.c +++ b/drivers/block/pktcdvd.c @@ -522,36 +522,38 @@ static void pkt_bio_finished(struct pktcdvd_device *pd) } } -static void pkt_bio_destructor(struct bio *bio) +static void pkt_end_io_read(struct bio *bio, int err) { - kfree(bio->bi_io_vec); - kfree(bio); -} + struct packet_data *pkt = bio->bi_private; + struct pktcdvd_device *pd = pkt->pd; + BUG_ON(!pd); -static struct bio *pkt_bio_alloc(int nr_iovecs) -{ - struct bio_vec *bvl = NULL; - struct bio *bio; + VPRINTK("pkt_end_io_read: bio=%p sec0=%llx sec=%llx err=%d ", bio, + (unsigned long long)pkt->sector, (unsigned long long)bio->bi_sector, err); - bio = kmalloc(sizeof(struct bio), GFP_KERNEL); - if (!bio) - goto no_bio; - bio_init(bio); + if (err) + atomic_inc(&pkt->io_errors); + if (atomic_dec_and_test(&pkt->io_wait)) { + atomic_inc(&pkt->run_sm); + wake_up(&pd->wqueue); + } + pkt_bio_finished(pd); +} - bvl = kcalloc(nr_iovecs, sizeof(struct bio_vec), GFP_KERNEL); - if (!bvl) - goto no_bvl; +static void pkt_end_io_packet_write(struct bio *bio, int err) +{ + struct packet_data *pkt = bio->bi_private; + struct pktcdvd_device *pd = pkt->pd; + BUG_ON(!pd); - bio->bi_max_vecs = nr_iovecs; - bio->bi_io_vec = bvl; - bio->bi_destructor = pkt_bio_destructor; + VPRINTK("pkt_end_io_packet_write: id=%d, err=%d ", pkt->id, err); - return bio; + pd->stats.pkt_ended++; - no_bvl: - kfree(bio); - no_bio: - return NULL; + pkt_bio_finished(pd); + atomic_dec(&pkt->io_wait); + atomic_inc(&pkt->run_sm); + wake_up(&pd->wqueue); } /* @@ -567,10 +569,13 @@ static struct packet_data *pkt_alloc_packet_data(int frames) goto no_pkt; pkt->frames = frames; - pkt->w_bio = pkt_bio_alloc(frames); + pkt->w_bio = bio_kmalloc(GFP_KERNEL, frames); if (!pkt->w_bio) goto no_bio; + pkt->w_bio->bi_end_io = pkt_end_io_packet_write; + pkt->w_bio->bi_private = pkt; + for (i = 0; i < frames / FRAMES_PER_PAGE; i++) { pkt->pages[i] = alloc_page(GFP_KERNEL|__GFP_ZERO); if (!pkt->pages[i]) @@ -581,9 +586,12 @@ static struct packet_data *pkt_alloc_packet_data(int frames) bio_list_init(&pkt->orig_bios); for (i = 0; i < frames; i++) { - struct bio *bio = pkt_bio_alloc(1); + struct bio *bio = bio_kmalloc(GFP_KERNEL, 1); if (!bio) goto no_rd_bio; + + bio->bi_end_io = pkt_end_io_read; + bio->bi_private = pkt; pkt->r_bios[i] = bio; } @@ -1036,40 +1044,6 @@ static void pkt_make_local_copy(struct packet_data *pkt, struct bio_vec *bvec) } } -static void pkt_end_io_read(struct bio *bio, int err) -{ - struct packet_data *pkt = bio->bi_private; - struct pktcdvd_device *pd = pkt->pd; - BUG_ON(!pd); - - VPRINTK("pkt_end_io_read: bio=%p sec0=%llx sec=%llx err=%d ", bio, - (unsigned long long)pkt->sector, (unsigned long long)bio->bi_sector, err); - - if (err) - atomic_inc(&pkt->io_errors); - if (atomic_dec_and_test(&pkt->io_wait)) { - atomic_inc(&pkt->run_sm); - wake_up(&pd->wqueue); - } - pkt_bio_finished(pd); -} - -static void pkt_end_io_packet_write(struct bio *bio, int err) -{ - struct packet_data *pkt = bio->bi_private; - struct pktcdvd_device *pd = pkt->pd; - BUG_ON(!pd); - - VPRINTK("pkt_end_io_packet_write: id=%d, err=%d ", pkt->id, err); - - pd->stats.pkt_ended++; - - pkt_bio_finished(pd); - atomic_dec(&pkt->io_wait); - atomic_inc(&pkt->run_sm); - wake_up(&pd->wqueue); -} - /* * Schedule reads for the holes in a packet */ @@ -1111,21 +1085,15 @@ static void pkt_gather_data(struct pktcdvd_device *pd, struct packet_data *pkt) * Schedule reads for missing parts of the packet. */ for (f = 0; f < pkt->frames; f++) { - struct bio_vec *vec; - int p, offset; + if (written[f]) continue; + bio = pkt->r_bios[f]; - vec = bio->bi_io_vec; - bio_init(bio); - bio->bi_max_vecs = 1; - bio->bi_sector = pkt->sector + f * (CD_FRAMESIZE >> 9); - bio->bi_bdev = pd->bdev; - bio->bi_end_io = pkt_end_io_read; - bio->bi_private = pkt; - bio->bi_io_vec = vec; - bio->bi_destructor = pkt_bio_destructor; + bio_reset(bio); + bio->bi_sector = pkt->sector + f * (CD_FRAMESIZE >> 9); + bio->bi_bdev = pd->bdev; p = (f * CD_FRAMESIZE) / PAGE_SIZE; offset = (f * CD_FRAMESIZE) % PAGE_SIZE; @@ -1418,14 +1386,9 @@ static void pkt_start_write(struct pktcdvd_device *pd, struct packet_data *pkt) } /* Start the write request */ - bio_init(pkt->w_bio); - pkt->w_bio->bi_max_vecs = PACKET_MAX_SIZE; + bio_reset(pkt->w_bio); pkt->w_bio->bi_sector = pkt->sector; pkt->w_bio->bi_bdev = pd->bdev; - pkt->w_bio->bi_end_io = pkt_end_io_packet_write; - pkt->w_bio->bi_private = pkt; - pkt->w_bio->bi_io_vec = bvec; - pkt->w_bio->bi_destructor = pkt_bio_destructor; for (f = 0; f < pkt->frames; f++) if (!bio_add_page(pkt->w_bio, bvec[f].bv_page, CD_FRAMESIZE, bvec[f].bv_offset)) BUG(); -- 1.7.9.rc2 -- dm-devel mailing list dm-devel@redhat.com https://www.redhat.com/mailman/listinfo/dm-devel |
pktcdvd: Switch to bio_kmalloc()
On Thu, May 17, 2012 at 10:59:54PM -0400, koverstreet@google.com wrote:
> From: Kent Overstreet <koverstreet@google.com> > > This is prep work for killing bi_destructor Again, it would be great if the commit message described what conversion is taking place how and how it's been tested. Please also cc the maintainer. Thanks. -- tejun -- dm-devel mailing list dm-devel@redhat.com https://www.redhat.com/mailman/listinfo/dm-devel |
pktcdvd: Switch to bio_kmalloc()
This is prep work for killing bi_destructor - previously, pktcdvd had
its own pkt_bio_alloc which was basically duplication bio_kmalloc(), necessitating its own bi_destructor implementation. Signed-off-by: Kent Overstreet <koverstreet@google.com> Change-Id: I5604293e07f695c8f0106ae819e306f1def89a67 --- drivers/block/pktcdvd.c | 115 ++++++++++++++++------------------------------- 1 file changed, 39 insertions(+), 76 deletions(-) diff --git a/drivers/block/pktcdvd.c b/drivers/block/pktcdvd.c index ba66e44..6fe693a 100644 --- a/drivers/block/pktcdvd.c +++ b/drivers/block/pktcdvd.c @@ -522,36 +522,38 @@ static void pkt_bio_finished(struct pktcdvd_device *pd) } } -static void pkt_bio_destructor(struct bio *bio) +static void pkt_end_io_read(struct bio *bio, int err) { - kfree(bio->bi_io_vec); - kfree(bio); -} + struct packet_data *pkt = bio->bi_private; + struct pktcdvd_device *pd = pkt->pd; + BUG_ON(!pd); -static struct bio *pkt_bio_alloc(int nr_iovecs) -{ - struct bio_vec *bvl = NULL; - struct bio *bio; + VPRINTK("pkt_end_io_read: bio=%p sec0=%llx sec=%llx err=%d ", bio, + (unsigned long long)pkt->sector, (unsigned long long)bio->bi_sector, err); - bio = kmalloc(sizeof(struct bio), GFP_KERNEL); - if (!bio) - goto no_bio; - bio_init(bio); + if (err) + atomic_inc(&pkt->io_errors); + if (atomic_dec_and_test(&pkt->io_wait)) { + atomic_inc(&pkt->run_sm); + wake_up(&pd->wqueue); + } + pkt_bio_finished(pd); +} - bvl = kcalloc(nr_iovecs, sizeof(struct bio_vec), GFP_KERNEL); - if (!bvl) - goto no_bvl; +static void pkt_end_io_packet_write(struct bio *bio, int err) +{ + struct packet_data *pkt = bio->bi_private; + struct pktcdvd_device *pd = pkt->pd; + BUG_ON(!pd); - bio->bi_max_vecs = nr_iovecs; - bio->bi_io_vec = bvl; - bio->bi_destructor = pkt_bio_destructor; + VPRINTK("pkt_end_io_packet_write: id=%d, err=%d ", pkt->id, err); - return bio; + pd->stats.pkt_ended++; - no_bvl: - kfree(bio); - no_bio: - return NULL; + pkt_bio_finished(pd); + atomic_dec(&pkt->io_wait); + atomic_inc(&pkt->run_sm); + wake_up(&pd->wqueue); } /* @@ -567,10 +569,13 @@ static struct packet_data *pkt_alloc_packet_data(int frames) goto no_pkt; pkt->frames = frames; - pkt->w_bio = pkt_bio_alloc(frames); + pkt->w_bio = bio_kmalloc(GFP_KERNEL, frames); if (!pkt->w_bio) goto no_bio; + pkt->w_bio->bi_end_io = pkt_end_io_packet_write; + pkt->w_bio->bi_private = pkt; + for (i = 0; i < frames / FRAMES_PER_PAGE; i++) { pkt->pages[i] = alloc_page(GFP_KERNEL|__GFP_ZERO); if (!pkt->pages[i]) @@ -581,9 +586,12 @@ static struct packet_data *pkt_alloc_packet_data(int frames) bio_list_init(&pkt->orig_bios); for (i = 0; i < frames; i++) { - struct bio *bio = pkt_bio_alloc(1); + struct bio *bio = bio_kmalloc(GFP_KERNEL, 1); if (!bio) goto no_rd_bio; + + bio->bi_end_io = pkt_end_io_read; + bio->bi_private = pkt; pkt->r_bios[i] = bio; } @@ -1036,40 +1044,6 @@ static void pkt_make_local_copy(struct packet_data *pkt, struct bio_vec *bvec) } } -static void pkt_end_io_read(struct bio *bio, int err) -{ - struct packet_data *pkt = bio->bi_private; - struct pktcdvd_device *pd = pkt->pd; - BUG_ON(!pd); - - VPRINTK("pkt_end_io_read: bio=%p sec0=%llx sec=%llx err=%d ", bio, - (unsigned long long)pkt->sector, (unsigned long long)bio->bi_sector, err); - - if (err) - atomic_inc(&pkt->io_errors); - if (atomic_dec_and_test(&pkt->io_wait)) { - atomic_inc(&pkt->run_sm); - wake_up(&pd->wqueue); - } - pkt_bio_finished(pd); -} - -static void pkt_end_io_packet_write(struct bio *bio, int err) -{ - struct packet_data *pkt = bio->bi_private; - struct pktcdvd_device *pd = pkt->pd; - BUG_ON(!pd); - - VPRINTK("pkt_end_io_packet_write: id=%d, err=%d ", pkt->id, err); - - pd->stats.pkt_ended++; - - pkt_bio_finished(pd); - atomic_dec(&pkt->io_wait); - atomic_inc(&pkt->run_sm); - wake_up(&pd->wqueue); -} - /* * Schedule reads for the holes in a packet */ @@ -1111,21 +1085,15 @@ static void pkt_gather_data(struct pktcdvd_device *pd, struct packet_data *pkt) * Schedule reads for missing parts of the packet. */ for (f = 0; f < pkt->frames; f++) { - struct bio_vec *vec; - int p, offset; + if (written[f]) continue; + bio = pkt->r_bios[f]; - vec = bio->bi_io_vec; - bio_init(bio); - bio->bi_max_vecs = 1; - bio->bi_sector = pkt->sector + f * (CD_FRAMESIZE >> 9); - bio->bi_bdev = pd->bdev; - bio->bi_end_io = pkt_end_io_read; - bio->bi_private = pkt; - bio->bi_io_vec = vec; - bio->bi_destructor = pkt_bio_destructor; + bio_reset(bio); + bio->bi_sector = pkt->sector + f * (CD_FRAMESIZE >> 9); + bio->bi_bdev = pd->bdev; p = (f * CD_FRAMESIZE) / PAGE_SIZE; offset = (f * CD_FRAMESIZE) % PAGE_SIZE; @@ -1418,14 +1386,9 @@ static void pkt_start_write(struct pktcdvd_device *pd, struct packet_data *pkt) } /* Start the write request */ - bio_init(pkt->w_bio); - pkt->w_bio->bi_max_vecs = PACKET_MAX_SIZE; + bio_reset(pkt->w_bio); pkt->w_bio->bi_sector = pkt->sector; pkt->w_bio->bi_bdev = pd->bdev; - pkt->w_bio->bi_end_io = pkt_end_io_packet_write; - pkt->w_bio->bi_private = pkt; - pkt->w_bio->bi_io_vec = bvec; - pkt->w_bio->bi_destructor = pkt_bio_destructor; for (f = 0; f < pkt->frames; f++) if (!bio_add_page(pkt->w_bio, bvec[f].bv_page, CD_FRAMESIZE, bvec[f].bv_offset)) BUG(); -- 1.7.9.3.327.g2980b -- dm-devel mailing list dm-devel@redhat.com https://www.redhat.com/mailman/listinfo/dm-devel |
pktcdvd: Switch to bio_kmalloc()
On Wed, May 23, 2012 at 05:02:44PM -0700, Kent Overstreet wrote:
[..] > @@ -567,10 +569,13 @@ static struct packet_data *pkt_alloc_packet_data(int frames) > goto no_pkt; > > pkt->frames = frames; > - pkt->w_bio = pkt_bio_alloc(frames); > + pkt->w_bio = bio_kmalloc(GFP_KERNEL, frames); So previously bios allocated were being kfreed by pkt_bio_destructor(). Now where are we doing kfree() on bio being allocated by bio_kmalloc()? Thanks Vivek -- dm-devel mailing list dm-devel@redhat.com https://www.redhat.com/mailman/listinfo/dm-devel |
pktcdvd: Switch to bio_kmalloc()
On Thu, May 24, 2012 at 03:42:52PM -0400, Vivek Goyal wrote:
> On Wed, May 23, 2012 at 05:02:44PM -0700, Kent Overstreet wrote: > > [..] > > @@ -567,10 +569,13 @@ static struct packet_data *pkt_alloc_packet_data(int frames) > > goto no_pkt; > > > > pkt->frames = frames; > > - pkt->w_bio = pkt_bio_alloc(frames); > > + pkt->w_bio = bio_kmalloc(GFP_KERNEL, frames); > > So previously bios allocated were being kfreed by pkt_bio_destructor(). > Now where are we doing kfree() on bio being allocated by bio_kmalloc()? bio_kmalloc() sets up bi_destructor, so there's no need to kfree() the bio - bio_put() frees it just like normal. -- dm-devel mailing list dm-devel@redhat.com https://www.redhat.com/mailman/listinfo/dm-devel |
pktcdvd: Switch to bio_kmalloc()
This is prep work for killing bi_destructor - previously, pktcdvd had
its own pkt_bio_alloc which was basically duplication bio_kmalloc(), necessitating its own bi_destructor implementation. Signed-off-by: Kent Overstreet <koverstreet@google.com> Change-Id: I5604293e07f695c8f0106ae819e306f1def89a67 --- drivers/block/pktcdvd.c | 115 ++++++++++++++++------------------------------- 1 file changed, 39 insertions(+), 76 deletions(-) diff --git a/drivers/block/pktcdvd.c b/drivers/block/pktcdvd.c index ba66e44..6fe693a 100644 --- a/drivers/block/pktcdvd.c +++ b/drivers/block/pktcdvd.c @@ -522,36 +522,38 @@ static void pkt_bio_finished(struct pktcdvd_device *pd) } } -static void pkt_bio_destructor(struct bio *bio) +static void pkt_end_io_read(struct bio *bio, int err) { - kfree(bio->bi_io_vec); - kfree(bio); -} + struct packet_data *pkt = bio->bi_private; + struct pktcdvd_device *pd = pkt->pd; + BUG_ON(!pd); -static struct bio *pkt_bio_alloc(int nr_iovecs) -{ - struct bio_vec *bvl = NULL; - struct bio *bio; + VPRINTK("pkt_end_io_read: bio=%p sec0=%llx sec=%llx err=%d ", bio, + (unsigned long long)pkt->sector, (unsigned long long)bio->bi_sector, err); - bio = kmalloc(sizeof(struct bio), GFP_KERNEL); - if (!bio) - goto no_bio; - bio_init(bio); + if (err) + atomic_inc(&pkt->io_errors); + if (atomic_dec_and_test(&pkt->io_wait)) { + atomic_inc(&pkt->run_sm); + wake_up(&pd->wqueue); + } + pkt_bio_finished(pd); +} - bvl = kcalloc(nr_iovecs, sizeof(struct bio_vec), GFP_KERNEL); - if (!bvl) - goto no_bvl; +static void pkt_end_io_packet_write(struct bio *bio, int err) +{ + struct packet_data *pkt = bio->bi_private; + struct pktcdvd_device *pd = pkt->pd; + BUG_ON(!pd); - bio->bi_max_vecs = nr_iovecs; - bio->bi_io_vec = bvl; - bio->bi_destructor = pkt_bio_destructor; + VPRINTK("pkt_end_io_packet_write: id=%d, err=%d ", pkt->id, err); - return bio; + pd->stats.pkt_ended++; - no_bvl: - kfree(bio); - no_bio: - return NULL; + pkt_bio_finished(pd); + atomic_dec(&pkt->io_wait); + atomic_inc(&pkt->run_sm); + wake_up(&pd->wqueue); } /* @@ -567,10 +569,13 @@ static struct packet_data *pkt_alloc_packet_data(int frames) goto no_pkt; pkt->frames = frames; - pkt->w_bio = pkt_bio_alloc(frames); + pkt->w_bio = bio_kmalloc(GFP_KERNEL, frames); if (!pkt->w_bio) goto no_bio; + pkt->w_bio->bi_end_io = pkt_end_io_packet_write; + pkt->w_bio->bi_private = pkt; + for (i = 0; i < frames / FRAMES_PER_PAGE; i++) { pkt->pages[i] = alloc_page(GFP_KERNEL|__GFP_ZERO); if (!pkt->pages[i]) @@ -581,9 +586,12 @@ static struct packet_data *pkt_alloc_packet_data(int frames) bio_list_init(&pkt->orig_bios); for (i = 0; i < frames; i++) { - struct bio *bio = pkt_bio_alloc(1); + struct bio *bio = bio_kmalloc(GFP_KERNEL, 1); if (!bio) goto no_rd_bio; + + bio->bi_end_io = pkt_end_io_read; + bio->bi_private = pkt; pkt->r_bios[i] = bio; } @@ -1036,40 +1044,6 @@ static void pkt_make_local_copy(struct packet_data *pkt, struct bio_vec *bvec) } } -static void pkt_end_io_read(struct bio *bio, int err) -{ - struct packet_data *pkt = bio->bi_private; - struct pktcdvd_device *pd = pkt->pd; - BUG_ON(!pd); - - VPRINTK("pkt_end_io_read: bio=%p sec0=%llx sec=%llx err=%d ", bio, - (unsigned long long)pkt->sector, (unsigned long long)bio->bi_sector, err); - - if (err) - atomic_inc(&pkt->io_errors); - if (atomic_dec_and_test(&pkt->io_wait)) { - atomic_inc(&pkt->run_sm); - wake_up(&pd->wqueue); - } - pkt_bio_finished(pd); -} - -static void pkt_end_io_packet_write(struct bio *bio, int err) -{ - struct packet_data *pkt = bio->bi_private; - struct pktcdvd_device *pd = pkt->pd; - BUG_ON(!pd); - - VPRINTK("pkt_end_io_packet_write: id=%d, err=%d ", pkt->id, err); - - pd->stats.pkt_ended++; - - pkt_bio_finished(pd); - atomic_dec(&pkt->io_wait); - atomic_inc(&pkt->run_sm); - wake_up(&pd->wqueue); -} - /* * Schedule reads for the holes in a packet */ @@ -1111,21 +1085,15 @@ static void pkt_gather_data(struct pktcdvd_device *pd, struct packet_data *pkt) * Schedule reads for missing parts of the packet. */ for (f = 0; f < pkt->frames; f++) { - struct bio_vec *vec; - int p, offset; + if (written[f]) continue; + bio = pkt->r_bios[f]; - vec = bio->bi_io_vec; - bio_init(bio); - bio->bi_max_vecs = 1; - bio->bi_sector = pkt->sector + f * (CD_FRAMESIZE >> 9); - bio->bi_bdev = pd->bdev; - bio->bi_end_io = pkt_end_io_read; - bio->bi_private = pkt; - bio->bi_io_vec = vec; - bio->bi_destructor = pkt_bio_destructor; + bio_reset(bio); + bio->bi_sector = pkt->sector + f * (CD_FRAMESIZE >> 9); + bio->bi_bdev = pd->bdev; p = (f * CD_FRAMESIZE) / PAGE_SIZE; offset = (f * CD_FRAMESIZE) % PAGE_SIZE; @@ -1418,14 +1386,9 @@ static void pkt_start_write(struct pktcdvd_device *pd, struct packet_data *pkt) } /* Start the write request */ - bio_init(pkt->w_bio); - pkt->w_bio->bi_max_vecs = PACKET_MAX_SIZE; + bio_reset(pkt->w_bio); pkt->w_bio->bi_sector = pkt->sector; pkt->w_bio->bi_bdev = pd->bdev; - pkt->w_bio->bi_end_io = pkt_end_io_packet_write; - pkt->w_bio->bi_private = pkt; - pkt->w_bio->bi_io_vec = bvec; - pkt->w_bio->bi_destructor = pkt_bio_destructor; for (f = 0; f < pkt->frames; f++) if (!bio_add_page(pkt->w_bio, bvec[f].bv_page, CD_FRAMESIZE, bvec[f].bv_offset)) BUG(); -- 1.7.9.3.327.g2980b -- dm-devel mailing list dm-devel@redhat.com https://www.redhat.com/mailman/listinfo/dm-devel |
pktcdvd: Switch to bio_kmalloc()
On Fri, May 25, 2012 at 01:25:27PM -0700, Kent Overstreet wrote:
> This is prep work for killing bi_destructor - previously, pktcdvd had > its own pkt_bio_alloc which was basically duplication bio_kmalloc(), > necessitating its own bi_destructor implementation. > > Signed-off-by: Kent Overstreet <koverstreet@google.com> > Change-Id: I5604293e07f695c8f0106ae819e306f1def89a67 > --- > drivers/block/pktcdvd.c | 115 ++++++++++++++++------------------------------- > 1 file changed, 39 insertions(+), 76 deletions(-) > > diff --git a/drivers/block/pktcdvd.c b/drivers/block/pktcdvd.c > index ba66e44..6fe693a 100644 > --- a/drivers/block/pktcdvd.c > +++ b/drivers/block/pktcdvd.c > @@ -522,36 +522,38 @@ static void pkt_bio_finished(struct pktcdvd_device *pd) > } > } > > -static void pkt_bio_destructor(struct bio *bio) > +static void pkt_end_io_read(struct bio *bio, int err) * Why isn't pktcdvd maintainer cc'd? * How is it tested or why do you think this change is correct? * Didn't Boaz point out that mixing function relocations and functional changes makes the patch difficult to review and verify already? Why doesn't the patch description mention function relocations? And why are they mixed with functional changes? -- tejun -- dm-devel mailing list dm-devel@redhat.com https://www.redhat.com/mailman/listinfo/dm-devel |
pktcdvd: Switch to bio_kmalloc()
This is prep work for killing bi_destructor - previously, pktcdvd had
its own pkt_bio_alloc which was basically duplication bio_kmalloc(), necessitating its own bi_destructor implementation. Signed-off-by: Kent Overstreet <koverstreet@google.com> --- drivers/block/pktcdvd.c | 115 ++++++++++++++++------------------------------- 1 files changed, 39 insertions(+), 76 deletions(-) diff --git a/drivers/block/pktcdvd.c b/drivers/block/pktcdvd.c index ba66e44..6fe693a 100644 --- a/drivers/block/pktcdvd.c +++ b/drivers/block/pktcdvd.c @@ -522,36 +522,38 @@ static void pkt_bio_finished(struct pktcdvd_device *pd) } } -static void pkt_bio_destructor(struct bio *bio) +static void pkt_end_io_read(struct bio *bio, int err) { - kfree(bio->bi_io_vec); - kfree(bio); -} + struct packet_data *pkt = bio->bi_private; + struct pktcdvd_device *pd = pkt->pd; + BUG_ON(!pd); -static struct bio *pkt_bio_alloc(int nr_iovecs) -{ - struct bio_vec *bvl = NULL; - struct bio *bio; + VPRINTK("pkt_end_io_read: bio=%p sec0=%llx sec=%llx err=%d ", bio, + (unsigned long long)pkt->sector, (unsigned long long)bio->bi_sector, err); - bio = kmalloc(sizeof(struct bio), GFP_KERNEL); - if (!bio) - goto no_bio; - bio_init(bio); + if (err) + atomic_inc(&pkt->io_errors); + if (atomic_dec_and_test(&pkt->io_wait)) { + atomic_inc(&pkt->run_sm); + wake_up(&pd->wqueue); + } + pkt_bio_finished(pd); +} - bvl = kcalloc(nr_iovecs, sizeof(struct bio_vec), GFP_KERNEL); - if (!bvl) - goto no_bvl; +static void pkt_end_io_packet_write(struct bio *bio, int err) +{ + struct packet_data *pkt = bio->bi_private; + struct pktcdvd_device *pd = pkt->pd; + BUG_ON(!pd); - bio->bi_max_vecs = nr_iovecs; - bio->bi_io_vec = bvl; - bio->bi_destructor = pkt_bio_destructor; + VPRINTK("pkt_end_io_packet_write: id=%d, err=%d ", pkt->id, err); - return bio; + pd->stats.pkt_ended++; - no_bvl: - kfree(bio); - no_bio: - return NULL; + pkt_bio_finished(pd); + atomic_dec(&pkt->io_wait); + atomic_inc(&pkt->run_sm); + wake_up(&pd->wqueue); } /* @@ -567,10 +569,13 @@ static struct packet_data *pkt_alloc_packet_data(int frames) goto no_pkt; pkt->frames = frames; - pkt->w_bio = pkt_bio_alloc(frames); + pkt->w_bio = bio_kmalloc(GFP_KERNEL, frames); if (!pkt->w_bio) goto no_bio; + pkt->w_bio->bi_end_io = pkt_end_io_packet_write; + pkt->w_bio->bi_private = pkt; + for (i = 0; i < frames / FRAMES_PER_PAGE; i++) { pkt->pages[i] = alloc_page(GFP_KERNEL|__GFP_ZERO); if (!pkt->pages[i]) @@ -581,9 +586,12 @@ static struct packet_data *pkt_alloc_packet_data(int frames) bio_list_init(&pkt->orig_bios); for (i = 0; i < frames; i++) { - struct bio *bio = pkt_bio_alloc(1); + struct bio *bio = bio_kmalloc(GFP_KERNEL, 1); if (!bio) goto no_rd_bio; + + bio->bi_end_io = pkt_end_io_read; + bio->bi_private = pkt; pkt->r_bios[i] = bio; } @@ -1036,40 +1044,6 @@ static void pkt_make_local_copy(struct packet_data *pkt, struct bio_vec *bvec) } } -static void pkt_end_io_read(struct bio *bio, int err) -{ - struct packet_data *pkt = bio->bi_private; - struct pktcdvd_device *pd = pkt->pd; - BUG_ON(!pd); - - VPRINTK("pkt_end_io_read: bio=%p sec0=%llx sec=%llx err=%d ", bio, - (unsigned long long)pkt->sector, (unsigned long long)bio->bi_sector, err); - - if (err) - atomic_inc(&pkt->io_errors); - if (atomic_dec_and_test(&pkt->io_wait)) { - atomic_inc(&pkt->run_sm); - wake_up(&pd->wqueue); - } - pkt_bio_finished(pd); -} - -static void pkt_end_io_packet_write(struct bio *bio, int err) -{ - struct packet_data *pkt = bio->bi_private; - struct pktcdvd_device *pd = pkt->pd; - BUG_ON(!pd); - - VPRINTK("pkt_end_io_packet_write: id=%d, err=%d ", pkt->id, err); - - pd->stats.pkt_ended++; - - pkt_bio_finished(pd); - atomic_dec(&pkt->io_wait); - atomic_inc(&pkt->run_sm); - wake_up(&pd->wqueue); -} - /* * Schedule reads for the holes in a packet */ @@ -1111,21 +1085,15 @@ static void pkt_gather_data(struct pktcdvd_device *pd, struct packet_data *pkt) * Schedule reads for missing parts of the packet. */ for (f = 0; f < pkt->frames; f++) { - struct bio_vec *vec; - int p, offset; + if (written[f]) continue; + bio = pkt->r_bios[f]; - vec = bio->bi_io_vec; - bio_init(bio); - bio->bi_max_vecs = 1; - bio->bi_sector = pkt->sector + f * (CD_FRAMESIZE >> 9); - bio->bi_bdev = pd->bdev; - bio->bi_end_io = pkt_end_io_read; - bio->bi_private = pkt; - bio->bi_io_vec = vec; - bio->bi_destructor = pkt_bio_destructor; + bio_reset(bio); + bio->bi_sector = pkt->sector + f * (CD_FRAMESIZE >> 9); + bio->bi_bdev = pd->bdev; p = (f * CD_FRAMESIZE) / PAGE_SIZE; offset = (f * CD_FRAMESIZE) % PAGE_SIZE; @@ -1418,14 +1386,9 @@ static void pkt_start_write(struct pktcdvd_device *pd, struct packet_data *pkt) } /* Start the write request */ - bio_init(pkt->w_bio); - pkt->w_bio->bi_max_vecs = PACKET_MAX_SIZE; + bio_reset(pkt->w_bio); pkt->w_bio->bi_sector = pkt->sector; pkt->w_bio->bi_bdev = pd->bdev; - pkt->w_bio->bi_end_io = pkt_end_io_packet_write; - pkt->w_bio->bi_private = pkt; - pkt->w_bio->bi_io_vec = bvec; - pkt->w_bio->bi_destructor = pkt_bio_destructor; for (f = 0; f < pkt->frames; f++) if (!bio_add_page(pkt->w_bio, bvec[f].bv_page, CD_FRAMESIZE, bvec[f].bv_offset)) BUG(); -- 1.7.7.3 -- dm-devel mailing list dm-devel@redhat.com https://www.redhat.com/mailman/listinfo/dm-devel |
pktcdvd: Switch to bio_kmalloc()
On 07/24/2012 11:11 PM, Kent Overstreet wrote:
> This is prep work for killing bi_destructor - previously, pktcdvd had > its own pkt_bio_alloc which was basically duplication bio_kmalloc(), > necessitating its own bi_destructor implementation. > > Signed-off-by: Kent Overstreet <koverstreet@google.com> > --- > drivers/block/pktcdvd.c | 115 ++++++++++++++++------------------------------- > 1 files changed, 39 insertions(+), 76 deletions(-) > > diff --git a/drivers/block/pktcdvd.c b/drivers/block/pktcdvd.c > index ba66e44..6fe693a 100644 > --- a/drivers/block/pktcdvd.c > +++ b/drivers/block/pktcdvd.c > @@ -522,36 +522,38 @@ static void pkt_bio_finished(struct pktcdvd_device *pd) > } > } > > -static void pkt_bio_destructor(struct bio *bio) > +static void pkt_end_io_read(struct bio *bio, int err) > { > - kfree(bio->bi_io_vec); > - kfree(bio); > -} Again here, you decided to move the pkt_end_io_read && pkt_end_io_packet_write functions from below, to above here. Which makes it impossible to find any bugs by just reviewing the patch. So I have not reviewed it. I know that you wanted so you can reference them at pkt_alloc_packet_data. I'd use a forward reference, in this case. And a move in a next patch. But this is just me. Perhaps the owner of this code can review it? Cheers Boaz > + struct packet_data *pkt = bio->bi_private; > + struct pktcdvd_device *pd = pkt->pd; > + BUG_ON(!pd); > > -static struct bio *pkt_bio_alloc(int nr_iovecs) > -{ > - struct bio_vec *bvl = NULL; > - struct bio *bio; > + VPRINTK("pkt_end_io_read: bio=%p sec0=%llx sec=%llx err=%d ", bio, > + (unsigned long long)pkt->sector, (unsigned long long)bio->bi_sector, err); > > - bio = kmalloc(sizeof(struct bio), GFP_KERNEL); > - if (!bio) > - goto no_bio; > - bio_init(bio); > + if (err) > + atomic_inc(&pkt->io_errors); > + if (atomic_dec_and_test(&pkt->io_wait)) { > + atomic_inc(&pkt->run_sm); > + wake_up(&pd->wqueue); > + } > + pkt_bio_finished(pd); > +} > > - bvl = kcalloc(nr_iovecs, sizeof(struct bio_vec), GFP_KERNEL); > - if (!bvl) > - goto no_bvl; > +static void pkt_end_io_packet_write(struct bio *bio, int err) > +{ > + struct packet_data *pkt = bio->bi_private; > + struct pktcdvd_device *pd = pkt->pd; > + BUG_ON(!pd); > > - bio->bi_max_vecs = nr_iovecs; > - bio->bi_io_vec = bvl; > - bio->bi_destructor = pkt_bio_destructor; > + VPRINTK("pkt_end_io_packet_write: id=%d, err=%d ", pkt->id, err); > > - return bio; > + pd->stats.pkt_ended++; > > - no_bvl: > - kfree(bio); > - no_bio: > - return NULL; > + pkt_bio_finished(pd); > + atomic_dec(&pkt->io_wait); > + atomic_inc(&pkt->run_sm); > + wake_up(&pd->wqueue); > } > > /* > @@ -567,10 +569,13 @@ static struct packet_data *pkt_alloc_packet_data(int frames) > goto no_pkt; > > pkt->frames = frames; > - pkt->w_bio = pkt_bio_alloc(frames); > + pkt->w_bio = bio_kmalloc(GFP_KERNEL, frames); > if (!pkt->w_bio) > goto no_bio; > > + pkt->w_bio->bi_end_io = pkt_end_io_packet_write; > + pkt->w_bio->bi_private = pkt; > + > for (i = 0; i < frames / FRAMES_PER_PAGE; i++) { > pkt->pages[i] = alloc_page(GFP_KERNEL|__GFP_ZERO); > if (!pkt->pages[i]) > @@ -581,9 +586,12 @@ static struct packet_data *pkt_alloc_packet_data(int frames) > bio_list_init(&pkt->orig_bios); > > for (i = 0; i < frames; i++) { > - struct bio *bio = pkt_bio_alloc(1); > + struct bio *bio = bio_kmalloc(GFP_KERNEL, 1); > if (!bio) > goto no_rd_bio; > + > + bio->bi_end_io = pkt_end_io_read; > + bio->bi_private = pkt; > pkt->r_bios[i] = bio; > } > > @@ -1036,40 +1044,6 @@ static void pkt_make_local_copy(struct packet_data *pkt, struct bio_vec *bvec) > } > } > > -static void pkt_end_io_read(struct bio *bio, int err) > -{ > - struct packet_data *pkt = bio->bi_private; > - struct pktcdvd_device *pd = pkt->pd; > - BUG_ON(!pd); > - > - VPRINTK("pkt_end_io_read: bio=%p sec0=%llx sec=%llx err=%d ", bio, > - (unsigned long long)pkt->sector, (unsigned long long)bio->bi_sector, err); > - > - if (err) > - atomic_inc(&pkt->io_errors); > - if (atomic_dec_and_test(&pkt->io_wait)) { > - atomic_inc(&pkt->run_sm); > - wake_up(&pd->wqueue); > - } > - pkt_bio_finished(pd); > -} > - > -static void pkt_end_io_packet_write(struct bio *bio, int err) > -{ > - struct packet_data *pkt = bio->bi_private; > - struct pktcdvd_device *pd = pkt->pd; > - BUG_ON(!pd); > - > - VPRINTK("pkt_end_io_packet_write: id=%d, err=%d ", pkt->id, err); > - > - pd->stats.pkt_ended++; > - > - pkt_bio_finished(pd); > - atomic_dec(&pkt->io_wait); > - atomic_inc(&pkt->run_sm); > - wake_up(&pd->wqueue); > -} > - > /* > * Schedule reads for the holes in a packet > */ > @@ -1111,21 +1085,15 @@ static void pkt_gather_data(struct pktcdvd_device *pd, struct packet_data *pkt) > * Schedule reads for missing parts of the packet. > */ > for (f = 0; f < pkt->frames; f++) { > - struct bio_vec *vec; > - > int p, offset; > + > if (written[f]) > continue; > + > bio = pkt->r_bios[f]; > - vec = bio->bi_io_vec; > - bio_init(bio); > - bio->bi_max_vecs = 1; > - bio->bi_sector = pkt->sector + f * (CD_FRAMESIZE >> 9); > - bio->bi_bdev = pd->bdev; > - bio->bi_end_io = pkt_end_io_read; > - bio->bi_private = pkt; > - bio->bi_io_vec = vec; > - bio->bi_destructor = pkt_bio_destructor; > + bio_reset(bio); > + bio->bi_sector = pkt->sector + f * (CD_FRAMESIZE >> 9); > + bio->bi_bdev = pd->bdev; > > p = (f * CD_FRAMESIZE) / PAGE_SIZE; > offset = (f * CD_FRAMESIZE) % PAGE_SIZE; > @@ -1418,14 +1386,9 @@ static void pkt_start_write(struct pktcdvd_device *pd, struct packet_data *pkt) > } > > /* Start the write request */ > - bio_init(pkt->w_bio); > - pkt->w_bio->bi_max_vecs = PACKET_MAX_SIZE; > + bio_reset(pkt->w_bio); > pkt->w_bio->bi_sector = pkt->sector; > pkt->w_bio->bi_bdev = pd->bdev; > - pkt->w_bio->bi_end_io = pkt_end_io_packet_write; > - pkt->w_bio->bi_private = pkt; > - pkt->w_bio->bi_io_vec = bvec; > - pkt->w_bio->bi_destructor = pkt_bio_destructor; > for (f = 0; f < pkt->frames; f++) > if (!bio_add_page(pkt->w_bio, bvec[f].bv_page, CD_FRAMESIZE, bvec[f].bv_offset)) > BUG(); -- dm-devel mailing list dm-devel@redhat.com https://www.redhat.com/mailman/listinfo/dm-devel |
pktcdvd: Switch to bio_kmalloc()
On Wed, Jul 25, 2012 at 02:29:59PM +0300, Boaz Harrosh wrote:
> On 07/24/2012 11:11 PM, Kent Overstreet wrote: > > > This is prep work for killing bi_destructor - previously, pktcdvd had > > its own pkt_bio_alloc which was basically duplication bio_kmalloc(), > > necessitating its own bi_destructor implementation. > > > > Signed-off-by: Kent Overstreet <koverstreet@google.com> > > --- > > drivers/block/pktcdvd.c | 115 ++++++++++++++++------------------------------- > > 1 files changed, 39 insertions(+), 76 deletions(-) > > > > diff --git a/drivers/block/pktcdvd.c b/drivers/block/pktcdvd.c > > index ba66e44..6fe693a 100644 > > --- a/drivers/block/pktcdvd.c > > +++ b/drivers/block/pktcdvd.c > > @@ -522,36 +522,38 @@ static void pkt_bio_finished(struct pktcdvd_device *pd) > > } > > } > > > > -static void pkt_bio_destructor(struct bio *bio) > > +static void pkt_end_io_read(struct bio *bio, int err) > > { > > - kfree(bio->bi_io_vec); > > - kfree(bio); > > -} > > > Again here, you decided to move the pkt_end_io_read && pkt_end_io_packet_write > functions from below, to above here. Which makes it impossible to find > any bugs by just reviewing the patch. > > So I have not reviewed it. > > I know that you wanted so you can reference them at pkt_alloc_packet_data. > I'd use a forward reference, in this case. And a move in a next patch. But > this is just me. Perhaps the owner of this code can review it? Yeah, I tend to be pretty anal about unnecessary forward declarations. Overly anal in this case, I suppose. Here's a better patch: commit 88cb170314bfa6cc90af37e433c07927b3b79ed2 Author: Kent Overstreet <koverstreet@google.com> Date: Wed Jul 25 16:00:00 2012 -0700 pktcdvd: Switch to bio_kmalloc() This is prep work for killing bi_destructor - previously, pktcdvd had its own pkt_bio_alloc which was basically duplication bio_kmalloc(), necessitating its own bi_destructor implementation. Signed-off-by: Kent Overstreet <koverstreet@google.com> diff --git a/drivers/block/pktcdvd.c b/drivers/block/pktcdvd.c index ba66e44..ae55f08 100644 --- a/drivers/block/pktcdvd.c +++ b/drivers/block/pktcdvd.c @@ -101,6 +101,8 @@ static struct dentry *pkt_debugfs_root = NULL; /* /sys/kernel/debug/pktcdvd */ static int pkt_setup_dev(dev_t dev, dev_t* pkt_dev); static int pkt_remove_dev(dev_t pkt_dev); static int pkt_seq_show(struct seq_file *m, void *p); +static void pkt_end_io_read(struct bio *bio, int err); +static void pkt_end_io_packet_write(struct bio *bio, int err); @@ -522,38 +524,6 @@ static void pkt_bio_finished(struct pktcdvd_device *pd) } } -static void pkt_bio_destructor(struct bio *bio) -{ - kfree(bio->bi_io_vec); - kfree(bio); -} - -static struct bio *pkt_bio_alloc(int nr_iovecs) -{ - struct bio_vec *bvl = NULL; - struct bio *bio; - - bio = kmalloc(sizeof(struct bio), GFP_KERNEL); - if (!bio) - goto no_bio; - bio_init(bio); - - bvl = kcalloc(nr_iovecs, sizeof(struct bio_vec), GFP_KERNEL); - if (!bvl) - goto no_bvl; - - bio->bi_max_vecs = nr_iovecs; - bio->bi_io_vec = bvl; - bio->bi_destructor = pkt_bio_destructor; - - return bio; - - no_bvl: - kfree(bio); - no_bio: - return NULL; -} - /* * Allocate a packet_data struct */ @@ -567,10 +537,13 @@ static struct packet_data *pkt_alloc_packet_data(int frames) goto no_pkt; pkt->frames = frames; - pkt->w_bio = pkt_bio_alloc(frames); + pkt->w_bio = bio_kmalloc(GFP_KERNEL, frames); if (!pkt->w_bio) goto no_bio; + pkt->w_bio->bi_end_io = pkt_end_io_packet_write; + pkt->w_bio->bi_private = pkt; + for (i = 0; i < frames / FRAMES_PER_PAGE; i++) { pkt->pages[i] = alloc_page(GFP_KERNEL|__GFP_ZERO); if (!pkt->pages[i]) @@ -581,9 +554,12 @@ static struct packet_data *pkt_alloc_packet_data(int frames) bio_list_init(&pkt->orig_bios); for (i = 0; i < frames; i++) { - struct bio *bio = pkt_bio_alloc(1); + struct bio *bio = bio_kmalloc(GFP_KERNEL, 1); if (!bio) goto no_rd_bio; + + bio->bi_end_io = pkt_end_io_read; + bio->bi_private = pkt; pkt->r_bios[i] = bio; } @@ -1111,21 +1087,15 @@ static void pkt_gather_data(struct pktcdvd_device *pd, struct packet_data *pkt) * Schedule reads for missing parts of the packet. */ for (f = 0; f < pkt->frames; f++) { - struct bio_vec *vec; - int p, offset; + if (written[f]) continue; + bio = pkt->r_bios[f]; - vec = bio->bi_io_vec; - bio_init(bio); - bio->bi_max_vecs = 1; - bio->bi_sector = pkt->sector + f * (CD_FRAMESIZE >> 9); - bio->bi_bdev = pd->bdev; - bio->bi_end_io = pkt_end_io_read; - bio->bi_private = pkt; - bio->bi_io_vec = vec; - bio->bi_destructor = pkt_bio_destructor; + bio_reset(bio); + bio->bi_sector = pkt->sector + f * (CD_FRAMESIZE >> 9); + bio->bi_bdev = pd->bdev; p = (f * CD_FRAMESIZE) / PAGE_SIZE; offset = (f * CD_FRAMESIZE) % PAGE_SIZE; @@ -1418,14 +1388,9 @@ static void pkt_start_write(struct pktcdvd_device *pd, struct packet_data *pkt) } /* Start the write request */ - bio_init(pkt->w_bio); - pkt->w_bio->bi_max_vecs = PACKET_MAX_SIZE; + bio_reset(pkt->w_bio); pkt->w_bio->bi_sector = pkt->sector; pkt->w_bio->bi_bdev = pd->bdev; - pkt->w_bio->bi_end_io = pkt_end_io_packet_write; - pkt->w_bio->bi_private = pkt; - pkt->w_bio->bi_io_vec = bvec; - pkt->w_bio->bi_destructor = pkt_bio_destructor; for (f = 0; f < pkt->frames; f++) if (!bio_add_page(pkt->w_bio, bvec[f].bv_page, CD_FRAMESIZE, bvec[f].bv_offset)) BUG(); -- dm-devel mailing list dm-devel@redhat.com https://www.redhat.com/mailman/listinfo/dm-devel Thu Jul 26 01:30:01 2012 Return-Path: <devel-bounces@lists.fedoraproject.org> X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eagle542.startdedicated.com X-Spam-Level: X-Spam-Status: No, score=-2.2 required=5.0 tests=DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED,FREEMAIL_FROM,RCVD_IN_DNSWL_MED,SPF_PA SS,T_DKIM_INVALID, T_RP_MATCHES_RCVD autolearn=ham version=3.3.2 X-Original-To: tom@linux-archive.org Delivered-To: tom-linux-archive.org@eagle542.startdedicated.com Received: from bastion.fedoraproject.org (bastion01.fedoraproject.org [209.132.181.2]) by eagle542.startdedicated.com (Postfix) with ESMTP id 8D2B920E02D5 for <tom@linux-archive.org>; Thu, 26 Jul 2012 01:09:12 +0200 (CEST) Received: from lists.fedoraproject.org (collab03.vpn.fedoraproject.org [192.168.1.70]) by bastion01.phx2.fedoraproject.org (Postfix) with ESMTP id CBDBB206BE; Wed, 25 Jul 2012 23:09:09 +0000 (UTC) Received: from collab03.fedoraproject.org (localhost [127.0.0.1]) by lists.fedoraproject.org (Postfix) with ESMTP id 3123F3FE15; Wed, 25 Jul 2012 23:09:09 +0000 (UTC) X-Original-To: devel@lists.fedoraproject.org Delivered-To: devel@lists.fedoraproject.org Received: from smtp-mm02.fedoraproject.org (smtp-mm02.fedoraproject.org [66.35.62.164]) by lists.fedoraproject.org (Postfix) with ESMTP id 89FD43FE15 for <devel@lists.fedoraproject.org>; Wed, 25 Jul 2012 23:09:07 +0000 (UTC) Received: from mail-wg0-f51.google.com (mail-wg0-f51.google.com [74.125.82.51]) by smtp-mm02.fedoraproject.org (Postfix) with ESMTP id CE7D03FD1F for <devel@lists.fedoraproject.org>; Wed, 25 Jul 2012 23:09:06 +0000 (UTC) Received: by wgbed3 with SMTP id ed3so941931wgb.20 for <devel@lists.fedoraproject.org>; Wed, 25 Jul 2012 16:09:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=message-id:date:from:user-agent:mime-version:to:subject:references :in-reply-to:content-type:content-transfer-encoding; bh=w9QgpUx2qRiIYA2TzMYU7QCV72wzdjmP+AK6AFnRPCk=; b=A3lSEFcf8Vu7wudclTzgiQcmudvkyLcRh03ESO8SPQGZlBMD leO+Uym+2mUMW9s31i ouLVFvXulP+if8xu3QOsSEzJq2D6ov5qbehvBHRLmvZMGwrssg BUyLntehI3uBAtWpM6 FKQsfO9aiQTpvyyWW7VpY6BK4puh2efkqR1T+AazJ+IcmdRYlc t95rG7r8VdgygT7cdb Ewq5T3O3DPz8r0bvQe0D0cak277X0TDlcwzdVwK4wIQt84obkx vIJCr0SrllCuxc66lG cGA3bM3BCo+p9LGK5Y+D+BNAIIuZO3z/HHjqMLPVdirEjb5e6JRtJy/oFY0NIuyRzpTm rHLQ== Received: by 10.180.99.196 with SMTP id es4mr8316723wib.18.1343257747159; Wed, 25 Jul 2012 16:09:07 -0700 (PDT) Received: from localhost.localdomain (85-220-55-128.dsl.dynamic.simnet.is. [85.220.55.128]) by mx.google.com with ESMTPS id fu8sm5085687wib.5.2012.07.25.16.09.06 (version=TLSv1/SSLv3 cipher=OTHER); Wed, 25 Jul 2012 16:09:06 -0700 (PDT) Message-ID: <50107C66.9080802@gmail.com> Date: Wed, 25 Jul 2012 23:08:22 +0000 From: =?UTF-8?B?IkrDs2hhbm4gQi4gR3XDsG11bmRzc29uIg==?= <johannbg@gmail.com> User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:14.0) Gecko/20120717 Thunderbird/14.0 MIME-Version: 1.0 To: devel@lists.fedoraproject.org Subject: Re: Summary/Minutes from today's FESCo Meeting (2012-07-23) References: <CA+5PVA4zHoXVtsP4aaKdxrjNVGkbvSREEWJp2AO8keECYvbn fA@mail.gmail.com> <500DA2B3.2090001@gmail.com> <20120724204931.GA27749@nostromo.devel.redhat.co m> <500F1233.9040001@gmail.com> <20120724212906.GA28432@nostromo.devel.redhat.co m> <500F1E21.3020307@gmail.com> <20120725214201.GA12626@nostromo.devel.redhat.co m> In-Reply-To: <20120725214201.GA12626@nostromo.devel.redhat.co m> X-BeenThere: devel@lists.fedoraproject.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: Development discussions related to Fedora <devel@lists.fedoraproject.org> List-Id: Development discussions related to Fedora <devel.lists.fedoraproject.org> List-Unsubscribe: <https://admin.fedoraproject.org/mailman/options/devel>, <mailto:devel-request@lists.fedoraproject.org?subject=unsubscrib e> List-Archive: <http://lists.fedoraproject.org/pipermail/devel/> List-Post: <mailto:devel@lists.fedoraproject.org> List-Help: <mailto:devel-request@lists.fedoraproject.org?subject=help> List-Subscribe: <https://admin.fedoraproject.org/mailman/listinfo/devel>, <mailto:devel-request@lists.fedoraproject.org?subject=subscribe> Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: devel-bounces@lists.fedoraproject.org Errors-To: devel-bounces@lists.fedoraproject.org T24gMDcvMjUvMjAxMiAwOTo0MiBQTSwgQmlsbCBOb3R0aW5naG FtIHdyb3RlOgo+ICJKw7NoYW5u IEIuIEd1w7BtdW5kc3NvbiIgKGpvaGFubmJnQGdtYWlsLmNvbS kgc2FpZDoKPj4+IFN0YW5kYXJk aXphdGlvbiBvbiB0aGUgY2hhbmdlcyBzbyBpdCBjYW4gYmUgZG 9jdW1lbnRlZCBpbiB0aGUgZ3Vp ZGxpbmVzCj4+PiBzbyBwZW9wbGUga25vdyB3aGF0IHRvIGRvIG luIHRoZWlyIHVuaXQgZmlsZS4g KHN1Y2ggYXMgYXJvdW5kCj4+PiBEb2N1bWVudGF0aW9uPSwgd2 hhdCBmaWVsZHMgYXJlIG5vIGxv bmdlciBuZWNlc3NhcnksIGV0Yy4pCj4+IFRoYXQncyBqdXN0IG xhdWdoYWJsZSBzaW5jZSBhZmFp ayBzeXN0ZW1kIHdvdWxkIGJlIHRoZSBvbmx5IHByb2dyYW0KPj 4gdGhhdCBpcyBmb3JjZWQgdG8g Z28gdGhyb3VnaCB0aGVzZSBjaGFuZ2UgYW5kIGdldCB0aGUgYX Bwcm92YWxzIGZyb20KPj4gRlBD IHdoaWxlIG90aGVycyBzaW1wbHkgZ2V0IGF3YXkgd2l0aCBtZW 50aW9uaW5nIGNoYW5nZXMgaW4g dXBzdHJlYW0KPj4gZG9jdW1lbnRhdGlvbi4KPiBJIGRvbid0IH NlZSB0aGlzIHNvcnQgb2YgYmlh cyB0aGF0IHlvdSdyZSBpbXBseWluZyBoZXJlLiBJbml0IHNjcm lwdAo+IHBhY2thZ2luZyBjaGFu Z2VzIHdlbnQgdGhyb3VnaCBGUEMuIERlc2t0b3AgZmlsZSBwYW NrYWdpbmcgZ29lcyB0aHJvdWdo IEZQQy4KPiBSdWJ5IGdlbXMgcGFja2FnaW5nIGNoYW5nZXMgZ2 8gdGhyb3VnaCBGUEMuIFdoeSB3 b3VsZG4ndCBzb21ldGhpbmcKPiBsaWtlIHN5c3RlbWQgc2Vydm ljZXMgdGhhdCBhbHNvIGFmZmVj dHMgYSBmZXcgaHVuZHJlZCBwYWNrYWdlcz8gWWVzLAo+IHN5c3 RlbWQgZG9lcyBoYXZlIGEgYml0 IGhpZ2hlciBiYXIgb24gdGhpbmdzIHRoYW4sIHNheSwgYWxpZW 5ibGFzdGVyLAo+IGJ1dCB0aGF0 J3MgYmVjYXVzZSBpdCdzIG11Y2ggbW9yZSBpbXBvcnRhbnQgdG 8gdGhlIG92ZXJhbGwgc3lzdGVt LgoKWW91IGd1eXMgKCBGRVNDTyApIHNlZW0gdG8gaGF2ZSBlYX NpbHkgZGlzbWlzcyB0aGF0IGZh Y3Qgd2hlbiB5b3UgCmFjY2VwdGVkIHRoZSBwcmVzZXQgZmVhdH VyZSBvciB3aGVuIGFjY2VwdGlu ZyBzeXN0ZW1kLgoKSWYgeW91IGd1eXMgRkVTQ08gaGFkIHdhbn RlZCBkb2N1bWVudGF0aW9uIGhv dyB0byBjb25zdHJ1Y3QgdW5pdHMgeW91IApndXlzIHdvdWxkIG hhdmUgYXNrZWQgZm9yIG9uZSB3 aGVuIHlvdSBndXlzIGFjY2VwdGVkIHN5c3RlbWQgYXMgdGhlIG 5ldyAKaW5pdCBzeXN0ZW0gdGhl biBtb3N0IGNlcnRhaW5seSB0aGlzIGFyZ3VtZW50IHdvdWxkIG 1ha2Ugc2Vuc2UuIC4KCklmIHRo ZSBtaWdyYXRpb24gcHJvY2VzcyB3YXMgbm90IG5lZWRlZCB0by BiZSBoYW5kbGVkIG9uIHBlciBp bml0c2NyaXB0IApiYXNlcyBJIHdvdWxkIGhhdmUgd3JpdHRlbi BvbmUgbG9uZyB0aW1lIGFnby4K Cj4KPj4gSSB0aG91Z2h0IHlvdSBndXlzIG1lYW50IHRoZSByZW 1vdmFsIG9mIHRoZSBlbnZpcm9u bWVudCBmaWxlcyB0aGF0Cj4+IHJlc2lkZXMgaW4gL2V0Yy9zeX Njb25maWcvIGRpcmVjdG9yeSBh bmQgdGhhdCB3YXMgd2h5IHRoZSBmZWF0dXJlCj4+IHdhcyBiZW luZyByZWplY3RlZCBhbmQgbWVu dGlvbmluZyB0aGF0IHVwc3RyZWFtIG5lZWRlZCBzb21lIGtpbm Qgb2YKPj4gdXBzdHJlYW0gcGF0 Y2hpbmcgd2FzIGp1c3QgdXR0ZXIgYW5kIHRvdGFsIGJ1bGxzaG l0IHNpbmNlIHB1dHRpbmcKPj4g ZW52aXJvbm1lbnQgZmlsZXMgaW4gL2V0Yy9zeXNjb25maWcvJG ZpbGUgaXMgRmVkb3JhL1JIRUwg c3BlY2lmaWMKPj4gYW5kIGlzIHRoZSByZWFzb24gd2h5IHVwc3 RyZWFtIGhhcyBiZWVuIHJlamVj dGVkIG91ciB1bml0cyB3aGVuIHRoZXkKPj4gaGF2ZSBiZWVuIH N1Ym1pdHRlZCB1cHN0cmVhbS4u Lgo+IFRoaXMgd2FzIGFsc28gYSBjb25jZXJuIG9mIEZFU0NvLC B5ZXMgLSBoYXZpbmcgYSBjbGVh ciBtaWdyYXRpb24gcGF0aAo+IGZvciB1c2VycyBhbmQgYWRtaW 5pc3RyYXRvcnMsIHJhdGhlciB0 aGFuIGRyb3BwaW5nIHRoZW0gYWxsIGFuZCBwaWNraW5nIHVwCj 4gdGhlIHBpZWNlcy4KCkFnYWlu IHllIGhhZCBubyBwcm9ibGVtIGFjY2VwdGluZyB0aGUgcHJlc2 V0IGZlYXR1cmUuLi4uCgo+ICAg QWRkaXRpb25hbGx5LCB0aGVyZSB3YXMgYSBtaW5vciBjb25jZX JuIGFib3V0IGlmIHRoZXJlIGFy ZQo+IGdvaW5nIHRvIGJlIG1vcmUgY2xlYW51cHMgdGhhdCBwb3 AgdXAgZWFjaCByZWxlYXNlLCBh cyBzb21lIG9mIHRoZQo+IGNsZWFudXBzIChkb2N1bWVudGF0aW 9uIGlzIHRoZSBvYnZpb3VzIG9u ZSkgZGlkbid0IGV4aXN0IHdoZW4gdGhlIHVuaXRzCj4gd2VyZS BmaXJzdCB3cml0dGVuLiBUaGVz ZSBzb3J0cyBvZiBjaGFuZ2VzIGFyZSB0aGUgc29ydCBvZiB0aG luZyB0aGF0Cj4gYXJlIGdyZWF0 IGZvciBzdGFuZGFyZGl6aW5nIGluIGNvbmp1bmN0aW9uIHdpdG ggRlBDIGd1aWRlbGluZXMsIHNv IG90aGVycwo+IGNhbiBzZWUgaG93IHRvIGRvIGl0IGFuZCBldm FuZ2VsaXplIHRoZSB3b3JrIHVw c3RyZWFtIGFuZCBwb3NzaWJseSBldmVuCj4gaGVscC4gVGVhY2 hpbmcgdG8gZmlzaCBpbnN0ZWFk IG9mIGdpdmluZyBmaXNoLCBtb3JlIG9yIGxlc3MuCgpJIHdpbG wgYmUgZG9pbmcgdGhlIGNsZWFu dXAgcHJvY2VzcyBvbmUgdGltZS4gQWZ0ZXIgdGhhdCBteSBzeX N0ZW1kIAppbnZvbHZlbWVudCB3 aWxsIGJlIG1vcmUgb3IgbGVzcyBjb25jbHVkZWQgYW5kIEkgd2 lsbCBiZSByZXR1cm5pbmcgdG8g UUEgCmFuZCBjb250aW51ZSB0aGUgd29yayBJIHdhcyBkb2luZy B0aGVyZSBhbmQgaGFkIGJlZW4g ZG9pbmcgdGhlcmUgZm9yIApzZXZlcmFsIHJlbGVhc2UgY3ljbG VzIGJlZm9yZSBJIHdhcyBhc2tl ZCB0byBoYW5kbGUgdGhlIG1pZ3JhdGlvbi4KCj4gUmVhbGx5LC B0aGF0J3MgYWxsIHRoYXQgbmVl ZHMgZG9uZSBoZXJlIC0gZ2V0IGEgc3RhbmRhcmQgZm9yIHdoYX QgYQo+IGNsZWFuZWQgdXAgdW5p dCBzaG91bGQgbG9vayBsaWtlLCB3aGF0IGl0IHNob3VsZCBpbm NsdWRlLCBldGMuLCBhbmQKPiBn ZXQgdGhhdCB0aHJvdWdoIEZQQy4gRXNzZW50aWFsbHksIGEgbG lzdCBvZiB3aGF0IHNob3VsZCBi ZSBjaGFuZ2VkCj4gaW46Cj4gCWh0dHBzOi8vZmVkb3JhcHJvam VjdC5vcmcvd2lraS9QYWNrYWdp bmc6U3lzdGVtZAo+Cj4gSXQncyBub3QgbGlrZSB0aGUgZmVhdH VyZSB3YXMgcmVqZWN0ZWQgb3V0 IG9mIGhhbmQ7IGl0IHdhcyBqdXN0Cj4gcmVkaXJlY3RlZC4KCj 8KClRoZXJlIGlzIG5vdGhpbmcg b24gdGhhdCBwYWdlIHRoYXQgaXMgbWVudGlvbmVkIG9uIHRoYX QgcGFnZSB0aGF0IHdvdWxkIApn ZXQgYWZmZWN0ZWQgYnkgdGhlIGNsZWFudXAgcHJvY2VzcyB0aH VzIG5vdGhpbmcgaXMgc3ViamVj dGVkIHRvIGJlIApjaGFuZ2VkIHRoZXJlLgoKPj4gVGhlbiB5b3 UgZ3V5cyBzdGFydGVkIHRvIGFj dCBsaWtlIGtpZHMgaW4gY2FuZHkgc3RvcmUgYW5kIGNoZXJyeQ o+PiBwaWNrIHN0dWZmIGZyb20g dGhlIGZlYXR1cmUgcmVxdWVzdHMgd2VsbCBoZXJlJ3MgYSBuZX dzIGZsYXNoIHRoYXQKPj4gd29u dCB3b3JrIHdpdGggbWUuIFdoZW4gSSBzdWJtaXQgZmVhdHVyZX MgSSB3aWxsIHN1Ym1pdCB0aGVt IGFzIGlzLAo+PiB3b3JrIG9uIHRoZW0gYXMgaXMgYW5kIGZpbm lzaCB0aGVtIG15c2VsZiBhcyBp cwo+IFdoaWxlIEkgY29tbWVuZCB5b3VyIGRlc2lyZSBvbiBkb2 luZyB0aGUgd29yayBvbiBmZWF0 dXJlcyB5b3Ugc3VibWl0Cj4geW91cnNlbGYsIEZlZG9yYSAqSV MqIGEgY29tbXVuaXR5IHByb2pl Y3Q7IGl0J3MgYWJvdXQgY29sbGFib3JhdGlvbiwKPiBub3QgYS Bjb2xsZWN0aW9uIG9mIGluZGl2 aWR1YWxzIGFsbCBnb2luZyBpbiBkaWZmZXJlbnQgZGlyZWN0aW 9ucy4KPiBXZSBkbyBoYXZlIHBv bGljaWVzIGFuZCBwcm9jZWR1cmVzIGluIEZlZG9yYSBmb3IgYS ByZWFzb24uIFlvdSBtYXkgbm90 Cj4gbGlrZSB0aGVtLiBIZWNrLCBJIGRvbid0IGxpa2UgdGhlbS Bzb21lIG9mIHRoZSB0aW1lIGVp dGhlci4gQW5kIHNvbWUgb2YKPiB0aGVtIGNhbiB1c2UgZml4aW 5nIC0gd2UgaGF2ZSBvbmdvaW5n IHdvcmsgb24gZml4aW5nIHRoZSBmZWF0dXJlIHByb2Nlc3MKPi BhcyB3ZSBzcGVhay4KClllcyBJ IHNhdyB0aGF0IGVmZm9ydCB3aGljaCBzdGlsbCBkb2VzIG5vdC BzZWVtIHRvIG1ha2UgYSByb29t IGZvciAKZmVhdHVyZXMgdGhhdCBzcGFuIG92ZXIgc2V2ZXJhbC ByZWxlYXNlIGN5Y2xlcy4KCj4g SG93ZXZlciwgd2hlbiB5b3Ugc2F5IHlvdSdsbCBvbmx5IGRvIH RoZSBmZWF0dXJlcyB5b3VyIHdh eSwgeW91cnNlbGYsCj4gYW5kIGFyZW4ndCB3aWxsaW5nIHRvIG FjY2VwdCBhbHRlcm5hdGl2ZXMs IG9yIHdvcmsgd2l0aCB0aGUgY29tbXVuaXR5J3MKPiBlbGVjdG VkIHJlcHJlc2VudGF0aXZlcyBv biB0aGlzICh0aGF0J3MgaG93IHlvdXIgc3RhdGVtZW50cyByZW FkIHRvIG1lKSwKCkFuZCBteSB3 b3JrIHByb3ZlcyBvdGhlcndpc2UuLi4KCj4gaXQgc2VlbXMgdG 8gdGhlIG91dHNpZGUgd29ybGQg bGlrZSB5b3UgZG9uJ3Qgc2hhcmUgdGhlIHNhbWUgc2V0IG9mIH ZhbHVlcwo+IHRoZXJlLiBJZiB0 aGF0J3MgdGhlIGNhc2UsCgpJIHBlcnNvbmFsbHkgd291bGQgY2 hvb3NlIGZld2VyIGJldHRlciBt YWludGFpbmVkIGNvbXBvbmVudHMgaW4gdGhlIApkaXN0cmlidX Rpb24gdGhlbiBtYW55IHBvb3Js eSBtYWludGFpbmVkIG9yIG5vdCBtYWludGFpbmVkIGF0IGFsbC BhbmQgCnBlcnNvbmFsbHkgSSB3 YW50IGZlYXR1cmUgdG8gYmUgYWN0dWFsbHkgMTAwJSBkb25lIG luc3RlYWQgb2YganVzdCBiZSAK Y2xhaW1lZCB0byBiZSBkb25lIHRodXMgaWYgdGhlICJvdXRzaW RlIHdvcmxkIiB3YW50cyBhbmQg YWNjZXB0cyBoYWxmIAppbXBsZW1lbnRlZCB0aGluZ3MgaW4gdG hlIHJlbGVhc2UgdGhlbiBzdXJl IHdlIGRvIG5vdCBzaGFyZSB0aGUgc2FtZSAKdmFsdWUuIEhlY2 sgd2hlbiB3ZSBpbiBRQSBtaXNz IGEgc2VyaW91cyBidWcgdGhhdCBhZmZlY3RzIGxhcmdlIHVzZX IgCmJhc2UgSSB0YWtlIHRoYXQg YXMgYSBwZXJzb25hbCBmYWlsdXJlIG9uIG15IGJlaGFsZiBhcy BjcmF6eSBhcyB0aGF0IGlzLCAK aW4gdGhlIGVuZCB0aGF0J3MganVzdCBob3cgSSBhbS4KCkpCRw oKLS0gCmRldmVsIG1haWxpbmcg bGlzdApkZXZlbEBsaXN0cy5mZWRvcmFwcm9qZWN0Lm9yZwpodH RwczovL2FkbWluLmZlZG9yYXBy b2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vZGV2ZWw= |
| All times are GMT. The time now is 03:22 PM. |
VBulletin, Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.