[Ocfs2-commits] mfasheh commits r2132 - trunk/fs/ocfs2
svn-commits at oss.oracle.com
svn-commits at oss.oracle.com
Mon Apr 11 19:52:10 CDT 2005
Author: mfasheh
Signed-off-by: manish
Date: 2005-04-11 19:52:08 -0500 (Mon, 11 Apr 2005)
New Revision: 2132
Modified:
trunk/fs/ocfs2/proc.c
Log:
* actually pass a valid mode with our proc entries
* teach the proc code how to check return values
* add the ability to create writeable proc entries
Signed-off-by: manish
Modified: trunk/fs/ocfs2/proc.c
===================================================================
--- trunk/fs/ocfs2/proc.c 2005-04-12 00:11:44 UTC (rev 2131)
+++ trunk/fs/ocfs2/proc.c 2005-04-12 00:52:08 UTC (rev 2132)
@@ -63,23 +63,25 @@
char *name;
char *data;
int (*read_proc) (char *, char **, off_t, int, int *, void *);
+ write_proc_t *write_proc;
+ mode_t mode;
} ocfs_proc_list;
ocfs_proc_list top_dir[] = {
- { "version", NULL, ocfs_proc_version },
- { "nodename", NULL, ocfs_proc_nodename },
+ { "version", NULL, ocfs_proc_version, NULL, S_IFREG | S_IRUGO, },
+ { "nodename", NULL, ocfs_proc_nodename, NULL, S_IFREG | S_IRUGO, },
{ NULL }
};
ocfs_proc_list sub_dir[] = {
- { "nodenum", NULL, ocfs_proc_nodenum },
- { "mountpoint", NULL, ocfs_proc_mountpoint },
- { "slotnum", NULL, ocfs_proc_slotnum },
- { "statistics", NULL, ocfs_proc_statistics },
- { "device", NULL, ocfs_proc_device },
- { "nodes", NULL, ocfs_proc_nodes },
- { "allocstat", NULL, ocfs_proc_alloc_stat },
- { "label", NULL, ocfs_proc_label },
+ { "nodenum", NULL, ocfs_proc_nodenum, NULL, S_IFREG | S_IRUGO, },
+ { "mountpoint", NULL, ocfs_proc_mountpoint, NULL, S_IFREG | S_IRUGO, },
+ { "slotnum", NULL, ocfs_proc_slotnum, NULL, S_IFREG | S_IRUGO, },
+ { "statistics", NULL, ocfs_proc_statistics, NULL, S_IFREG | S_IRUGO, },
+ { "device", NULL, ocfs_proc_device, NULL, S_IFREG | S_IRUGO, },
+ { "nodes", NULL, ocfs_proc_nodes, NULL, S_IFREG | S_IRUGO, },
+ { "allocstat", NULL, ocfs_proc_alloc_stat, NULL, S_IFREG | S_IRUGO, },
+ { "label", NULL, ocfs_proc_label, NULL, S_IFREG | S_IRUGO, },
{ NULL }
};
@@ -91,15 +93,24 @@
{
struct proc_dir_entry *parent = NULL;
ocfs_proc_list *p;
+ struct proc_dir_entry* entry;
LOG_ENTRY ();
parent = proc_mkdir (OCFS2_PROC_BASENAME, 0);
if (parent) {
OcfsGlobalCtxt.proc_root_dir = parent;
- for (p = top_dir; p->name; p++)
- create_proc_read_entry (p->name, 0, parent,
- p->read_proc, p->data);
+ for (p = top_dir; p->name; p++) {
+ entry = create_proc_read_entry(p->name, p->mode,
+ parent, p->read_proc,
+ p->data);
+ if (!entry)
+ return -EINVAL;
+ if (p->write_proc)
+ entry->write_proc = p->write_proc;
+
+ entry->owner = THIS_MODULE;
+ }
}
LOG_EXIT ();
@@ -292,23 +303,36 @@
{
char newdir[20];
struct proc_dir_entry *parent = NULL;
+ struct proc_dir_entry* entry;
ocfs_proc_list *p;
- LOG_ENTRY ();
+ LOG_ENTRY();
- snprintf (newdir, sizeof(newdir), "%u_%u", MAJOR(osb->sb->s_dev),
- MINOR(osb->sb->s_dev));
- parent = proc_mkdir (newdir, OcfsGlobalCtxt.proc_root_dir);
+ snprintf(newdir, sizeof(newdir), "%u_%u", MAJOR(osb->sb->s_dev),
+ MINOR(osb->sb->s_dev));
+ parent = proc_mkdir(newdir, OcfsGlobalCtxt.proc_root_dir);
osb->proc_sub_dir = parent;
- if (parent) {
- for (p = sub_dir; p->name; p++)
- create_proc_read_entry (p->name, 0, parent,
- p->read_proc, (char *)osb);
+ if (!parent) {
+ LOG_EXIT();
+ return;
}
- LOG_EXIT ();
- return ;
+ for (p = sub_dir; p->name; p++) {
+ /* XXX: What do we do if
+ * create_proc_read_entry fails?! */
+ entry = create_proc_read_entry(p->name, p->mode,
+ parent, p->read_proc,
+ (char *)osb);
+ if (entry) {
+ if (p->write_proc)
+ entry->write_proc = p->write_proc;
+
+ entry->owner = THIS_MODULE;
+ }
+ }
+
+ LOG_EXIT();
} /* ocfs_proc_add_volume */
/*
@@ -449,3 +473,4 @@
LOG_EXIT_INT (ret);
return ret;
} /* ocfs_proc_label */
+
More information about the Ocfs2-commits
mailing list