[GRASS-dev] Segment library zero filling

Vaclav Petras wenzeslaus at gmail.com
Mon May 20 10:18:30 PDT 2019


On Mon, May 20, 2019 at 11:57 AM Markus Metz <markus.metz.giswork at gmail.com>
wrote:

>
>
> On Mon, May 20, 2019 at 5:39 PM Vaclav Petras <wenzeslaus at gmail.com>
> wrote:
> >
> > Hi MarkusM and all,
> >
> > I'm trying to understand if the Segment_open() [1] function fills with
> zeros or not. I don't think it does since it is calling G_malloc (malloc)
> or Segment_format_nofill(). However, it is not completely clear to me what
> is supposed to be doing because documentation still says it calls
> Segment_format() and I don't understand context of the related commit [2,
> 3] and the usage of lseek and USE_LSEEK are not clear to me from format.c
> [4].
>
> Segment_open() uses Segment_format_nofill() [1], if it can not use the
> all-in-memory cache. The documentation has not been updated accordingly
> (yet).
>

Thank you. Just be to be sure: Now, if you want to ensure that it is
zero-filled across platform, you need to do it yourself using
Segment_put(), right? (Assuming you want to use Segment_open().) The exact
role of lseek() here is still unclear to me (the hole and \0 bytes).

Would Segment_open_zero_fill() make sense, i.e. do you know if
Segment_fill() faster then Segment_put()?


> The advantage of no fill, only lseek, is that it is faster, the
> disadvantage is that any "no space left on device" error will be
> encountered only later on, and you always need to check the return code of
> Segment_put().
>

Makes sense. I'll document that as well.


>
> HTH,
>
> Markus M
>
> [1] https://github.com/OSGeo/grass/blob/master/lib/segment/open.c#L89
>
> >
> > Markus, can you please clarify that for me? I will then update the
> documentation with whatever is needed.
> >
> > Thanks,
> > Vaclav
> >
> > [1]
> https://grass.osgeo.org/programming7/segment_2open_8c.html#ae24d2e794c66c0512b67d7cea8b2ba9a
> > [2]
> https://github.com/OSGeo/grass/commit/7a0d8d749537acd6d5c4baea11dbb6167fdef916
> > [3] https://trac.osgeo.org/grass/changeset/73268
> > [4] https://github.com/OSGeo/grass/blob/master/lib/segment/format.c
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/grass-dev/attachments/20190520/035916a6/attachment-0001.html>


More information about the grass-dev mailing list