Steven Whitehouse wrote:
--- a/fs/gfs2/ops_inode.c
+++ b/fs/gfs2/ops_inode.c
@@ -113,8 +113,18 @@ static struct dentry *gfs2_lookup(struct inode *dir, 
struct dentry *dentry,
        if (inode && IS_ERR(inode))
                return ERR_PTR(PTR_ERR(inode));
- if (inode)
+       if (inode) {
+               struct gfs2_glock *gl = GFS2_I(inode)->i_gl;
+               struct gfs2_holder gh;
+               int error;
+               error = gfs2_glock_nq_init(gl, LM_ST_SHARED, LM_FLAG_ANY, &gh);

ok, so this shared glock is now added *back*. As I recall, its removal about one year ago had caused great grief in NFS portion of logic - had to do a tedious work to make NFS work due to this change. Now, the logic is reverted - has performance impact been measured (since it is a disk read) ?

-- Wendy
+               if (error) {
+                       iput(inode);
+                       return ERR_PTR(error);
+               }
+               gfs2_glock_dq_uninit(&gh);
                return d_splice_alias(inode, dentry);
+       }
        d_add(dentry, inode);
return NULL;



Reply via email to