Messages in this thread | | | Date | Thu, 7 Jun 2007 11:20:04 -0500 | From | "Serge E. Hallyn" <> | Subject | Re: [RFC][PATCH] /proc/pid/maps doesn't match "ipcs -m" shmid |
| |
Quoting Albert Cahalan (acahalan@gmail.com): > On 6/6/07, Andrew Morton <akpm@linux-foundation.org> wrote: > >On Wed, 6 Jun 2007 23:27:01 -0400 "Albert Cahalan" <acahalan@gmail.com> > >wrote: > >> Eric W. Biederman writes: > >> > Badari Pulavarty <pbadari@us.ibm.com> writes: > >> > >> >> Your recent cleanup to shm code, namely > >> >> > >> >> [PATCH] shm: make sysv ipc shared memory use stacked files > >> >> > >> >> took away one of the debugging feature for shm segments. > >> >> Originally, shmid were forced to be the inode numbers and > >> >> they show up in /proc/pid/maps for the process which mapped > >> >> this shared memory segments (vma listing). That way, its easy > >> >> to find out who all mapped this shared memory segment. Your > >> >> patchset, took away the inode# setting. So, we can't easily > >> >> match the shmem segments to /proc/pid/maps easily. (It was > >> >> really useful in tracking down a customer problem recently). > >> >> Is this done deliberately ? Anything wrong in setting this back ? > >> > > >> > Theoretically it makes the stacked file concept more brittle, > >> > because it means the lower layers can't care about their inode > >> > number. > >> > > >> > We do need something to tie these things together. > >> > > >> > So I suspect what makes most sense is to simply rename the > >> > dentry SYSVID<segmentid> > >> > >> Please stop breaking things in /proc. The pmap command relys > >> on the old behavior. > > > >What effect did this change have upon the pmap command? Details, please. > > > >> It's time to revert. > > > >Probably true, but we'd need to understand what the impact was. > > Very simply, pmap reports the shmid. > > albert 0 ~$ pmap `pidof X` | egrep -2 shmid > 30050000 16384K rw-s- /dev/fb0 > 31050000 152K rw--- [ anon ] > 31076000 384K rw-s- [ shmid=0x3f428000 ] > 310d6000 384K rw-s- [ shmid=0x3f430001 ] > 31136000 384K rw-s- [ shmid=0x3f438002 ] > 31196000 384K rw-s- [ shmid=0x3f440003 ] > 311f6000 384K rw-s- [ shmid=0x3f448004 ] > 31256000 384K rw-s- [ shmid=0x3f450005 ] > 312b6000 384K rw-s- [ shmid=0x3f460006 ] > 31316000 384K rw-s- [ shmid=0x3f870007 ] > 31491000 140K r---- /usr/share/fonts/type1/gsfonts/n021003l.pfb > 3150e000 9496K rw--- [ anon ]
Ok, so IIUC the problem was that inode->i_ino was being set to the id, and the id can be the same for different things in two namespaces.
So aside from not using the id as inode->i_ino, an alternative is to use a separate superblock, spearate mqeueue fs, for each ipc ns.
I haven't looked at that enough to see whether it's feasible, i.e. I don't know what else mqueue fs is used for. Eric, does that sound reasonable to you?
thanks, -serge - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |