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

inode: don't take lock on whole table during ref/unref #21

Draft
wants to merge 1 commit into
base: gmaster
Choose a base branch
from

Conversation

amarts
Copy link
Owner

@amarts amarts commented Aug 29, 2020

inode_ref/inode_unref are very common operation, and taking
a table->lock makes no complete sense. By making 'ref' as atomic,
we can make most part of the inode_ref/inode_unref as lock-free.

also as a side effect, removed the check for root_inode from
ref/unref functions, thus making them even leaner.

also work on making critical section smaller

  • do all the 'static' tasks outside of locked region.
  • In this patch, considering hash_dentry() and hash_gfid().
  • Also remove extra __dentry_hash exported in libglusterfs.sym

Credits: Mohit Agarwal

updates: #1000
Change-Id: I78f0d77f28ed48cdd0dc7c3489fc8ca32c36e263
Signed-off-by: Amar Tumballi amar@kadalu.io

inode_ref/inode_unref are very common operation, and taking
a table->lock makes no complete sense. By making 'ref' as atomic,
we can make most part of the inode_ref/inode_unref as lock-free.

also as a side effect, removed the check for root_inode from
ref/unref functions, thus making them even leaner.

also work on making critical section smaller

 * do all the 'static' tasks outside of locked region.
 * In this patch, considering hash_dentry() and hash_gfid().
 * Also remove extra __dentry_hash exported in libglusterfs.sym

Credits: Mohit Agarwal

updates: #1000
Change-Id: I78f0d77f28ed48cdd0dc7c3489fc8ca32c36e263
Signed-off-by: Amar Tumballi <amar@kadalu.io>
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.

1 participant