* [Cluster-devel] cluster/gfs-kernel/src/gfs Makefile main.c mou ...
@ 2006-07-18 20:48 rpeterso
0 siblings, 0 replies; only message in thread
From: rpeterso @ 2006-07-18 20:48 UTC (permalink / raw)
To: cluster-devel.redhat.com
CVSROOT: /cvs/cluster
Module name: cluster
Changes by: rpeterso at sourceware.org 2006-07-18 20:48:20
Modified files:
gfs-kernel/src/gfs: Makefile main.c mount.c ops_fstype.c
ops_super.c sys.c
Added files:
gfs-kernel/src/gfs: proc.c proc.h
Log message:
Add /proc/fs/gfs support back in.
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/gfs-kernel/src/gfs/proc.c.diff?cvsroot=cluster&r1=1.8&r2=1.9
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/gfs-kernel/src/gfs/proc.h.diff?cvsroot=cluster&r1=1.3&r2=1.4
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/gfs-kernel/src/gfs/Makefile.diff?cvsroot=cluster&r1=1.12&r2=1.13
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/gfs-kernel/src/gfs/main.c.diff?cvsroot=cluster&r1=1.8&r2=1.9
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/gfs-kernel/src/gfs/mount.c.diff?cvsroot=cluster&r1=1.13&r2=1.14
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/gfs-kernel/src/gfs/ops_fstype.c.diff?cvsroot=cluster&r1=1.25&r2=1.26
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/gfs-kernel/src/gfs/ops_super.c.diff?cvsroot=cluster&r1=1.21&r2=1.22
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/gfs-kernel/src/gfs/sys.c.diff?cvsroot=cluster&r1=1.2&r2=1.3
--- cluster/gfs-kernel/src/gfs/proc.c 2006/07/10 23:22:34 1.8
+++ cluster/gfs-kernel/src/gfs/proc.c 2006/07/18 20:48:20 1.9
@@ -43,11 +43,9 @@
void
gfs_proc_fs_add(struct gfs_sbd *sdp)
{
- ENTER(GFN_PROC_FS_ADD)
down(&gfs_fs_lock);
list_add(&sdp->sd_list, &gfs_fs_list);
up(&gfs_fs_lock);
- RET(GFN_PROC_FS_ADD);
}
/**
@@ -59,11 +57,9 @@
void
gfs_proc_fs_del(struct gfs_sbd *sdp)
{
- ENTER(GFN_PROC_FS_DEL)
down(&gfs_fs_lock);
list_del(&sdp->sd_list);
up(&gfs_fs_lock);
- RET(GFN_PROC_FS_DEL);
}
/**
@@ -77,7 +73,6 @@
static ssize_t
do_list(char *user_buf, size_t size)
{
- ENTER(GFN_DO_LIST)
struct list_head *tmp;
struct gfs_sbd *sdp = NULL;
unsigned int x;
@@ -124,7 +119,7 @@
out:
up(&gfs_fs_lock);
- RETURN(GFN_DO_LIST, error);
+ return error;
}
/**
@@ -137,19 +132,18 @@
static char *
find_argument(char *p)
{
- ENTER(GFN_FIND_ARGUMENT)
char *p2;
while (*p == ' ' || *p == '\n')
p++;
if (!*p)
- RETURN(GFN_FIND_ARGUMENT, NULL);
+ return NULL;
for (p2 = p; *p2; p2++) /* do nothing */;
p2--;
while (*p2 == ' ' || *p2 == '\n')
*p2-- = 0;
- RETURN(GFN_FIND_ARGUMENT, p);
+ return p;
}
/**
@@ -162,7 +156,6 @@
static int
do_freeze(char *p)
{
- ENTER(GFN_DO_FREEZE)
struct list_head *tmp;
struct gfs_sbd *sdp;
char num[21];
@@ -170,7 +163,7 @@
p = find_argument(p + 6);
if (!p)
- RETURN(GFN_DO_FREEZE, -ENOENT);
+ return -ENOENT;
down(&gfs_fs_lock);
@@ -188,7 +181,7 @@
up(&gfs_fs_lock);
- RETURN(GFN_DO_FREEZE, error);
+ return error;
}
/**
@@ -201,7 +194,6 @@
static int
do_unfreeze(char *p)
{
- ENTER(GFN_DO_UNFREEZE)
struct list_head *tmp;
struct gfs_sbd *sdp;
char num[21];
@@ -209,7 +201,7 @@
p = find_argument(p + 8);
if (!p)
- RETURN(GFN_DO_UNFREEZE, -ENOENT);
+ return -ENOENT;
down(&gfs_fs_lock);
@@ -227,7 +219,7 @@
up(&gfs_fs_lock);
- RETURN(GFN_DO_UNFREEZE, error);
+ return error;
}
/**
@@ -240,16 +232,15 @@
static int
do_margs(char *p)
{
- ENTER(GFN_DO_MARGS)
char *new_buf, *old_buf;
p = find_argument(p + 5);
if (!p)
- RETURN(GFN_DO_MARGS, -ENOENT);
+ return -ENOENT;
new_buf = kmalloc(strlen(p) + 1, GFP_KERNEL);
if (!new_buf)
- RETURN(GFN_DO_MARGS, -ENOMEM);
+ return -ENOMEM;
strcpy(new_buf, p);
spin_lock(&gfs_proc_margs_lock);
@@ -260,7 +251,7 @@
if (old_buf)
kfree(old_buf);
- RETURN(GFN_DO_MARGS, 0);
+ return 0;
}
/**
@@ -273,7 +264,6 @@
static int
do_withdraw(char *p)
{
- ENTER(GFN_DO_WITHDRAW)
struct list_head *tmp;
struct gfs_sbd *sdp;
char num[21];
@@ -281,7 +271,7 @@
p = find_argument(p + 8);
if (!p)
- RETURN(GFN_DO_WITHDRAW, -ENOENT);
+ return -ENOENT;
down(&gfs_fs_lock);
@@ -301,7 +291,7 @@
up(&gfs_fs_lock);
- RETURN(GFN_DO_WITHDRAW, error);
+ return error;
}
/**
@@ -316,7 +306,6 @@
static int
do_lockdump(char *p, char *buf, size_t size)
{
- ENTER(GFN_DO_LOCKDUMP)
struct list_head *tmp;
struct gfs_sbd *sdp;
char num[21];
@@ -325,7 +314,7 @@
p = find_argument(p + 8);
if (!p)
- RETURN(GFN_DO_LOCKDUMP, -ENOENT);
+ return -ENOENT;
down(&gfs_fs_lock);
@@ -350,7 +339,7 @@
up(&gfs_fs_lock);
- RETURN(GFN_DO_LOCKDUMP, error);
+ return error;
}
/**
@@ -366,7 +355,6 @@
static ssize_t
gfs_proc_write(struct file *file, const char *buf, size_t size, loff_t *offset)
{
- ENTER(GFN_PROC_WRITE)
char *p;
spin_lock(&req_lock);
@@ -378,23 +366,23 @@
kfree(p);
if (!size)
- RETURN(GFN_PROC_WRITE, -EINVAL);
+ return -EINVAL;
p = kmalloc(size + 1, GFP_KERNEL);
if (!p)
- RETURN(GFN_PROC_WRITE, -ENOMEM);
+ return -ENOMEM;
p[size] = 0;
if (copy_from_user(p, buf, size)) {
kfree(p);
- RETURN(GFN_PROC_WRITE, -EFAULT);
+ return -EFAULT;
}
spin_lock(&req_lock);
file->private_data = p;
spin_unlock(&req_lock);
- RETURN(GFN_PROC_WRITE, size);
+ return size;
}
/**
@@ -410,7 +398,6 @@
static ssize_t
gfs_proc_read(struct file *file, char *buf, size_t size, loff_t *offset)
{
- ENTER(GFN_PROC_READ)
char *p;
int error;
@@ -420,11 +407,11 @@
spin_unlock(&req_lock);
if (!p)
- RETURN(GFN_PROC_READ, -ENOENT);
+ return -ENOENT;
if (!size) {
kfree(p);
- RETURN(GFN_PROC_READ, -EINVAL);
+ return -EINVAL;
}
if (strncmp(p, "list", 4) == 0)
@@ -444,7 +431,7 @@
kfree(p);
- RETURN(GFN_PROC_READ, error);
+ return error;
}
/**
@@ -458,10 +445,9 @@
static int
gfs_proc_close(struct inode *inode, struct file *file)
{
- ENTER(GFN_PROC_CLOSE)
if (file->private_data)
kfree(file->private_data);
- RETURN(GFN_PROC_CLOSE, 0);
+ return 0;
}
static struct file_operations gfs_proc_fops =
@@ -480,7 +466,6 @@
int
gfs_proc_init(void)
{
- ENTER(GFN_PROC_INIT)
struct proc_dir_entry *pde;
INIT_LIST_HEAD(&gfs_fs_list);
@@ -491,12 +476,12 @@
pde = create_proc_entry("fs/gfs", S_IFREG | 0600, NULL);
if (!pde)
- RETURN(GFN_PROC_INIT, -ENOMEM);
+ return -ENOMEM;
pde->owner = THIS_MODULE;
pde->proc_fops = &gfs_proc_fops;
- RETURN(GFN_PROC_INIT, 0);
+ return 0;
}
/**
@@ -507,10 +492,8 @@
void
gfs_proc_uninit(void)
{
- ENTER(GFN_PROC_UNINIT)
if (gfs_proc_margs)
kfree(gfs_proc_margs);
remove_proc_entry("fs/gfs", NULL);
- RET(GFN_PROC_UNINIT);
}
diff -u -r1.3 -r1.4
--- cluster/gfs-kernel/src/gfs/Makefile 2006/07/11 17:29:24 1.12
+++ cluster/gfs-kernel/src/gfs/Makefile 2006/07/18 20:48:20 1.13
@@ -55,6 +55,7 @@
ops_super.o \
ops_vm.o \
page.o \
+ proc.o \
quota.o \
recovery.o \
rgrp.o \
--- cluster/gfs-kernel/src/gfs/main.c 2006/07/10 23:22:34 1.8
+++ cluster/gfs-kernel/src/gfs/main.c 2006/07/18 20:48:20 1.9
@@ -25,6 +25,7 @@
#include "gfs.h"
#include "ops_fstype.h"
#include "sys.h"
+#include "proc.h"
/**
* init_gfs_fs - Register GFS as a filesystem
@@ -41,6 +42,9 @@
error = gfs_sys_init();
if (error)
return error;
+ error = gfs_proc_init();
+ if (error)
+ goto fail;
gfs_random_number = xtime.tv_nsec;
@@ -94,6 +98,8 @@
if (gfs_glock_cachep)
kmem_cache_destroy(gfs_glock_cachep);
+ gfs_proc_uninit();
+
fail:
gfs_sys_uninit();
@@ -115,6 +121,7 @@
kmem_cache_destroy(gfs_inode_cachep);
kmem_cache_destroy(gfs_glock_cachep);
+ gfs_proc_uninit();
gfs_sys_uninit();
}
--- cluster/gfs-kernel/src/gfs/mount.c 2006/07/11 17:29:24 1.13
+++ cluster/gfs-kernel/src/gfs/mount.c 2006/07/18 20:48:20 1.14
@@ -21,6 +21,7 @@
#include "gfs.h"
#include "mount.h"
+#include "proc.h"
#include "sys.h"
/**
@@ -40,6 +41,15 @@
/* If someone preloaded options, use those instead */
+ spin_lock(&gfs_proc_margs_lock);
+ if (gfs_proc_margs) {
+ data = gfs_proc_margs;
+ gfs_proc_margs = NULL;
+ }
+ spin_unlock(&gfs_proc_margs_lock);
+
+ /* Set some defaults */
+
memset(args, 0, sizeof(struct gfs_args));
args->ar_num_glockd = GFS_GLOCKD_DEFAULT;
--- cluster/gfs-kernel/src/gfs/ops_fstype.c 2006/07/10 23:22:34 1.25
+++ cluster/gfs-kernel/src/gfs/ops_fstype.c 2006/07/18 20:48:20 1.26
@@ -28,11 +28,12 @@
#include "ops_export.h"
#include "ops_fstype.h"
#include "ops_super.h"
-#include "sys.h"
+#include "proc.h"
#include "quota.h"
#include "recovery.h"
#include "rgrp.h"
#include "super.h"
+#include "sys.h"
#include "unlinked.h"
#define DO 0
@@ -669,6 +670,7 @@
if (error)
goto fail_journal;
+ gfs_proc_fs_add(sdp);
gfs_glock_dq_uninit(&mount_gh);
return 0;
--- cluster/gfs-kernel/src/gfs/ops_super.c 2006/07/10 23:22:34 1.21
+++ cluster/gfs-kernel/src/gfs/ops_super.c 2006/07/18 20:48:20 1.22
@@ -32,11 +32,12 @@
#include "ops_fstype.h"
#include "ops_super.h"
#include "page.h"
-#include "sys.h"
+#include "proc.h"
#include "quota.h"
#include "recovery.h"
#include "rgrp.h"
#include "super.h"
+#include "sys.h"
#include "mount.h"
/**
@@ -101,6 +102,8 @@
atomic_inc(&sdp->sd_ops_super);
+ gfs_proc_fs_del(sdp);
+
/* Unfreeze the filesystem, if we need to */
down(&sdp->sd_freeze_lock);
--- cluster/gfs-kernel/src/gfs/sys.c 2006/07/11 17:29:24 1.2
+++ cluster/gfs-kernel/src/gfs/sys.c 2006/07/18 20:48:20 1.3
@@ -28,11 +28,8 @@
#include "sys.h"
#include "super.h"
-struct list_head gfs_fs_list;
-struct semaphore gfs_fs_lock;
char *gfs_sys_margs;
spinlock_t gfs_sys_margs_lock;
-spinlock_t req_lock;
static ssize_t id_show(struct gfs_sbd *sdp, char *buf)
{
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2006-07-18 20:48 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-07-18 20:48 [Cluster-devel] cluster/gfs-kernel/src/gfs Makefile main.c mou rpeterso
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.