[Cluster-devel] cluster/gfs-kernel/src/gfs ops_export.c ops_ex ...
fabbione at sourceware.org
fabbione at sourceware.org
Mon Jan 28 06:29:26 UTC 2008
CVSROOT: /cvs/cluster
Module name: cluster
Changes by: fabbione at sourceware.org 2008-01-28 06:29:25
Modified files:
gfs-kernel/src/gfs: ops_export.c ops_export.h ops_vm.c sys.c
Log message:
Update gfs to cope with 2.6.24 export op changes and other bits
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/gfs-kernel/src/gfs/ops_export.c.diff?cvsroot=cluster&r1=1.12&r2=1.13
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/gfs-kernel/src/gfs/ops_export.h.diff?cvsroot=cluster&r1=1.2&r2=1.3
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/gfs-kernel/src/gfs/ops_vm.c.diff?cvsroot=cluster&r1=1.8&r2=1.9
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/gfs-kernel/src/gfs/sys.c.diff?cvsroot=cluster&r1=1.4&r2=1.5
--- cluster/gfs-kernel/src/gfs/ops_export.c 2007/07/23 16:41:46 1.12
+++ cluster/gfs-kernel/src/gfs/ops_export.c 2008/01/28 06:29:25 1.13
@@ -44,49 +44,6 @@
};
/**
- * gfs_decode_fh -
- * @param1: description
- * @param2: description
- * @param3: description
- *
- * Function description
- *
- * Returns: what is returned
- */
-
-struct dentry *
-gfs_decode_fh(struct super_block *sb, __u32 *fh, int fh_len, int fh_type,
- int (*acceptable)(void *context, struct dentry *dentry),
- void *context)
-{
- struct inode_cookie this, parent;
-
- atomic_inc(&get_v2sdp(sb)->sd_ops_export);
-
- memset(&parent, 0, sizeof(struct inode_cookie));
-
- switch (fh_type) {
- case 6:
- parent.gen_valid = TRUE;
- parent.gen = gfs32_to_cpu(fh[5]);
- case 5:
- parent.formal_ino = ((uint64_t)gfs32_to_cpu(fh[3])) << 32;
- parent.formal_ino |= (uint64_t)gfs32_to_cpu(fh[4]);
- case 3:
- this.gen_valid = TRUE;
- this.gen = gfs32_to_cpu(fh[2]);
- this.formal_ino = ((uint64_t)gfs32_to_cpu(fh[0])) << 32;
- this.formal_ino |= (uint64_t)gfs32_to_cpu(fh[1]);
- break;
- default:
- return NULL;
- }
-
- return gfs_export_ops.find_exported_dentry(sb, &this, &parent,
- acceptable, context);
-}
-
-/**
* gfs_encode_fh -
* @param1: description
* @param2: description
@@ -290,10 +247,9 @@
*/
struct dentry *
-gfs_get_dentry(struct super_block *sb, void *inump)
+gfs_get_dentry(struct super_block *sb, struct inode_cookie *cookie)
{
struct gfs_sbd *sdp = get_v2sdp(sb);
- struct inode_cookie *cookie = (struct inode_cookie *)inump;
struct gfs_inum inum;
struct gfs_holder i_gh, ri_gh, rgd_gh;
struct gfs_rgrpd *rgd;
@@ -406,11 +362,55 @@
return ERR_PTR(error);
}
-struct export_operations gfs_export_ops = {
- .decode_fh = gfs_decode_fh,
+static struct dentry *gfs_fh_to_dentry(struct super_block *sb, struct fid *fid,
+ int fh_len, int fh_type)
+{
+ struct inode_cookie this;
+ __u32 *fh = fid->raw;
+
+ atomic_inc(&get_v2sdp(sb)->sd_ops_export);
+
+ switch (fh_type) {
+ case 6:
+ case 5:
+ case 3:
+ this.gen_valid = TRUE;
+ this.gen = gfs32_to_cpu(fh[2]);
+ this.formal_ino = ((uint64_t)gfs32_to_cpu(fh[0])) << 32;
+ this.formal_ino |= (uint64_t)gfs32_to_cpu(fh[1]);
+ return gfs_get_dentry(sb, &this);
+ default:
+ return NULL;
+ }
+}
+
+static struct dentry *gfs_fh_to_parent(struct super_block *sb, struct fid *fid,
+ int fh_len, int fh_type)
+{
+ struct inode_cookie parent;
+ __u32 *fh = fid->raw;
+
+ atomic_inc(&get_v2sdp(sb)->sd_ops_export);
+
+ switch (fh_type) {
+ case 6:
+ parent.gen_valid = TRUE;
+ parent.gen = gfs32_to_cpu(fh[5]);
+ case 5:
+ parent.formal_ino = ((uint64_t)gfs32_to_cpu(fh[3])) << 32;
+ parent.formal_ino |= (uint64_t)gfs32_to_cpu(fh[4]);
+ default:
+ return NULL;
+ }
+
+ return gfs_get_dentry(sb, &parent);
+}
+
+const struct export_operations gfs_export_ops = {
.encode_fh = gfs_encode_fh,
+ .fh_to_dentry = gfs_fh_to_dentry,
+ .fh_to_parent = gfs_fh_to_parent,
.get_name = gfs_get_name,
.get_parent = gfs_get_parent,
- .get_dentry = gfs_get_dentry,
};
--- cluster/gfs-kernel/src/gfs/ops_export.h 2006/07/10 23:22:34 1.2
+++ cluster/gfs-kernel/src/gfs/ops_export.h 2008/01/28 06:29:25 1.3
@@ -14,6 +14,6 @@
#ifndef __OPS_EXPORT_DOT_H__
#define __OPS_EXPORT_DOT_H__
-extern struct export_operations gfs_export_ops;
+extern const struct export_operations gfs_export_ops;
#endif /* __OPS_EXPORT_DOT_H__ */
--- cluster/gfs-kernel/src/gfs/ops_vm.c 2007/07/23 16:41:46 1.8
+++ cluster/gfs-kernel/src/gfs/ops_vm.c 2008/01/28 06:29:25 1.9
@@ -94,9 +94,10 @@
*/
static int
-alloc_page_backing(struct gfs_inode *ip, unsigned long index)
+alloc_page_backing(struct gfs_inode *ip, struct page *page)
{
struct gfs_sbd *sdp = ip->i_sbd;
+ unsigned long index = page->index;
uint64_t lblock = index << (PAGE_CACHE_SHIFT - sdp->sd_sb.sb_bsize_shift);
unsigned int blocks = PAGE_CACHE_SIZE >> sdp->sd_sb.sb_bsize_shift;
struct gfs_alloc *al;
@@ -179,8 +180,7 @@
struct vm_fault *vmf)
{
struct file *file = vma->vm_file;
- struct gfs_file *gf = file->private_data;
- struct gfs_inode *ip = get_v2ip(vma->vm_file->f_mapping->host);
+ struct gfs_inode *ip = get_v2ip(file->f_mapping->host);
struct gfs_holder i_gh;
int alloc_required;
int error;
--- cluster/gfs-kernel/src/gfs/sys.c 2007/06/06 15:11:54 1.4
+++ cluster/gfs-kernel/src/gfs/sys.c 2008/01/28 06:29:25 1.5
@@ -86,7 +86,6 @@
};
static struct kset gfs_kset = {
- .kobj = {.name = "gfs",},
.ktype = &gfs_ktype,
};
@@ -120,6 +119,7 @@
{
gfs_sys_margs = NULL;
spin_lock_init(&gfs_sys_margs_lock);
+ kobject_set_name(&gfs_kset.kobj, "gfs");
kobj_set_kset_s(&gfs_kset, fs_subsys);
return kset_register(&gfs_kset);
}
More information about the Cluster-devel
mailing list