aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/dir.c
diff options
context:
space:
mode:
authorMiklos Szeredi <miklos@szeredi.hu>2006-10-13 09:54:24 +0000
committerMiklos Szeredi <miklos@szeredi.hu>2006-10-13 09:54:24 +0000
commitd6f8db71b84a139c1d74d6d0c654659951219c38 (patch)
tree58b30d5e92983a13bd4f294aaf6a0965733b7554 /kernel/dir.c
parent856e5cb2e11d39e5051d1bcf0bd872aadfb777ae (diff)
downloadlibfuse-d6f8db71b84a139c1d74d6d0c654659951219c38.tar.gz
kernel: Fix compilation on patched 2.6.18 (fc6) and 2.6.9
Diffstat (limited to 'kernel/dir.c')
-rw-r--r--kernel/dir.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/kernel/dir.c b/kernel/dir.c
index c2f7d4e..3f12e19 100644
--- a/kernel/dir.c
+++ b/kernel/dir.c
@@ -529,7 +529,7 @@ static int fuse_unlink(struct inode *dir, struct dentry *entry)
/* Set nlink to zero so the inode can be cleared, if
the inode does have more links this will be
discovered at the next lookup/getattr */
- inode->i_nlink = 0;
+ clear_nlink(inode);
fuse_invalidate_attr(inode);
fuse_invalidate_attr(dir);
fuse_invalidate_entry_cache(entry);
@@ -555,7 +555,7 @@ static int fuse_rmdir(struct inode *dir, struct dentry *entry)
err = req->out.h.error;
fuse_put_request(fc, req);
if (!err) {
- entry->d_inode->i_nlink = 0;
+ clear_nlink(entry->d_inode);
fuse_invalidate_attr(dir);
fuse_invalidate_entry_cache(entry);
} else if (err == -EINTR)
@@ -815,7 +815,10 @@ static int fuse_permission(struct inode *inode, int mask, struct nameidata *nd)
if ((mask & MAY_EXEC) && !S_ISDIR(mode) && !(mode & S_IXUGO))
return -EACCES;
- if (nd && (nd->flags & LOOKUP_ACCESS))
+#ifndef LOOKUP_CHDIR
+#define LOOKUP_CHDIR 0
+#endif
+ if (nd && (nd->flags & (LOOKUP_ACCESS | LOOKUP_CHDIR)))
return fuse_access(inode, mask);
return 0;
}
@@ -1078,6 +1081,8 @@ static int fuse_getattr(struct vfsmount *mnt, struct dentry *entry,
struct inode *inode = entry->d_inode;
int err = fuse_revalidate(entry);
if (!err)
+ /* FIXME: may want specialized function because of
+ st_blksize on block devices on 2.6.19+ */
generic_fillattr(inode, stat);
return err;