diff options
-rw-r--r-- | fs/orangefs/dcache.c | 5 | ||||
-rw-r--r-- | fs/orangefs/namei.c | 8 | ||||
-rw-r--r-- | fs/orangefs/orangefs-kernel.h | 7 |
3 files changed, 14 insertions, 6 deletions
diff --git a/fs/orangefs/dcache.c b/fs/orangefs/dcache.c index 1e8fe844e69f..5355efba4bc8 100644 --- a/fs/orangefs/dcache.c +++ b/fs/orangefs/dcache.c | |||
@@ -73,7 +73,7 @@ static int orangefs_revalidate_lookup(struct dentry *dentry) | |||
73 | } | 73 | } |
74 | } | 74 | } |
75 | 75 | ||
76 | dentry->d_time = jiffies + orangefs_dcache_timeout_msecs*HZ/1000; | 76 | orangefs_set_timeout(dentry); |
77 | ret = 1; | 77 | ret = 1; |
78 | out_release_op: | 78 | out_release_op: |
79 | op_release(new_op); | 79 | op_release(new_op); |
@@ -94,8 +94,9 @@ out_drop: | |||
94 | static int orangefs_d_revalidate(struct dentry *dentry, unsigned int flags) | 94 | static int orangefs_d_revalidate(struct dentry *dentry, unsigned int flags) |
95 | { | 95 | { |
96 | int ret; | 96 | int ret; |
97 | unsigned long time = (unsigned long) dentry->d_fsdata; | ||
97 | 98 | ||
98 | if (time_before(jiffies, dentry->d_time)) | 99 | if (time_before(jiffies, time)) |
99 | return 1; | 100 | return 1; |
100 | 101 | ||
101 | if (flags & LOOKUP_RCU) | 102 | if (flags & LOOKUP_RCU) |
diff --git a/fs/orangefs/namei.c b/fs/orangefs/namei.c index d15d3d2dba62..a290ff6ec756 100644 --- a/fs/orangefs/namei.c +++ b/fs/orangefs/namei.c | |||
@@ -72,7 +72,7 @@ static int orangefs_create(struct inode *dir, | |||
72 | 72 | ||
73 | d_instantiate(dentry, inode); | 73 | d_instantiate(dentry, inode); |
74 | unlock_new_inode(inode); | 74 | unlock_new_inode(inode); |
75 | dentry->d_time = jiffies + orangefs_dcache_timeout_msecs*HZ/1000; | 75 | orangefs_set_timeout(dentry); |
76 | ORANGEFS_I(inode)->getattr_time = jiffies - 1; | 76 | ORANGEFS_I(inode)->getattr_time = jiffies - 1; |
77 | 77 | ||
78 | gossip_debug(GOSSIP_NAME_DEBUG, | 78 | gossip_debug(GOSSIP_NAME_DEBUG, |
@@ -183,7 +183,7 @@ static struct dentry *orangefs_lookup(struct inode *dir, struct dentry *dentry, | |||
183 | goto out; | 183 | goto out; |
184 | } | 184 | } |
185 | 185 | ||
186 | dentry->d_time = jiffies + orangefs_dcache_timeout_msecs*HZ/1000; | 186 | orangefs_set_timeout(dentry); |
187 | 187 | ||
188 | inode = orangefs_iget(dir->i_sb, &new_op->downcall.resp.lookup.refn); | 188 | inode = orangefs_iget(dir->i_sb, &new_op->downcall.resp.lookup.refn); |
189 | if (IS_ERR(inode)) { | 189 | if (IS_ERR(inode)) { |
@@ -322,7 +322,7 @@ static int orangefs_symlink(struct inode *dir, | |||
322 | 322 | ||
323 | d_instantiate(dentry, inode); | 323 | d_instantiate(dentry, inode); |
324 | unlock_new_inode(inode); | 324 | unlock_new_inode(inode); |
325 | dentry->d_time = jiffies + orangefs_dcache_timeout_msecs*HZ/1000; | 325 | orangefs_set_timeout(dentry); |
326 | ORANGEFS_I(inode)->getattr_time = jiffies - 1; | 326 | ORANGEFS_I(inode)->getattr_time = jiffies - 1; |
327 | 327 | ||
328 | gossip_debug(GOSSIP_NAME_DEBUG, | 328 | gossip_debug(GOSSIP_NAME_DEBUG, |
@@ -386,7 +386,7 @@ static int orangefs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode | |||
386 | 386 | ||
387 | d_instantiate(dentry, inode); | 387 | d_instantiate(dentry, inode); |
388 | unlock_new_inode(inode); | 388 | unlock_new_inode(inode); |
389 | dentry->d_time = jiffies + orangefs_dcache_timeout_msecs*HZ/1000; | 389 | orangefs_set_timeout(dentry); |
390 | ORANGEFS_I(inode)->getattr_time = jiffies - 1; | 390 | ORANGEFS_I(inode)->getattr_time = jiffies - 1; |
391 | 391 | ||
392 | gossip_debug(GOSSIP_NAME_DEBUG, | 392 | gossip_debug(GOSSIP_NAME_DEBUG, |
diff --git a/fs/orangefs/orangefs-kernel.h b/fs/orangefs/orangefs-kernel.h index 0a82048f3aaf..3bf803d732c5 100644 --- a/fs/orangefs/orangefs-kernel.h +++ b/fs/orangefs/orangefs-kernel.h | |||
@@ -580,4 +580,11 @@ static inline void orangefs_i_size_write(struct inode *inode, loff_t i_size) | |||
580 | #endif | 580 | #endif |
581 | } | 581 | } |
582 | 582 | ||
583 | static inline void orangefs_set_timeout(struct dentry *dentry) | ||
584 | { | ||
585 | unsigned long time = jiffies + orangefs_dcache_timeout_msecs*HZ/1000; | ||
586 | |||
587 | dentry->d_fsdata = (void *) time; | ||
588 | } | ||
589 | |||
583 | #endif /* __ORANGEFSKERNEL_H */ | 590 | #endif /* __ORANGEFSKERNEL_H */ |