From: sukadev-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org
To: hpa-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org,
alan-qBU/x9rampVanCEyBjwyrvXRex20P6io@public.gmane.org
Cc: kyle-hoO6YkzgTuCM0SS3m2neIg@public.gmane.org,
ebiederm-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org,
bastian-yyjItF7Rl6lg9hUCZPvPmw@public.gmane.org,
containers-qjLDD68F18O7TbgM5vRIOg@public.gmane.org,
xemul-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org
Subject: [RFC][PATCH 3/8]: Remove devpts_root global
Date: Wed, 20 Aug 2008 19:27:19 -0700 [thread overview]
Message-ID: <20080821022719.GC29658@us.ibm.com> (raw)
In-Reply-To: <20080821022126.GA29449-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
From: Sukadev Bhattiprolu <sukadev-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
Subject: [RFC][PATCH 3/8]: Remove devpts_root global
Remove the 'devpts_root' global variable and find the root dentry using
the super_block. The super-block can be found from the device inode, using
the new wrapper, pts_sb_from_inode().
---
fs/devpts/inode.c | 36 ++++++++++++++++++++++++------------
1 file changed, 24 insertions(+), 12 deletions(-)
Index: linux-2.6.26-rc8-mm1/fs/devpts/inode.c
===================================================================
--- linux-2.6.26-rc8-mm1.orig/fs/devpts/inode.c 2008-08-20 12:58:30.000000000 -0700
+++ linux-2.6.26-rc8-mm1/fs/devpts/inode.c 2008-08-20 13:16:47.000000000 -0700
@@ -33,7 +33,6 @@ static DEFINE_IDR(allocated_ptys);
static DEFINE_MUTEX(allocated_ptys_lock);
static struct vfsmount *devpts_mnt;
-static struct dentry *devpts_root;
static struct {
int setuid;
@@ -55,6 +54,14 @@ static match_table_t tokens = {
{Opt_err, NULL}
};
+static inline struct super_block *pts_sb_from_inode(struct inode *inode)
+{
+ if (inode->i_sb->s_magic == DEVPTS_SUPER_MAGIC)
+ return inode->i_sb;
+
+ return devpts_mnt->mnt_sb;
+}
+
static int devpts_remount(struct super_block *sb, int *flags, char *data)
{
char *p;
@@ -141,7 +148,7 @@ devpts_fill_super(struct super_block *s,
inode->i_fop = &simple_dir_operations;
inode->i_nlink = 2;
- devpts_root = s->s_root = d_alloc_root(inode);
+ s->s_root = d_alloc_root(inode);
if (s->s_root)
return 0;
@@ -169,10 +176,9 @@ static struct file_system_type devpts_fs
* to the System V naming convention
*/
-static struct dentry *get_node(int num)
+static struct dentry *get_node(struct dentry *root, int num)
{
char s[12];
- struct dentry *root = devpts_root;
mutex_lock(&root->d_inode->i_mutex);
return lookup_one_len(s, root, sprintf(s, "%d", num));
}
@@ -218,7 +224,9 @@ int devpts_pty_new(struct inode *ptmx_in
struct tty_driver *driver = tty->driver;
dev_t device = MKDEV(driver->major, driver->minor_start+number);
struct dentry *dentry;
- struct inode *inode = new_inode(devpts_mnt->mnt_sb);
+ struct super_block *sb = pts_sb_from_inode(ptmx_inode);
+ struct inode *inode = new_inode(sb);
+ struct dentry *root = sb->s_root;
/* We're supposed to be given the slave end of a pty */
BUG_ON(driver->type != TTY_DRIVER_TYPE_PTY);
@@ -234,20 +242,22 @@ int devpts_pty_new(struct inode *ptmx_in
init_special_inode(inode, S_IFCHR|config.mode, device);
inode->i_private = tty;
- dentry = get_node(number);
+ dentry = get_node(root, number);
if (!IS_ERR(dentry) && !dentry->d_inode) {
d_instantiate(dentry, inode);
- fsnotify_create(devpts_root->d_inode, dentry);
+ fsnotify_create(root->d_inode, dentry);
}
- mutex_unlock(&devpts_root->d_inode->i_mutex);
+ mutex_unlock(&root->d_inode->i_mutex);
return 0;
}
struct tty_struct *devpts_get_tty(struct inode *inode, int number)
{
- struct dentry *dentry = get_node(number);
+ struct super_block *sb = pts_sb_from_inode(inode);
+ struct dentry *root = sb->s_root;
+ struct dentry *dentry = get_node(root, number);
struct tty_struct *tty;
tty = NULL;
@@ -257,14 +267,16 @@ struct tty_struct *devpts_get_tty(struct
dput(dentry);
}
- mutex_unlock(&devpts_root->d_inode->i_mutex);
+ mutex_unlock(&root->d_inode->i_mutex);
return tty;
}
void devpts_pty_kill(struct inode *inode, int number)
{
- struct dentry *dentry = get_node(number);
+ struct super_block *sb = pts_sb_from_inode(inode);
+ struct dentry *root = sb->s_root;
+ struct dentry *dentry = get_node(root, number);
if (!IS_ERR(dentry)) {
struct inode *inode = dentry->d_inode;
@@ -275,7 +287,7 @@ void devpts_pty_kill(struct inode *inode
}
dput(dentry);
}
- mutex_unlock(&devpts_root->d_inode->i_mutex);
+ mutex_unlock(&root->d_inode->i_mutex);
}
static int __init init_devpts_fs(void)
next prev parent reply other threads:[~2008-08-21 2:27 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-08-21 2:21 [RFC][PATCH 0/8][v2]: Enable multiple mounts of devpts sukadev-r/Jw6+rmf7HQT0dZR+AlfA
[not found] ` <20080821022126.GA29449-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2008-08-21 2:26 ` [RFC][PATCH 1/8]: /dev/tty tweak in init_dev() sukadev-r/Jw6+rmf7HQT0dZR+AlfA
[not found] ` <20080821022621.GA29658-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2008-08-21 9:19 ` Alan Cox
2008-08-21 9:26 ` Alan Cox
2008-08-21 2:26 ` [RFC][PATCH 2/8]: Add inode parameter devpts interfaces sukadev-r/Jw6+rmf7HQT0dZR+AlfA
2008-08-21 2:27 ` sukadev-r/Jw6+rmf7HQT0dZR+AlfA [this message]
2008-08-21 2:27 ` [RFC][PATCH 4/8]: Per-mount allocated_ptys sukadev-r/Jw6+rmf7HQT0dZR+AlfA
2008-08-21 2:28 ` [RFC][PATCH 5/8]: Per-mount 'config' object sukadev-r/Jw6+rmf7HQT0dZR+AlfA
2008-08-21 2:28 ` [RFC][PATCH 6/8]: Extract option parsing to new function sukadev-r/Jw6+rmf7HQT0dZR+AlfA
2008-08-21 2:29 ` [RFC][PATCH 7/8]: Auto-create ptmx node when mounting devpts sukadev-r/Jw6+rmf7HQT0dZR+AlfA
[not found] ` <20080821022908.GG29658-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2008-08-21 9:21 ` Alan Cox
[not found] ` <20080821102139.43c44f67-qBU/x9rampVanCEyBjwyrvXRex20P6io@public.gmane.org>
2008-08-21 16:09 ` H. Peter Anvin
[not found] ` <48AD932F.8090908-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org>
2008-08-21 16:27 ` Alan Cox
[not found] ` <20080821172700.781b0011-qBU/x9rampVanCEyBjwyrvXRex20P6io@public.gmane.org>
2008-08-21 16:49 ` H. Peter Anvin
[not found] ` <48AD9C93.6080302-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org>
2008-08-21 17:22 ` Serge E. Hallyn
[not found] ` <20080821172245.GA28411-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2008-08-21 17:07 ` Alan Cox
2008-08-21 17:23 ` sukadev-r/Jw6+rmf7HQT0dZR+AlfA
[not found] ` <20080821172342.GA8059-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2008-08-21 17:38 ` Eric W. Biederman
[not found] ` <m18wuqtgj7.fsf-B27657KtZYmhTnVgQlOflh2eb7JE58TQ@public.gmane.org>
2008-08-21 17:50 ` H. Peter Anvin
[not found] ` <48ADAAE2.6040700-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org>
2008-08-21 18:23 ` Eric W. Biederman
[not found] ` <m1hc9eqlbo.fsf-B27657KtZYmhTnVgQlOflh2eb7JE58TQ@public.gmane.org>
2008-08-21 18:36 ` H. Peter Anvin
2008-08-21 17:40 ` H. Peter Anvin
[not found] ` <48ADA890.4060309-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org>
2008-08-21 18:11 ` sukadev-r/Jw6+rmf7HQT0dZR+AlfA
[not found] ` <20080821181133.GB8059-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2008-08-21 18:17 ` H. Peter Anvin
2008-08-21 21:00 ` Serge E. Hallyn
[not found] ` <20080821210040.GA14532-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2008-08-21 22:16 ` sukadev-r/Jw6+rmf7HQT0dZR+AlfA
2008-08-21 2:29 ` [RFC][PATCH 8/8]: Enable multiple mounts of devpts sukadev-r/Jw6+rmf7HQT0dZR+AlfA
2008-08-21 2:45 ` [RFC][PATCH 0/8][v2]: " H. Peter Anvin
[not found] ` <48ACD6CB.5030706-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org>
2008-08-21 3:10 ` sukadev-r/Jw6+rmf7HQT0dZR+AlfA
[not found] ` <20080821031028.GB30205-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2008-08-21 3:15 ` H. Peter Anvin
[not found] ` <48ACDDC7.3000704-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org>
2008-08-21 16:34 ` Cedric Le Goater
[not found] ` <48AD991F.9010906-NmTC/0ZBporQT0dZR+AlfA@public.gmane.org>
2008-08-21 16:40 ` H. Peter Anvin
[not found] ` <48AD9A97.6000807-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org>
2008-08-21 16:54 ` Cedric Le Goater
[not found] ` <48AD9DCD.3060306-NmTC/0ZBporQT0dZR+AlfA@public.gmane.org>
2008-08-21 16:56 ` H. Peter Anvin
2008-08-21 17:28 ` Serge E. Hallyn
2008-08-21 17:45 ` Eric W. Biederman
[not found] ` <m1fxoys1ng.fsf-B27657KtZYmhTnVgQlOflh2eb7JE58TQ@public.gmane.org>
2008-08-21 21:02 ` Cedric Le Goater
[not found] ` <48ADD7D3.7080400-NmTC/0ZBporQT0dZR+AlfA@public.gmane.org>
2008-08-29 9:02 ` Cedric Le Goater
[not found] ` <48B7BB3C.5080404-NmTC/0ZBporQT0dZR+AlfA@public.gmane.org>
2008-09-02 3:04 ` Serge E. Hallyn
[not found] ` <20080902030426.GB12277-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2008-09-02 10:00 ` Eric W. Biederman
[not found] ` <m1vdxeeuk0.fsf-B27657KtZYmhTnVgQlOflh2eb7JE58TQ@public.gmane.org>
2008-09-02 15:52 ` Serge E. Hallyn
[not found] ` <20080902155211.GF8524-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2008-09-03 12:01 ` Cedric Le Goater
[not found] ` <48BE7C98.1040004-NmTC/0ZBporQT0dZR+AlfA@public.gmane.org>
2008-09-03 13:12 ` Eric W. Biederman
2008-09-03 13:41 ` Serge E. Hallyn
2008-09-03 11:47 ` Cedric Le Goater
[not found] ` <48BE7959.1080109-NmTC/0ZBporQT0dZR+AlfA@public.gmane.org>
2008-09-03 13:24 ` Serge E. Hallyn
2008-09-03 11:43 ` Cedric Le Goater
[not found] ` <48BE7845.6070500-NmTC/0ZBporQT0dZR+AlfA@public.gmane.org>
2008-09-03 13:23 ` Serge E. Hallyn
[not found] ` <20080903132307.GA9527-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2008-09-03 13:52 ` Cedric Le Goater
2008-09-02 9:22 ` Eric W. Biederman
[not found] ` <m1d4jmhpgl.fsf-B27657KtZYmhTnVgQlOflh2eb7JE58TQ@public.gmane.org>
2008-09-03 12:04 ` Cedric Le Goater
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20080821022719.GC29658@us.ibm.com \
--to=sukadev-r/jw6+rmf7hqt0dzr+alfa@public.gmane.org \
--cc=alan-qBU/x9rampVanCEyBjwyrvXRex20P6io@public.gmane.org \
--cc=bastian-yyjItF7Rl6lg9hUCZPvPmw@public.gmane.org \
--cc=containers-qjLDD68F18O7TbgM5vRIOg@public.gmane.org \
--cc=ebiederm-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org \
--cc=hpa-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org \
--cc=kyle-hoO6YkzgTuCM0SS3m2neIg@public.gmane.org \
--cc=xemul-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.