Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 16934
b: refs/heads/master
c: 6625b86
h: refs/heads/master
v: v3
  • Loading branch information
Tom Zanussi authored and Linus Torvalds committed Jan 9, 2006
1 parent 691044f commit e699b54
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 27 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: b33291c0bcecfa44baa905964eec4b8815dcbcdf
refs/heads/master: 6625b861f8f0e429902b8671b3e70792cd99074e
1 change: 1 addition & 0 deletions trunk/fs/relayfs/buffers.c
Original file line number Diff line number Diff line change
Expand Up @@ -186,4 +186,5 @@ void relay_remove_buf(struct kref *kref)
{
struct rchan_buf *buf = container_of(kref, struct rchan_buf, kref);
relayfs_remove(buf->dentry);
relay_destroy_buf(buf);
}
31 changes: 9 additions & 22 deletions trunk/fs/relayfs/inode.c
Original file line number Diff line number Diff line change
Expand Up @@ -34,23 +34,13 @@ static struct backing_dev_info relayfs_backing_dev_info = {
};

static struct inode *relayfs_get_inode(struct super_block *sb, int mode,
struct rchan *chan)
void *data)
{
struct rchan_buf *buf = NULL;
struct inode *inode;

if (S_ISREG(mode)) {
BUG_ON(!chan);
buf = relay_create_buf(chan);
if (!buf)
return NULL;
}

inode = new_inode(sb);
if (!inode) {
relay_destroy_buf(buf);
if (!inode)
return NULL;
}

inode->i_mode = mode;
inode->i_uid = 0;
Expand All @@ -62,7 +52,7 @@ static struct inode *relayfs_get_inode(struct super_block *sb, int mode,
switch (mode & S_IFMT) {
case S_IFREG:
inode->i_fop = &relayfs_file_operations;
RELAYFS_I(inode)->buf = buf;
RELAYFS_I(inode)->buf = data;
break;
case S_IFDIR:
inode->i_op = &simple_dir_inode_operations;
Expand All @@ -83,7 +73,7 @@ static struct inode *relayfs_get_inode(struct super_block *sb, int mode,
* @name: the name of the file to create
* @parent: parent directory
* @mode: mode
* @chan: relay channel associated with the file
* @data: user-associated data for this file
*
* Returns the new dentry, NULL on failure
*
Expand All @@ -92,7 +82,7 @@ static struct inode *relayfs_get_inode(struct super_block *sb, int mode,
static struct dentry *relayfs_create_entry(const char *name,
struct dentry *parent,
int mode,
struct rchan *chan)
void *data)
{
struct dentry *d;
struct inode *inode;
Expand Down Expand Up @@ -127,7 +117,7 @@ static struct dentry *relayfs_create_entry(const char *name,
goto release_mount;
}

inode = relayfs_get_inode(parent->d_inode->i_sb, mode, chan);
inode = relayfs_get_inode(parent->d_inode->i_sb, mode, data);
if (!inode) {
d = NULL;
goto release_mount;
Expand Down Expand Up @@ -155,20 +145,20 @@ static struct dentry *relayfs_create_entry(const char *name,
* @name: the name of the file to create
* @parent: parent directory
* @mode: mode, if not specied the default perms are used
* @chan: channel associated with the file
* @data: user-associated data for this file
*
* Returns file dentry if successful, NULL otherwise.
*
* The file will be created user r on behalf of current user.
*/
struct dentry *relayfs_create_file(const char *name, struct dentry *parent,
int mode, struct rchan *chan)
int mode, void *data)
{
if (!mode)
mode = S_IRUSR;
mode = (mode & S_IALLUGO) | S_IFREG;

return relayfs_create_entry(name, parent, mode, chan);
return relayfs_create_entry(name, parent, mode, data);
}

/**
Expand Down Expand Up @@ -505,9 +495,6 @@ static struct inode *relayfs_alloc_inode(struct super_block *sb)
*/
static void relayfs_destroy_inode(struct inode *inode)
{
if (RELAYFS_I(inode)->buf)
relay_destroy_buf(RELAYFS_I(inode)->buf);

kmem_cache_free(relayfs_inode_cachep, RELAYFS_I(inode));
}

Expand Down
11 changes: 8 additions & 3 deletions trunk/fs/relayfs/relay.c
Original file line number Diff line number Diff line change
Expand Up @@ -171,12 +171,17 @@ static struct rchan_buf *relay_open_buf(struct rchan *chan,
struct rchan_buf *buf;
struct dentry *dentry;

buf = relay_create_buf(chan);
if (!buf)
return NULL;

/* Create file in fs */
dentry = relayfs_create_file(filename, parent, S_IRUSR, chan);
if (!dentry)
dentry = relayfs_create_file(filename, parent, S_IRUSR, buf);
if (!dentry) {
relay_destroy_buf(buf);
return NULL;
}

buf = RELAYFS_I(dentry->d_inode)->buf;
buf->dentry = dentry;
__relay_reset(buf, 1);

Expand Down
2 changes: 1 addition & 1 deletion trunk/fs/relayfs/relay.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
struct dentry *relayfs_create_file(const char *name,
struct dentry *parent,
int mode,
struct rchan *chan);
void *data);
extern int relayfs_remove(struct dentry *dentry);
extern int relay_buf_empty(struct rchan_buf *buf);
extern void relay_destroy_channel(struct kref *kref);
Expand Down

0 comments on commit e699b54

Please sign in to comment.