Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 101762
b: refs/heads/master
c: 2c3e478
h: refs/heads/master
v: v3
  • Loading branch information
Jeremy Kerr committed Jul 9, 2008
1 parent 2c461a4 commit 45099f8
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 9 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: 6f7dde812defe5bc49cf463ac1579ffeda5cbfd4
refs/heads/master: 2c3e47871d18f93b8bc2892fb41432111201356d
5 changes: 4 additions & 1 deletion trunk/arch/powerpc/platforms/cell/spufs/file.c
Original file line number Diff line number Diff line change
Expand Up @@ -2645,7 +2645,6 @@ struct spufs_tree_descr spufs_dir_contents[] = {
{ "tid", &spufs_tid_fops, 0444, },
{ "stat", &spufs_stat_fops, 0444, },
{ "switch_log", &spufs_switch_log_fops, 0444 },
{ ".ctx", &spufs_ctx_fops, 0444, },
{},
};

Expand All @@ -2671,6 +2670,10 @@ struct spufs_tree_descr spufs_dir_nosched_contents[] = {
{ "object-id", &spufs_object_id_ops, 0666, },
{ "tid", &spufs_tid_fops, 0444, },
{ "stat", &spufs_stat_fops, 0444, },
{},
};

struct spufs_tree_descr spufs_dir_debug_contents[] = {
{ ".ctx", &spufs_ctx_fops, 0444, },
{},
};
Expand Down
40 changes: 33 additions & 7 deletions trunk/arch/powerpc/platforms/cell/spufs/inode.c
Original file line number Diff line number Diff line change
Expand Up @@ -42,10 +42,19 @@

#include "spufs.h"

struct spufs_sb_info {
int debug;
};

static struct kmem_cache *spufs_inode_cache;
char *isolated_loader;
static int isolated_loader_size;

static struct spufs_sb_info *spufs_get_sb_info(struct super_block *sb)
{
return sb->s_fs_info;
}

static struct inode *
spufs_alloc_inode(struct super_block *sb)
{
Expand Down Expand Up @@ -280,6 +289,13 @@ spufs_mkdir(struct inode *dir, struct dentry *dentry, unsigned int flags,
if (ret)
goto out_free_ctx;

if (spufs_get_sb_info(dir->i_sb)->debug)
ret = spufs_fill_dir(dentry, spufs_dir_debug_contents,
mode, ctx);

if (ret)
goto out_free_ctx;

d_instantiate(dentry, inode);
dget(dentry);
dir->i_nlink++;
Expand Down Expand Up @@ -640,18 +656,19 @@ long spufs_create(struct nameidata *nd, unsigned int flags, mode_t mode,

/* File system initialization */
enum {
Opt_uid, Opt_gid, Opt_mode, Opt_err,
Opt_uid, Opt_gid, Opt_mode, Opt_debug, Opt_err,
};

static match_table_t spufs_tokens = {
{ Opt_uid, "uid=%d" },
{ Opt_gid, "gid=%d" },
{ Opt_mode, "mode=%o" },
{ Opt_err, NULL },
{ Opt_uid, "uid=%d" },
{ Opt_gid, "gid=%d" },
{ Opt_mode, "mode=%o" },
{ Opt_debug, "debug" },
{ Opt_err, NULL },
};

static int
spufs_parse_options(char *options, struct inode *root)
spufs_parse_options(struct super_block *sb, char *options, struct inode *root)
{
char *p;
substring_t args[MAX_OPT_ARGS];
Expand Down Expand Up @@ -679,6 +696,9 @@ spufs_parse_options(char *options, struct inode *root)
return 0;
root->i_mode = option | S_IFDIR;
break;
case Opt_debug:
spufs_get_sb_info(sb)->debug = 1;
break;
default:
return 0;
}
Expand Down Expand Up @@ -737,7 +757,7 @@ spufs_create_root(struct super_block *sb, void *data)
SPUFS_I(inode)->i_ctx = NULL;

ret = -EINVAL;
if (!spufs_parse_options(data, inode))
if (!spufs_parse_options(sb, data, inode))
goto out_iput;

ret = -ENOMEM;
Expand All @@ -755,6 +775,7 @@ spufs_create_root(struct super_block *sb, void *data)
static int
spufs_fill_super(struct super_block *sb, void *data, int silent)
{
struct spufs_sb_info *info;
static struct super_operations s_ops = {
.alloc_inode = spufs_alloc_inode,
.destroy_inode = spufs_destroy_inode,
Expand All @@ -766,11 +787,16 @@ spufs_fill_super(struct super_block *sb, void *data, int silent)

save_mount_options(sb, data);

info = kzalloc(sizeof(*info), GFP_KERNEL);
if (!info)
return -ENOMEM;

sb->s_maxbytes = MAX_LFS_FILESIZE;
sb->s_blocksize = PAGE_CACHE_SIZE;
sb->s_blocksize_bits = PAGE_CACHE_SHIFT;
sb->s_magic = SPUFS_MAGIC;
sb->s_op = &s_ops;
sb->s_fs_info = info;

return spufs_create_root(sb, data);
}
Expand Down
1 change: 1 addition & 0 deletions trunk/arch/powerpc/platforms/cell/spufs/spufs.h
Original file line number Diff line number Diff line change
Expand Up @@ -244,6 +244,7 @@ struct spufs_tree_descr {

extern struct spufs_tree_descr spufs_dir_contents[];
extern struct spufs_tree_descr spufs_dir_nosched_contents[];
extern struct spufs_tree_descr spufs_dir_debug_contents[];

/* system call implementation */
extern struct spufs_calls spufs_calls;
Expand Down

0 comments on commit 45099f8

Please sign in to comment.