From: ebiederm@xmission.com (Eric W. Biederman)
To: Andrew Morton <akpm@linux-foundation.org>
Cc: "Serge E. Hallyn" <serge@hallyn.com>,
Albert Cahalan <acahalan@gmail.com>,
linux-kernel@vger.kernel.org, linux-mm@kvack.org,
torvalds@linux-foundation.org,
Badari Pulavarty <pbadari@us.ibm.com>
Subject: [PATCH] shm: Fix the filename of hugetlb sysv shared memory
Date: Fri, 08 Jun 2007 17:43:34 -0600 [thread overview]
Message-ID: <m1vedyqaft.fsf_-_@ebiederm.dsl.xmission.com> (raw)
In-Reply-To: <46697EDA.9000209@us.ibm.com> (Badari Pulavarty's message of "Fri, 08 Jun 2007 09:07:54 -0700")
Some user space tools need to identify SYSV shared memory when
examining /proc/<pid>/maps. To do so they look for a block device
with major zero, a dentry named SYSV<sysv key>, and having the minor of
the internal sysv shared memory kernel mount.
To help these tools and to make it easier for people just browsing
/proc/<pid>/maps this patch modifies hugetlb sysv shared memory to
use the SYSV<key> dentry naming convention.
User space tools will still have to be aware that hugetlb sysv
shared memory lives on a different internal kernel mount and so
has a different block device minor number from the rest of sysv
shared memory.
Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
---
fs/hugetlbfs/inode.c | 7 ++-----
include/linux/hugetlb.h | 4 ++--
ipc/shm.c | 6 +++---
3 files changed, 7 insertions(+), 10 deletions(-)
diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c
index aa083dd..e6b46b3 100644
--- a/fs/hugetlbfs/inode.c
+++ b/fs/hugetlbfs/inode.c
@@ -736,15 +736,13 @@ static int can_do_hugetlb_shm(void)
can_do_mlock());
}
-struct file *hugetlb_zero_setup(size_t size)
+struct file *hugetlb_file_setup(const char *name, size_t size)
{
int error = -ENOMEM;
struct file *file;
struct inode *inode;
struct dentry *dentry, *root;
struct qstr quick_string;
- char buf[16];
- static atomic_t counter;
if (!hugetlbfs_vfsmount)
return ERR_PTR(-ENOENT);
@@ -756,8 +754,7 @@ struct file *hugetlb_zero_setup(size_t size)
return ERR_PTR(-ENOMEM);
root = hugetlbfs_vfsmount->mnt_root;
- snprintf(buf, 16, "%u", atomic_inc_return(&counter));
- quick_string.name = buf;
+ quick_string.name = name;
quick_string.len = strlen(quick_string.name);
quick_string.hash = 0;
dentry = d_alloc(root, &quick_string);
diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h
index b4570b6..2c13715 100644
--- a/include/linux/hugetlb.h
+++ b/include/linux/hugetlb.h
@@ -163,7 +163,7 @@ static inline struct hugetlbfs_sb_info *HUGETLBFS_SB(struct super_block *sb)
extern const struct file_operations hugetlbfs_file_operations;
extern struct vm_operations_struct hugetlb_vm_ops;
-struct file *hugetlb_zero_setup(size_t);
+struct file *hugetlb_file_setup(const char *name, size_t);
int hugetlb_get_quota(struct address_space *mapping);
void hugetlb_put_quota(struct address_space *mapping);
@@ -185,7 +185,7 @@ static inline void set_file_hugepages(struct file *file)
#define is_file_hugepages(file) 0
#define set_file_hugepages(file) BUG()
-#define hugetlb_zero_setup(size) ERR_PTR(-ENOSYS)
+#define hugetlb_file_setup(name,size) ERR_PTR(-ENOSYS)
#endif /* !CONFIG_HUGETLBFS */
diff --git a/ipc/shm.c b/ipc/shm.c
index 4fefbad..c31f743 100644
--- a/ipc/shm.c
+++ b/ipc/shm.c
@@ -364,9 +364,10 @@ static int newseg (struct ipc_namespace *ns, key_t key, int shmflg, size_t size)
return error;
}
+ sprintf (name, "SYSV%08x", key);
if (shmflg & SHM_HUGETLB) {
- /* hugetlb_zero_setup takes care of mlock user accounting */
- file = hugetlb_zero_setup(size);
+ /* hugetlb_file_setup takes care of mlock user accounting */
+ file = hugetlb_file_setup(name, size);
shp->mlock_user = current->user;
} else {
int acctflag = VM_ACCOUNT;
@@ -377,7 +378,6 @@ static int newseg (struct ipc_namespace *ns, key_t key, int shmflg, size_t size)
if ((shmflg & SHM_NORESERVE) &&
sysctl_overcommit_memory != OVERCOMMIT_NEVER)
acctflag = 0;
- sprintf (name, "SYSV%08x", key);
file = shmem_file_setup(name, size, acctflag);
}
error = PTR_ERR(file);
--
1.5.1.1.181.g2de0
next prev parent reply other threads:[~2007-06-08 23:45 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-06-07 3:27 [RFC][PATCH] /proc/pid/maps doesn't match "ipcs -m" shmid Albert Cahalan
2007-06-07 3:44 ` Andrew Morton
2007-06-07 4:53 ` Albert Cahalan
2007-06-07 16:20 ` Serge E. Hallyn
2007-06-08 3:45 ` Eric W. Biederman
2007-06-08 4:41 ` Albert Cahalan
2007-06-08 5:55 ` Eric W. Biederman
2007-06-08 6:51 ` Albert Cahalan
2007-06-08 22:31 ` [PATCH] Restore shmid as inode# to fix /proc/pid/maps ABI breakage Badari Pulavarty
2007-06-08 16:07 ` [RFC][PATCH] /proc/pid/maps doesn't match "ipcs -m" shmid Badari Pulavarty
2007-06-08 23:43 ` Eric W. Biederman [this message]
2007-06-08 23:55 ` [PATCH] shm: Fix the filename of hugetlb sysv shared memory Andrew Morton
2007-06-09 4:32 ` Badari Pulavarty
2007-06-09 8:01 ` Eric W. Biederman
2007-06-11 18:11 ` Andrew Morton
2007-06-11 19:55 ` Badari Pulavarty
2007-06-11 19:00 ` Adam Litke
2007-06-11 20:53 ` Ken Chen
2007-06-07 16:23 ` [RFC][PATCH] /proc/pid/maps doesn't match "ipcs -m" shmid Badari Pulavarty
2007-06-07 16:43 ` Albert Cahalan
2007-06-07 17:06 ` Badari Pulavarty
2007-06-07 19:48 ` Andrew Morton
2007-06-07 19:59 ` Badari Pulavarty
2007-06-07 20:37 ` Serge E. Hallyn
2007-06-07 20:51 ` Serge E. Hallyn
2007-06-07 21:16 ` Badari Pulavarty
2007-06-07 22:08 ` Serge E. Hallyn
2007-06-07 22:21 ` Badari Pulavarty
2007-06-07 22:22 ` Serge E. Hallyn
2007-06-07 23:57 ` Badari Pulavarty
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=m1vedyqaft.fsf_-_@ebiederm.dsl.xmission.com \
--to=ebiederm@xmission.com \
--cc=acahalan@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=pbadari@us.ibm.com \
--cc=serge@hallyn.com \
--cc=torvalds@linux-foundation.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox