On Sat, Dec 19, 2015 at 6:55 AM, zettamail <[email protected]> wrote:

> Hi, Matt,
>
> thanks for the reply. I think I was not quite clear. The code segment in
> question is
>
> ...
>
> } else {
> int i;
> ASSERT(dn->dn_next_nblkptr[txgoff] < dnp->dn_nblkptr);
> / the blkptrs we are losing better be unallocated */
> for (i = dn->dn_next_nblkptr[txgoff];
> i < dnp->dn_nblkptr; i++)
> ASSERT(BP_IS_HOLE(&dnp->dn_blkptr[i]));
>
> ...
>
>
> If I am reading this correctly, this means that some block pointers in the
> dnode became holes during the txg under sync.


No, those BP's could have always been holes. we are "losing" them in the
sense that dn_nblkptr is changing.


> Which means that those pointers were non-holes before the txg, and
> therefore, could not have been "holes that have always been there". That is
> why I believe they should be verified for the proper birth epoch setting
> (checking the hole_birth enabled txg against the txg under sync and setting
> the epoch accordingly).
>
>
> What do you think ?
>
>
> P.S. There is also somewhat obscure issue of dnode reallocation when it is
> apparently hard to say if the holes were "original" or not. Can you comment
> on this case if applicable here ?
>
> ________________________________
> From: Matthew Ahrens <[email protected]>
> Sent: Friday, December 18, 2015 1:37 PM
> To: openzfs/openzfs
> Subject: Re: [OpenZFS Developer] [openzfs] 6513 partially filled holes
> lose birth time (#46)
>
>
> @bprotopopov<https://github.com/bprotopopov> re: dnode_sync(), I'm not
> sure why we would want to assert that the birth time is filled in (and it
> might not be, as @pcd1193182<https://github.com/pcd1193182> described).
> We might want to assert that the birth time is not filled in (and that the
> bp's being removed are entirely zeroed out). But I don't think that would
> be true either. We might want to make it true by explicitly bzero-ing the
> no-longer-bp's. Otherwise it might be possible for the realloc'd object to
> have garbage (the old hole BP's) in its bonus buffer. (Though in practice I
> think we always overwrite the bonus buffer when reallocating.)
>
> [https://avatars3.githubusercontent.com/u/2488505?v=3&s=400]<
> https://github.com/bprotopopov>
>
> bprotopopov (Boris Protopopov) · GitHub<https://github.com/bprotopopov>
> github.com
> bprotopopov has 5 repositories written in Shell, C, and C++. Follow their
> code on GitHub.
>
>
>
> -
> Reply to this email directly or view it on GitHub<
> https://github.com/openzfs/openzfs/pull/46#issuecomment-165865550>.
>
> —
> Reply to this email directly or view it on GitHub
> <https://github.com/openzfs/openzfs/pull/46#issuecomment-165992918>.
>


---
Reply to this email directly or view it on GitHub:
https://github.com/openzfs/openzfs/pull/46#issuecomment-166011778
_______________________________________________
developer mailing list
[email protected]
http://lists.open-zfs.org/mailman/listinfo/developer

Reply via email to