Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[eval] ABD2: linear/scatter dual typed buffer for ARC (rebase master January 23nd 2016) + additional #4266

Conversation

kernelOfTruth
Copy link
Contributor

This is a rebase of ABD2 (abd-next) of January 15th (zfs master state of January 13th) to zfs master state of January 23rd,

mostly to test how ABD2 interacts with the illumos remove patches (#4259),

if all goes well, this shall become my new daily driver 🌟

tuxoko and others added 6 commits January 24, 2016 11:33
Reintroduce a slightly adapted version of the Illumos logic for
synchronous unlinks.  The basic idea here is that only files
smaller than a ~1000 blocks should be deleted synchronously.
Unlinking larger files should be handled asynchronously to
minimize impact to the caller.

To accomplish this iput() which is responsible for calling
zfs_znode_delete() on Linux is only called in the delete_now
path.  Otherwise zfs_async_ipt() is used which allows the
last reference to be dropped by a taskq thread effectively
making the removing asynchronous.

Porting notes:
- The threshold defining a large file was reduced from the
  upstream DMU_MAX_DELETEBLKCNT (20480) blocks to a smaller
  much smaller 1024 blocks.  This was done because for Linux
  we need to add the object to the unlinked set regardless
  so there's a reduced benefit to handling it synchronously.
- All occurrences of zfsvfs changes to zsb.

Ported-by: KernelOfTruth kerneloftruth@gmail.com
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
6334 Cannot unlink files when over quota
Reviewed by: Matthew Ahrens <mahrens@delphix.com>
Reviewed by: Toomas Soome <tsoome@me.com>
Approved by: Dan McDonald <danmcd@omniti.com>

References:
  https://www.illumos.org/issues/6334
  illumos/illumos-gate@6575bca

Ported-by: Brian Behlendorf <behlendorf1@llnl.gov>
Adjusting arc_c directly is racy because it can happen in the context
of multiple threads.  It should always be >= 2 * maxblocksize.  Set it
to a known valid value rather than adjusting it directly.

Reverts: 935434e
Fixes: openzfs#3904
Fixes: openzfs#4161
In addition to a simpler structure, protect against underflow in the
calculation of the new arc_c value.
When using large blocks like 1M, this ASSERT would go off.

Signed-off-by: Chunwei Chen <david.chen@osnexus.com>
@kernelOfTruth kernelOfTruth changed the title [buildbot, eval] ABD2: linear/scatter dual typed buffer for ARC (rebase master January 23nd 2016) + additional [testing] ABD2: linear/scatter dual typed buffer for ARC (rebase master January 23nd 2016) + additional Jan 24, 2016
@kernelOfTruth kernelOfTruth changed the title [testing] ABD2: linear/scatter dual typed buffer for ARC (rebase master January 23nd 2016) + additional [eval] ABD2: linear/scatter dual typed buffer for ARC (rebase master January 23nd 2016) + additional Jan 26, 2016
@kernelOfTruth
Copy link
Contributor Author

closing, will be superseded by new abd_next rebase ...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants