Maxim Patlasov <mpatla...@virtuozzo.com> writes:
> Next patch will need em->block_start even for unwritten extents. Instead of > using em->block_start == ~0, let's introduce new explicit field of 'em'. > > https://jira.sw.ru/browse/PSBM-22381 Ack-by:Dmitry Monakhov <dmonak...@parallels.com> > > Signed-off-by: Maxim Patlasov <mpatla...@virtuozzo.com> > --- > drivers/block/ploop/io_direct.c | 10 +++++----- > drivers/block/ploop/io_direct_map.c | 6 +++--- > drivers/block/ploop/io_direct_map.h | 4 ++-- > 3 files changed, 10 insertions(+), 10 deletions(-) > > diff --git a/drivers/block/ploop/io_direct.c b/drivers/block/ploop/io_direct.c > index 3678d5b..514af4b 100644 > --- a/drivers/block/ploop/io_direct.c > +++ b/drivers/block/ploop/io_direct.c > @@ -135,7 +135,7 @@ dio_submit(struct ploop_io *io, struct ploop_request * > preq, > if (IS_ERR(em)) > goto out_em_err; > > - if (write && em->block_start == BLOCK_UNINIT) { > + if (write && em->uninit) { > sector_t end = (sector_t)(iblk + 1) << preq->plo->cluster_log; > sec = (sector_t)iblk << preq->plo->cluster_log; > > @@ -147,7 +147,7 @@ dio_submit(struct ploop_io *io, struct ploop_request * > preq, > em = extent_lookup_create(io, sec, end - sec); > if (IS_ERR(em)) > goto out_em_err; > - if (em->block_start != BLOCK_UNINIT) > + if (!em->uninit) > goto write_unint_fail; > > sec = em->end; > @@ -191,13 +191,13 @@ dio_submit(struct ploop_io *io, struct ploop_request * > preq, > em = extent_lookup_create(io, sec, size); > if (IS_ERR(em)) > goto out_em_err; > - if (write && em->block_start == BLOCK_UNINIT) > + if (write && em->uninit) > goto write_unint_fail; > } > > nsec = dio_isec_to_phys(em, sec); > > - if (em->block_start != BLOCK_UNINIT && > + if (!em->uninit && > (bio == NULL || > bio->bi_sector + (bio->bi_size>>9) != nsec)) { > > @@ -214,7 +214,7 @@ flush_bio: > if (copy > ((em->end - sec) << 9)) > copy = (em->end - sec) << 9; > > - if (em->block_start == BLOCK_UNINIT) { > + if (em->uninit) { > void *kaddr = kmap_atomic(bv->bv_page); > memset(kaddr + bv->bv_offset + bw.bv_off, 0, copy); > kunmap_atomic(kaddr); > diff --git a/drivers/block/ploop/io_direct_map.c > b/drivers/block/ploop/io_direct_map.c > index 1146133..3f9a1ae 100644 > --- a/drivers/block/ploop/io_direct_map.c > +++ b/drivers/block/ploop/io_direct_map.c > @@ -257,6 +257,7 @@ struct extent_map *ploop_alloc_extent_map(gfp_t mask) > atomic_set(&em->refs, 1); > INIT_LIST_HEAD(&em->lru_link); > atomic_inc(&ploop_extent_maps_count); > + em->uninit = false; > } > return em; > } > @@ -720,12 +721,11 @@ again: > > em->start = fi_extent.fe_logical >> 9; > em->end = (fi_extent.fe_logical + fi_extent.fe_length) >> 9; > + em->block_start = fi_extent.fe_physical >> 9; > > if (fi_extent.fe_flags & FIEMAP_EXTENT_UNWRITTEN) { > - em->block_start = BLOCK_UNINIT; > + em->uninit = true; > } else { > - em->block_start = fi_extent.fe_physical >> 9; > - > ret = add_extent_mapping(tree, em); > if (ret == -EEXIST) { > ploop_extent_put(em); > diff --git a/drivers/block/ploop/io_direct_map.h > b/drivers/block/ploop/io_direct_map.h > index 4be1c5c..a83d1b3 100644 > --- a/drivers/block/ploop/io_direct_map.h > +++ b/drivers/block/ploop/io_direct_map.h > @@ -3,8 +3,6 @@ > > #include <linux/rbtree.h> > > -#define BLOCK_UNINIT ~((sector_t) 0) > - > struct extent_map_tree > { > struct rb_root map; > @@ -28,6 +26,8 @@ struct extent_map > sector_t block_start; > > atomic_t refs; > + > + bool uninit; > }; > > extern int max_extent_map_pages;
signature.asc
Description: PGP signature
_______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel