Bug 1450080
Summary: | [Negative Lookup]: negative lookup features doesn't seem to work on restart of volume | |||
---|---|---|---|---|
Product: | [Red Hat Storage] Red Hat Gluster Storage | Reporter: | Nag Pavan Chilakam <nchilaka> | |
Component: | samba | Assignee: | Poornima G <pgurusid> | |
Status: | CLOSED ERRATA | QA Contact: | Vivek Das <vdas> | |
Severity: | high | Docs Contact: | ||
Priority: | unspecified | |||
Version: | rhgs-3.3 | CC: | amukherj, rhinduja, rhs-smb | |
Target Milestone: | --- | |||
Target Release: | RHGS 3.3.0 | |||
Hardware: | Unspecified | |||
OS: | Unspecified | |||
Whiteboard: | ||||
Fixed In Version: | glusterfs-3.8.4-28 | Doc Type: | If docs needed, set a value | |
Doc Text: | Story Points: | --- | ||
Clone Of: | ||||
: | 1458539 (view as bug list) | Environment: | ||
Last Closed: | 2017-09-21 04:41:45 UTC | Type: | Bug | |
Regression: | --- | Mount Type: | --- | |
Documentation: | --- | CRM: | ||
Verified Versions: | Category: | --- | ||
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | ||
Cloudforms Team: | --- | Target Upstream Version: | ||
Embargoed: | ||||
Bug Depends On: | ||||
Bug Blocks: | 1417151, 1458539, 1460899 |
Description
Nag Pavan Chilakam
2017-05-11 13:51:26 UTC
RCA: The cache is stored in the directories inode_ctx, and the time of cache is set to the time inode_ctx was created, and is not updated as and when new cache entries are added to the inode_ctx(as it is cumbersome to have timeout for each entry, and updating global time will result in stale cache of older entries). Consider a sequence of operation as below: At T1, lookup dir1/f1 (f1 doesn't exist) dir1 inode_ctx->cache_time = T1 cache = "f1" lookup dir f2 (f2 doesn't exist) dir1 inode_ctx->cache_time remains unchanged cache = "f1", "f2" Child_DOWN / all /some of the bricks down at T2 thus anything cached before T2 is considered invalid but is not cleared from memory. At T3, lookup dir1/f1 dir1 inode_ctx->cache_time(T1) < T2, hence do not serve from cache. lookup is sent to the brick. At T4, lookup dir1/f3 dir1 inode_ctx->cache_time(T1) < T2, hence do not serve from cache. lookup is sent to the brick. Thus the cache of dir1 is invalid until T1+10 min(cache timeout), and also for the 10 min no new cache is added to the dir1. Consequence: After any brick down/up, the cache of all the existing directories is invalid and cannot be corrected for max 10 min. Thus after brick down/up the nl-cache doesn't work for the directories that already had the cache, for the max of 10 min. Solution: If the inoce_ctx->cachetime < brick_down time, then delete the existing cache and start populating fresh cache. Upstream patch : https://review.gluster.org/17453 (In reply to Atin Mukherjee from comment #5) > Upstream patch : https://review.gluster.org/17453 One more upstream patch https://review.gluster.org/#/c/17450/ is required here. downstream patches: https://code.engineering.redhat.com/gerrit/#/c/108886/ https://code.engineering.redhat.com/gerrit/#/c/108892/ Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHBA-2017:2774 |