|
|
|
@ -149,8 +149,7 @@ static struct inode *ibmasmfs_make_inode(struct super_block *sb, int mode) |
|
|
|
|
return ret; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static struct dentry *ibmasmfs_create_file (struct super_block *sb, |
|
|
|
|
struct dentry *parent, |
|
|
|
|
static struct dentry *ibmasmfs_create_file(struct dentry *parent, |
|
|
|
|
const char *name, |
|
|
|
|
const struct file_operations *fops, |
|
|
|
|
void *data, |
|
|
|
@ -163,7 +162,7 @@ static struct dentry *ibmasmfs_create_file (struct super_block *sb, |
|
|
|
|
if (!dentry) |
|
|
|
|
return NULL; |
|
|
|
|
|
|
|
|
|
inode = ibmasmfs_make_inode(sb, S_IFREG | mode); |
|
|
|
|
inode = ibmasmfs_make_inode(parent->d_sb, S_IFREG | mode); |
|
|
|
|
if (!inode) { |
|
|
|
|
dput(dentry); |
|
|
|
|
return NULL; |
|
|
|
@ -176,8 +175,7 @@ static struct dentry *ibmasmfs_create_file (struct super_block *sb, |
|
|
|
|
return dentry; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static struct dentry *ibmasmfs_create_dir (struct super_block *sb, |
|
|
|
|
struct dentry *parent, |
|
|
|
|
static struct dentry *ibmasmfs_create_dir(struct dentry *parent, |
|
|
|
|
const char *name) |
|
|
|
|
{ |
|
|
|
|
struct dentry *dentry; |
|
|
|
@ -187,7 +185,7 @@ static struct dentry *ibmasmfs_create_dir (struct super_block *sb, |
|
|
|
|
if (!dentry) |
|
|
|
|
return NULL; |
|
|
|
|
|
|
|
|
|
inode = ibmasmfs_make_inode(sb, S_IFDIR | 0500); |
|
|
|
|
inode = ibmasmfs_make_inode(parent->d_sb, S_IFDIR | 0500); |
|
|
|
|
if (!inode) { |
|
|
|
|
dput(dentry); |
|
|
|
|
return NULL; |
|
|
|
@ -612,20 +610,20 @@ static void ibmasmfs_create_files (struct super_block *sb) |
|
|
|
|
struct dentry *dir; |
|
|
|
|
struct dentry *remote_dir; |
|
|
|
|
sp = list_entry(entry, struct service_processor, node); |
|
|
|
|
dir = ibmasmfs_create_dir(sb, sb->s_root, sp->dirname); |
|
|
|
|
dir = ibmasmfs_create_dir(sb->s_root, sp->dirname); |
|
|
|
|
if (!dir) |
|
|
|
|
continue; |
|
|
|
|
|
|
|
|
|
ibmasmfs_create_file(sb, dir, "command", &command_fops, sp, S_IRUSR|S_IWUSR); |
|
|
|
|
ibmasmfs_create_file(sb, dir, "event", &event_fops, sp, S_IRUSR|S_IWUSR); |
|
|
|
|
ibmasmfs_create_file(sb, dir, "reverse_heartbeat", &r_heartbeat_fops, sp, S_IRUSR|S_IWUSR); |
|
|
|
|
ibmasmfs_create_file(dir, "command", &command_fops, sp, S_IRUSR|S_IWUSR); |
|
|
|
|
ibmasmfs_create_file(dir, "event", &event_fops, sp, S_IRUSR|S_IWUSR); |
|
|
|
|
ibmasmfs_create_file(dir, "reverse_heartbeat", &r_heartbeat_fops, sp, S_IRUSR|S_IWUSR); |
|
|
|
|
|
|
|
|
|
remote_dir = ibmasmfs_create_dir(sb, dir, "remote_video"); |
|
|
|
|
remote_dir = ibmasmfs_create_dir(dir, "remote_video"); |
|
|
|
|
if (!remote_dir) |
|
|
|
|
continue; |
|
|
|
|
|
|
|
|
|
ibmasmfs_create_file(sb, remote_dir, "width", &remote_settings_fops, (void *)display_width(sp), S_IRUSR|S_IWUSR); |
|
|
|
|
ibmasmfs_create_file(sb, remote_dir, "height", &remote_settings_fops, (void *)display_height(sp), S_IRUSR|S_IWUSR); |
|
|
|
|
ibmasmfs_create_file(sb, remote_dir, "depth", &remote_settings_fops, (void *)display_depth(sp), S_IRUSR|S_IWUSR); |
|
|
|
|
ibmasmfs_create_file(remote_dir, "width", &remote_settings_fops, (void *)display_width(sp), S_IRUSR|S_IWUSR); |
|
|
|
|
ibmasmfs_create_file(remote_dir, "height", &remote_settings_fops, (void *)display_height(sp), S_IRUSR|S_IWUSR); |
|
|
|
|
ibmasmfs_create_file(remote_dir, "depth", &remote_settings_fops, (void *)display_depth(sp), S_IRUSR|S_IWUSR); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|