> On May 5, 2015, 10:44 p.m., Will Andrews wrote:
> > It looks like this works by dirtying, in the user context (via 
> > dbuf_free_range), the L1 dbufs for the affected range, which means that all 
> > such dbufs and all its parents will be kept in ARC through the end of the 
> > sync?  Could that possibly delay transaction groups (via serialized dbuf 
> > reads), or am I understanding right that is that mitigated by the fact that 
> > dmu_tx_hold_free prefetches them?  So all affected dbufs should already be 
> > DB_CACHED?  Presuming your ARC is large enough?
> 
> Matthew Ahrens wrote:
>     "It looks like this works by dirtying ..." - Yes.
>     
>     "mitigated by the fact that dmu_tx_hold_free prefetches ..." - Yes on all 
> counts.  It is probably still cached from the dmu_tx_hold_free.  If it is 
> not, then we are doing the read with the tx assigned, preventing this txg 
> from quiescing (this is the same as any operation e.g. zfs_write()).  This is 
> still far preferable to doing the reads in syncing context.

I'm not sure there is much difference between holding up a txg in syncing 
context vs. in open context.  zfs_write et al generally have a small upper 
bound on the amount of changes they need committed in a tx.

Wouldn't it be better to do something like one of these:
- Dirty the dbufs at the same time that they are prefetched, so they can't be 
evicted even if the system is churning its ARC
- Chunk free range deletion in a manner similar to async zfs destroy (i.e. via 
a special bplist object, if not the same one)


- Will


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.csiden.org/r/218/#review683
-----------------------------------------------------------


On May 5, 2015, 9:10 p.m., Matthew Ahrens wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.csiden.org/r/218/
> -----------------------------------------------------------
> 
> (Updated May 5, 2015, 9:10 p.m.)
> 
> 
> Review request for OpenZFS Developer Mailing List.
> 
> 
> Bugs: 5911
>     https://www.illumos.org/projects/illumos-gate//issues/5911
> 
> 
> Repository: illumos-gate
> 
> 
> Description
> -------
> 
> 5911 ZFS "hangs" while deleting file
> 
> Original author: Matthew Ahrens
> 
> 
> Diffs
> -----
> 
>   usr/src/uts/common/fs/zfs/sys/dbuf.h 
> c542c8aec875a20374d80d2f61bed856515c9c88 
>   usr/src/uts/common/fs/zfs/dnode_sync.c 
> bb18718bed73974556f03abec01e3bf31cb06a9d 
>   usr/src/uts/common/fs/zfs/dnode.c 12d8db76faed60cc9ddf80877b5f91090214da44 
>   usr/src/uts/common/fs/zfs/dmu_tx.c 56ce2f0c279f8ac445ae4627713ea121dc378e0b 
>   usr/src/uts/common/fs/zfs/dbuf.c 465dfd08b2302493b38e561432bf320c05d1f9f6 
> 
> Diff: https://reviews.csiden.org/r/218/diff/
> 
> 
> Testing
> -------
> 
> ztest
> zfs test suite
> working on manual testing
> 
> http://jenkins.delphix.com/job/zfs-precommit/2227/
> 
> 
> Thanks,
> 
> Matthew Ahrens
> 
>

_______________________________________________
developer mailing list
[email protected]
http://lists.open-zfs.org/mailman/listinfo/developer

Reply via email to