* [GIT PATCH] Remove devfs from 2.6.17
@ 2006-06-18 22:13 Greg KH
2006-06-18 22:45 ` Michal Piotrowski
2006-06-18 23:00 ` Samuel Thibault
0 siblings, 2 replies; 21+ messages in thread
From: Greg KH @ 2006-06-18 22:13 UTC (permalink / raw)
To: Linus Torvalds, Andrew Morton; +Cc: linux-kernel, greg
They are the same "delete devfs" patches that I submitted for 2.6.12 and
2.6.13 and 2.6.14 and 2.6.15 and 2.6.16. It rips out all of devfs from
the kernel and ends up saving a lot of space. Since 2.6.13 came out, I
have seen no complaints about the fact that devfs was not able to be
enabled anymore, and in fact, a lot of different subsystems have already
been deleting devfs support for a while now, with apparently no
complaints (due to the lack of users.)
This patchset has also been in the -mm tree, with no complaints or
issues for the past few months.
It's also been almost a full year past the date when we said we would
delete devfs from the kernel tree in the file,
Documentation/feature-removal-schedule.txt, almost two years since we
publicly announced to the world that devfs would be removed from the
kernel tree. So I think people have had plenty of advance notice that
this was going to happen by now :)
Please pull from:
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/devfs-2.6.git/
or if master.kernel.org hasn't synced up yet:
master.kernel.org:/pub/scm/linux/kernel/git/gregkh/devfs-2.6.git/
I've posted all of these patches before, but if people really want to look at them, they can be found at:
http://www.kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/gregkh-05-devfs/
Also, if people _really_ are in love with the idea of an in-kernel
devfs, I have posted a patch that does this in about 300 lines of code,
called ndevfs. It is available in the archives if anyone wants to use
that instead (it is quite easy to maintain that patch outside of the
kernel tree, due to it only needing 3 hooks into the main kernel tree.)
thanks,
greg k-h
Documentation/Changes | 15
Documentation/DocBook/kernel-api.tmpl | 5
Documentation/README.DAC960 | 6
Documentation/feature-removal-schedule.txt | 11
Documentation/filesystems/devfs/ChangeLog | 1977 ---------------
Documentation/filesystems/devfs/README | 1959 ---------------
Documentation/filesystems/devfs/ToDo | 40
Documentation/filesystems/devfs/boot-options | 65
Documentation/initrd.txt | 24
Documentation/ioctl-number.txt | 1
Documentation/kernel-parameters.txt | 4
arch/cris/arch-v10/kernel/debugport.c | 2
arch/cris/arch-v32/kernel/debugport.c | 2
arch/i386/kernel/microcode.c | 1
arch/ppc/4xx_io/serial_sicc.c | 2
arch/sh/kernel/cpu/sh4/sq.c | 1
arch/sparc64/solaris/socksys.c | 4
arch/um/drivers/line.c | 2
arch/um/drivers/ssl.c | 1
arch/um/drivers/stdio_console.c | 1
arch/um/drivers/ubd_kern.c | 18
arch/um/include/line.h | 1
drivers/block/DAC960.c | 1
drivers/block/acsi.c | 5
drivers/block/acsi_slm.c | 10
drivers/block/cciss.c | 1
drivers/block/cpqarray.c | 5
drivers/block/floppy.c | 55
drivers/block/loop.c | 6
drivers/block/nbd.c | 5
drivers/block/paride/pg.c | 18
drivers/block/paride/pt.c | 21
drivers/block/pktcdvd.c | 1
drivers/block/ps2esdi.c | 1
drivers/block/rd.c | 5
drivers/block/swim3.c | 4
drivers/block/sx8.c | 5
drivers/block/ub.c | 6
drivers/block/umem.c | 1
drivers/block/viodasd.c | 3
drivers/block/xd.c | 1
drivers/block/z2ram.c | 1
drivers/cdrom/aztcd.c | 1
drivers/cdrom/cdu31a.c | 1
drivers/cdrom/cm206.c | 1
drivers/cdrom/gscd.c | 1
drivers/cdrom/mcdx.c | 1
drivers/cdrom/optcd.c | 1
drivers/cdrom/sbpcd.c | 6
drivers/cdrom/sjcd.c | 1
drivers/cdrom/sonycd535.c | 1
drivers/cdrom/viocd.c | 3
drivers/char/cyclades.c | 1
drivers/char/dsp56k.c | 10
drivers/char/dtlk.c | 5
drivers/char/epca.c | 1
drivers/char/esp.c | 1
drivers/char/ftape/zftape/zftape-init.c | 25
drivers/char/hvc_console.c | 1
drivers/char/hvcs.c | 1
drivers/char/hvsi.c | 1
drivers/char/ip2/ip2main.c | 24
drivers/char/ipmi/ipmi_devintf.c | 8
drivers/char/isicom.c | 1
drivers/char/istallion.c | 13
drivers/char/lp.c | 7
drivers/char/mem.c | 6
drivers/char/misc.c | 15
drivers/char/mmtimer.c | 2
drivers/char/moxa.c | 1
drivers/char/ppdev.c | 15
drivers/char/pty.c | 8
drivers/char/raw.c | 15
drivers/char/riscom8.c | 1
drivers/char/rocket.c | 5
drivers/char/serial167.c | 1
drivers/char/stallion.c | 14
drivers/char/tipar.c | 17
drivers/char/tty_io.c | 17
drivers/char/vc_screen.c | 11
drivers/char/viocons.c | 1
drivers/char/viotape.c | 10
drivers/char/vme_scc.c | 1
drivers/char/vt.c | 2
drivers/ide/ide-cd.c | 2
drivers/ide/ide-disk.c | 2
drivers/ide/ide-floppy.c | 1
drivers/ide/ide-probe.c | 11
drivers/ide/ide-tape.c | 12
drivers/ide/ide.c | 10
drivers/input/serio/serio_raw.c | 1
drivers/isdn/capi/capi.c | 5
drivers/isdn/gigaset/bas-gigaset.c | 4
drivers/isdn/gigaset/common.c | 4
drivers/isdn/gigaset/gigaset.h | 3
drivers/isdn/gigaset/interface.c | 6
drivers/isdn/gigaset/usb-gigaset.c | 4
drivers/isdn/hardware/eicon/divamnt.c | 3
drivers/isdn/hardware/eicon/divasi.c | 3
drivers/isdn/hardware/eicon/divasmain.c | 3
drivers/isdn/i4l/isdn_tty.c | 3
drivers/macintosh/adb.c | 3
drivers/md/dm-ioctl.c | 30
drivers/md/dm.c | 2
drivers/md/md.c | 30
drivers/media/dvb/dvb-core/dvbdev.c | 13
drivers/media/dvb/dvb-core/dvbdev.h | 1
drivers/media/dvb/ttpci/av7110.h | 4
drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c | 11
drivers/media/radio/miropcm20-rds.c | 1
drivers/media/video/arv.c | 1
drivers/media/video/videodev.c | 8
drivers/message/i2o/i2o_block.c | 1
drivers/mmc/mmc_block.c | 4
drivers/net/ppp_generic.c | 9
drivers/net/tun.c | 1
drivers/net/wan/cosa.c | 14
drivers/s390/block/dasd.c | 4
drivers/s390/block/dasd_genhd.c | 2
drivers/s390/block/dasd_int.h | 1
drivers/s390/block/xpram.c | 6
drivers/s390/char/monreader.c | 1
drivers/s390/char/tty3270.c | 3
drivers/s390/crypto/z90main.c | 1
drivers/s390/net/ctctty.c | 2
drivers/sbus/char/bpp.c | 9
drivers/sbus/char/vfc.h | 2
drivers/sbus/char/vfc_dev.c | 7
drivers/serial/21285.c | 1
drivers/serial/8250.c | 1
drivers/serial/at91_serial.c | 1
drivers/serial/crisv10.c | 2
drivers/serial/dz.c | 4
drivers/serial/imx.c | 1
drivers/serial/ip22zilog.c | 1
drivers/serial/m32r_sio.c | 1
drivers/serial/mcfserial.c | 1
drivers/serial/mpc52xx_uart.c | 1
drivers/serial/mpsc.c | 2
drivers/serial/pmac_zilog.c | 1
drivers/serial/pxa.c | 1
drivers/serial/s3c2410.c | 2
drivers/serial/sa1100.c | 1
drivers/serial/serial_core.c | 5
drivers/serial/serial_txx9.c | 3
drivers/serial/sh-sci.c | 3
drivers/serial/sunhv.c | 1
drivers/serial/sunsab.c | 1
drivers/serial/sunsu.c | 1
drivers/serial/sunzilog.c | 1
drivers/serial/v850e_uart.c | 1
drivers/serial/vr41xx_siu.c | 1
drivers/tc/zs.c | 3
drivers/telephony/phonedev.c | 4
drivers/usb/class/cdc-acm.c | 3
drivers/usb/gadget/serial.c | 3
drivers/usb/serial/usb-serial.c | 3
drivers/video/fbmem.c | 5
fs/Makefile | 1
fs/block_dev.c | 1
fs/char_dev.c | 1
fs/coda/psdev.c | 23
fs/compat_ioctl.c | 1
fs/devfs/Makefile | 8
fs/devfs/base.c | 2836 ----------------------
fs/devfs/util.c | 97
fs/partitions/Makefile | 1
fs/partitions/check.c | 32
fs/partitions/devfs.c | 130 -
fs/partitions/devfs.h | 10
include/asm-ppc/ocp.h | 1
include/linux/compat_ioctl.h | 5
include/linux/devfs_fs.h | 41
include/linux/devfs_fs_kernel.h | 58
include/linux/fb.h | 1
include/linux/genhd.h | 2
include/linux/ide.h | 1
include/linux/miscdevice.h | 1
include/linux/serial_core.h | 1
include/linux/tty_driver.h | 14
include/linux/videodev2.h | 1
init/Makefile | 1
init/do_mounts.c | 8
init/do_mounts.h | 16
init/do_mounts_devfs.c | 137 -
init/do_mounts_initrd.c | 6
init/do_mounts_md.c | 7
init/do_mounts_rd.c | 4
init/main.c | 1
mm/shmem.c | 5
mm/tiny-shmem.c | 4
net/bluetooth/rfcomm/tty.c | 3
net/irda/ircomm/ircomm_tty.c | 1
net/irda/irnet/irnet.h | 1
sound/core/info.c | 1
sound/core/sound.c | 24
sound/oss/soundcard.c | 16
sound/sound_core.c | 6
198 files changed, 96 insertions(+), 8274 deletions(-)
---------------
Greg Kroah-Hartman:
devfs: Remove devfs from the kernel tree
devfs: Remove devfs documentation from the kernel tree
devfs: Remove devfs from the partition code
devfs: Remove devfs from the init code
devfs: Remove devfs support from the serial subsystem
devfs: Remove devfs support from the ide subsystem.
devfs: Remove devfs support from the sound subsystem
devfs: Remove devfs_*_tape() functions from the kernel tree
devfs: Remove devfs_mk_dir() function from the kernel tree
devfs: Remove devfs_mk_symlink() function from the kernel tree
devfs: Remove devfs_mk_bdev() function from the kernel tree
devfs: Remove devfs_mk_cdev() function from the kernel tree
devfs: Remove devfs_remove() function from the kernel tree
devfs: Remove the devfs_fs_kernel.h file from the tree
devfs: Remove the miscdevice devfs_name field as it's no longer needed
devfs: Remove the gendisk devfs_name field as it's no longer needed
devfs: Remove the videodevice devfs_name field as it's no longer needed
devfs: Remove the line_driver devfs_name field as it's no longer needed
devfs: Remove the tty_driver devfs_name field as it's no longer needed
devfs: Rename TTY_DRIVER_NO_DEVFS to TTY_DRIVER_DYNAMIC_DEV
devfs: Last little devfs cleanups throughout the kernel tree.
devfs: Remove it from the feature_removal.txt file
^ permalink raw reply [flat|nested] 21+ messages in thread* Re: [GIT PATCH] Remove devfs from 2.6.17 2006-06-18 22:13 [GIT PATCH] Remove devfs from 2.6.17 Greg KH @ 2006-06-18 22:45 ` Michal Piotrowski 2006-06-18 23:06 ` Greg KH 2006-06-18 23:00 ` Samuel Thibault 1 sibling, 1 reply; 21+ messages in thread From: Michal Piotrowski @ 2006-06-18 22:45 UTC (permalink / raw) To: Greg KH; +Cc: Linus Torvalds, Andrew Morton, linux-kernel, greg Hi Greg, On 19/06/06, Greg KH <gregkh@suse.de> wrote: [snip] > I've posted all of these patches before, but if people really want to look at them, they can be found at: > http://www.kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/gregkh-05-devfs/ > devfs-remove-devfs_fs_kernel.h.patch doesn't apply clean. [michal@ltg01-fedora linux-work2]$ quilt push devfs-feature-removal.patch Applying patch patches/devfs-die-die-die.patch patching file fs/Makefile patching file fs/compat_ioctl.c [..] patching file drivers/video/fbmem.c patching file fs/coda/psdev.c patching file fs/partitions/check.c Hunk #1 FAILED at 320. 1 out of 1 hunk FAILED -- rejects in file fs/partitions/check.c patching file include/linux/devfs_fs_kernel.h Patch patches/devfs-remove-devfs_remove.patch does not apply (enforce with -f) Regards, Michal -- Michal K. K. Piotrowski LTG - Linux Testers Group (http://www.stardust.webpages.pl/ltg/wiki/) ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [GIT PATCH] Remove devfs from 2.6.17 2006-06-18 22:45 ` Michal Piotrowski @ 2006-06-18 23:06 ` Greg KH 0 siblings, 0 replies; 21+ messages in thread From: Greg KH @ 2006-06-18 23:06 UTC (permalink / raw) To: Michal Piotrowski; +Cc: Linus Torvalds, Andrew Morton, linux-kernel, greg On Mon, Jun 19, 2006 at 12:45:16AM +0200, Michal Piotrowski wrote: > Hi Greg, > > On 19/06/06, Greg KH <gregkh@suse.de> wrote: > [snip] > >I've posted all of these patches before, but if people really want to look > >at them, they can be found at: > > http://www.kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/gregkh-05-devfs/ > > > > devfs-remove-devfs_fs_kernel.h.patch doesn't apply clean. > > [michal@ltg01-fedora linux-work2]$ quilt push devfs-feature-removal.patch > Applying patch patches/devfs-die-die-die.patch > patching file fs/Makefile > patching file fs/compat_ioctl.c > [..] > patching file drivers/video/fbmem.c > patching file fs/coda/psdev.c > patching file fs/partitions/check.c > Hunk #1 FAILED at 320. > 1 out of 1 hunk FAILED -- rejects in file fs/partitions/check.c > patching file include/linux/devfs_fs_kernel.h > Patch patches/devfs-remove-devfs_remove.patch does not apply (enforce with > -f) You need to have the other patches in my quilt tree in order to be able to apply this one from the kernel.org directory. I fixed this up by hand for the git tree that I pointed Linus at. thanks, greg k-h ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [GIT PATCH] Remove devfs from 2.6.17 2006-06-18 22:13 [GIT PATCH] Remove devfs from 2.6.17 Greg KH 2006-06-18 22:45 ` Michal Piotrowski @ 2006-06-18 23:00 ` Samuel Thibault 2006-06-18 23:12 ` Greg KH 2006-06-19 0:54 ` H. Peter Anvin 1 sibling, 2 replies; 21+ messages in thread From: Samuel Thibault @ 2006-06-18 23:00 UTC (permalink / raw) To: Greg KH; +Cc: Linus Torvalds, Andrew Morton, linux-kernel, greg Greg KH, le Sun 18 Jun 2006 15:13:43 -0700, a écrit : > Since 2.6.13 came out, I have seen no complaints about the fact that > devfs was not able to be enabled anymore, There has been at least my complaint about udev not being able to auto-load modules on /dev entry lookup (28th March 2006): « Given a freshly booted linux box, hence uinput is not loaded (why would it be, it doesn't drive any real hardware) ; what is the right way(tm) for an application to have the uinput module loaded, so that it can open /dev/input/uinput for emulating keypresses? - With good-old static /dev, we could just open /dev/input/uinput (installed by the distribution), and thanks to a alias char-major-10-223 uinput line somewhere in /etc/modprobe.d, uinput gets auto-loaded. - With devfs, it doesn't look like it works (/dev/misc/uinput is not present and opening it just like if it existed doesn't work). But I read in archives that it could be feasible. - With udev, this just cannot work. As explained in an earlier thread, even using a special filesystem that would report the opening attempt to udevd wouldn't work fine since udevd takes time for creating the device, and hence the original program needs to be notified ; this becomes racy. So what is the correct way to do it? I can see two approaches: Using modprobe: - try to use /dev/input/uinput ; if it succeeds, fine. - else, if errno != ENOENT, fail - else, (ENOENT) - try to call `cat /proc/sys/kernel/modprobe` uinput - try to use /dev/input/uinput again ; if it succeeds, fine - else, assume that it really wasn't compiled, and hence fail. Triggering auto-load by creating one's own node. - try to use /dev/input/uinput ; if it suceeds, fine. - else, if errno != ENOENT, fail - else, (ENOENT) - mknod /somewhere/safe/uinput c 10 223 - use /somewhere/safe/uinput ; if it succeeds, fine - else, assume that it really wasn't compiled, and hence fail. » Neither solution looks good to me... Just opening /dev/input/uinput should be sufficient, and udev doesn't let that for now. The same situation holds for other virtual devices (loop, snd-seq-dummy, ...). Samuel ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [GIT PATCH] Remove devfs from 2.6.17 2006-06-18 23:00 ` Samuel Thibault @ 2006-06-18 23:12 ` Greg KH 2006-06-18 23:35 ` Samuel Thibault 2006-06-19 0:54 ` H. Peter Anvin 1 sibling, 1 reply; 21+ messages in thread From: Greg KH @ 2006-06-18 23:12 UTC (permalink / raw) To: Samuel Thibault, Linus Torvalds, Andrew Morton, linux-kernel, greg On Mon, Jun 19, 2006 at 01:00:41AM +0200, Samuel Thibault wrote: > Greg KH, le Sun 18 Jun 2006 15:13:43 -0700, a ?crit : > > Since 2.6.13 came out, I have seen no complaints about the fact that > > devfs was not able to be enabled anymore, > > There has been at least my complaint about udev not being able to > auto-load modules on /dev entry lookup (28th March 2006): > > ??Given a freshly booted linux box, hence uinput is not loaded (why > would it be, it doesn't drive any real hardware) ; what is the right > way(tm) for an application to have the uinput module loaded, so that it > can open /dev/input/uinput for emulating keypresses? > > - With good-old static /dev, we could just open /dev/input/uinput > (installed by the distribution), and thanks to a > alias char-major-10-223 uinput > line somewhere in /etc/modprobe.d, uinput gets auto-loaded. > > - With devfs, it doesn't look like it works (/dev/misc/uinput is not > present and opening it just like if it existed doesn't work). But I > read in archives that it could be feasible. But I don't think it ever worked, as you stated. > - With udev, this just cannot work. As explained in an earlier thread, > even using a special filesystem that would report the opening attempt > to udevd wouldn't work fine since udevd takes time for creating the > device, and hence the original program needs to be notified ; this > becomes racy. > > So what is the correct way to do it? I can see two approaches: You forgot: - use a static /dev if you want this. No one is forcing you to use udev :) > Using modprobe: > - try to use /dev/input/uinput ; if it succeeds, fine. > - else, if errno != ENOENT, fail > - else, (ENOENT) > - try to call `cat /proc/sys/kernel/modprobe` uinput > - try to use /dev/input/uinput again ; if it succeeds, fine > - else, assume that it really wasn't compiled, and hence fail. > > Triggering auto-load by creating one's own node. > - try to use /dev/input/uinput ; if it suceeds, fine. > - else, if errno != ENOENT, fail > - else, (ENOENT) > - mknod /somewhere/safe/uinput c 10 223 > - use /somewhere/safe/uinput ; if it succeeds, fine > - else, assume that it really wasn't compiled, and hence fail. > ? > > Neither solution looks good to me... Just opening /dev/input/uinput > should be sufficient, and udev doesn't let that for now. No, just do what the distros that use udev do today, load the needed modules at boot time, based on the hardware that is present in the system. This should work just fine for the uinput driver, and if not, simply add it to the list of modules that need to be loaded every boot (each distro has a different place to put this list), and you should be fine. Please realize that the method of loading a module based on the device node number is very restrictive, and only works for a small minority of drivers. This is due to the wide range of hardware sharing device nodes (do you want to load all of the possible sound drivers when you touch the sound device node?, no, you just want it "to work automatically", which is what happens today at boot time with udev.) > The same situation holds for other virtual devices (loop, snd-seq-dummy, > ...). Yes, look at how the distros do this today for loop, they merely load it at boot time and everyone's happy. And this whole thing has nothing to do with devfs, as you stated above :) thanks, greg k-h ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [GIT PATCH] Remove devfs from 2.6.17 2006-06-18 23:12 ` Greg KH @ 2006-06-18 23:35 ` Samuel Thibault 2006-06-19 0:48 ` Nick Piggin 2006-06-19 3:22 ` Greg KH 0 siblings, 2 replies; 21+ messages in thread From: Samuel Thibault @ 2006-06-18 23:35 UTC (permalink / raw) To: Greg KH; +Cc: Linus Torvalds, Andrew Morton, linux-kernel, greg Hi, Greg KH, le Sun 18 Jun 2006 16:12:04 -0700, a écrit : > On Mon, Jun 19, 2006 at 01:00:41AM +0200, Samuel Thibault wrote: > > - With udev, this just cannot work. As explained in an earlier thread, > > even using a special filesystem that would report the opening attempt > > to udevd wouldn't work fine since udevd takes time for creating the > > device, and hence the original program needs to be notified ; this > > becomes racy. > > > > So what is the correct way to do it? I can see two approaches: > > You forgot: > - use a static /dev if you want this. > No one is forcing you to use udev :) I can't choose the preference of the users of my program. > > Neither solution looks good to me... Just opening /dev/input/uinput > > should be sufficient, and udev doesn't let that for now. > > No, just do what the distros that use udev do today, load the needed > modules at boot time, based on the hardware that is present in the > system. This should work just fine for the uinput driver, No hardware correspond to the uinput driver. > and if not, simply add it to the list of modules that need to be > loaded every boot (each distro has a different place to put this > list), and you should be fine. I can't ask the users of my program to do that either (actually, they can't even do this, since they need uinput for just being able to type things on the console...) > Please realize that the method of loading a module based on the device > node number is very restrictive, and only works for a small minority of > drivers. Agreed. But here, what is best? To explicitely load a "uinput" module or to explicitely open "/dev/input/uinput" ? > > The same situation holds for other virtual devices (loop, snd-seq-dummy, > > ...). > > Yes, look at how the distros do this today for loop, they merely load it > at boot time and everyone's happy. So distributions should load every possible virtual device? In the debian case, it doesn't, but udev has a links.conf script that creates a /dev/loop/0 entry, which losetup can open when looking for loop block devices, and hence the loop module gets auto-loaded. This is the behavior I'd expect. > And this whole thing has nothing to do with devfs, as you stated above > :) Ok, but devfs had let me some hope that it would work, and udev doesn't so much (the abovementioned links.conf file is considered hacky). Samuel ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [GIT PATCH] Remove devfs from 2.6.17 2006-06-18 23:35 ` Samuel Thibault @ 2006-06-19 0:48 ` Nick Piggin 2006-06-19 3:22 ` Greg KH 1 sibling, 0 replies; 21+ messages in thread From: Nick Piggin @ 2006-06-19 0:48 UTC (permalink / raw) To: Samuel Thibault Cc: Greg KH, Linus Torvalds, Andrew Morton, linux-kernel, greg Samuel Thibault wrote: > Hi, > > Greg KH, le Sun 18 Jun 2006 16:12:04 -0700, a écrit : > >>And this whole thing has nothing to do with devfs, as you stated above >>:) > > > Ok, but devfs had let me some hope that it would work, and udev doesn't > so much (the abovementioned links.conf file is considered hacky). Could you do it with FUSE? -- SUSE Labs, Novell Inc. Send instant messages to your online friends http://au.messenger.yahoo.com ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [GIT PATCH] Remove devfs from 2.6.17 2006-06-18 23:35 ` Samuel Thibault 2006-06-19 0:48 ` Nick Piggin @ 2006-06-19 3:22 ` Greg KH 2006-06-19 8:23 ` Samuel Thibault 1 sibling, 1 reply; 21+ messages in thread From: Greg KH @ 2006-06-19 3:22 UTC (permalink / raw) To: Samuel Thibault, Linus Torvalds, Andrew Morton, linux-kernel, greg On Mon, Jun 19, 2006 at 01:35:08AM +0200, Samuel Thibault wrote: > Hi, > > Greg KH, le Sun 18 Jun 2006 16:12:04 -0700, a ?crit : > > On Mon, Jun 19, 2006 at 01:00:41AM +0200, Samuel Thibault wrote: > > > - With udev, this just cannot work. As explained in an earlier thread, > > > even using a special filesystem that would report the opening attempt > > > to udevd wouldn't work fine since udevd takes time for creating the > > > device, and hence the original program needs to be notified ; this > > > becomes racy. > > > > > > So what is the correct way to do it? I can see two approaches: > > > > You forgot: > > - use a static /dev if you want this. > > No one is forcing you to use udev :) > > I can't choose the preference of the users of my program. > > > > Neither solution looks good to me... Just opening /dev/input/uinput > > > should be sufficient, and udev doesn't let that for now. > > > > No, just do what the distros that use udev do today, load the needed > > modules at boot time, based on the hardware that is present in the > > system. This should work just fine for the uinput driver, > > No hardware correspond to the uinput driver. I'm not familiar with the uinput driver, but you might want to look at how all of the other input drivers are autoloaded by udev based on module aliases and see if that will work for you too. Or just tell your users to make sure that they have the uinput driver loaded, and look into the distro's documentation for how to have it automatically loaded at boot time (they all provide this functionality for modules that don't have a hardware backing device.) > > and if not, simply add it to the list of modules that need to be > > loaded every boot (each distro has a different place to put this > > list), and you should be fine. > > I can't ask the users of my program to do that either (actually, they > can't even do this, since they need uinput for just being able to type > things on the console...) I'm not aware of what your program is, but why not do it for them in your program startup logic (yes, it requires root access, but that's a requirement). > > Please realize that the method of loading a module based on the device > > node number is very restrictive, and only works for a small minority of > > drivers. > > Agreed. But here, what is best? To explicitely load a "uinput" module or > to explicitely open "/dev/input/uinput" ? Well as trying to open /dev/input/uinput will not cause anything to load anymore (due to devfs not doing this, and udev systems not allowing this to happen), I suggest loading the uinput module. > > > The same situation holds for other virtual devices (loop, snd-seq-dummy, > > > ...). > > > > Yes, look at how the distros do this today for loop, they merely load it > > at boot time and everyone's happy. > > So distributions should load every possible virtual device? Within reason, it seems like they do at times. > In the debian case, it doesn't, but udev has a links.conf script that > creates a /dev/loop/0 entry, which losetup can open when looking for > loop block devices, and hence the loop module gets auto-loaded. This is > the behavior I'd expect. Perhaps you can just create a uinput script that does this. Or just add that device node to the /lib/udev/devices/ directory, and it will be restored at every boot, then when your user opens it, the proper module will be automatically loaded. That is what that directory is there for (as well as for device nodes that don't play nice with udev or can't for whatever reason.) > > And this whole thing has nothing to do with devfs, as you stated above > > :) > > Ok, but devfs had let me some hope that it would work, and udev doesn't > so much (the abovementioned links.conf file is considered hacky). As devfs has not been maintained in over 4 years, I don't see how not removing it will help this situation out at all for you, sorry. I suggest taking this topic to the linux-hotplug-devel mailing list if you still have issues loading the uinput module at boot time for your systems that run udev. thanks, greg k-h ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [GIT PATCH] Remove devfs from 2.6.17 2006-06-19 3:22 ` Greg KH @ 2006-06-19 8:23 ` Samuel Thibault 2006-06-19 9:30 ` Marcel Holtmann 0 siblings, 1 reply; 21+ messages in thread From: Samuel Thibault @ 2006-06-19 8:23 UTC (permalink / raw) To: Greg KH; +Cc: linux-kernel, greg, linux-hotplug-devel Hi, Greg KH, le Sun 18 Jun 2006 20:22:59 -0700, a écrit : > > No hardware correspond to the uinput driver. > > I'm not familiar with the uinput driver, but you might want to look at > how all of the other input drivers are autoloaded by udev based on > module aliases and see if that will work for you too. They're autoloaded because they correspond to real hardware. uinput doesn't. > Or just tell your users to make sure that they have the uinput driver > loaded, They can't, since without it they can't even type things. > > > and if not, simply add it to the list of modules that need to be > > > loaded every boot (each distro has a different place to put this > > > list), and you should be fine. > > > > I can't ask the users of my program to do that either (actually, they > > can't even do this, since they need uinput for just being able to type > > things on the console...) > > I'm not aware of what your program is, It's a daemon for letting blind user use their braille device as output device and keyboard. And for beginners this is yet-another-difficult-thing-to-remember-to-do-after-installation. > but why not do it for them in your program startup logic (yes, it > requires root access, but that's a requirement). That's what we actually do. The root requirement is not a problem since the program needs to be able to read the console anyway. But the root requirement _is_ a problem for other cases. When I want to use a soft synthesizer (qsynth) for midi applications for instance (because my soundboard has no synth), I have to modprobe snd-seq-dummy as root, which is tedious (yes I could have it always auto-loaded), while I could very well have configured an alias between /dev/snd/seq and snd-seq-dummy, so that just running qsynth as user would just work. > > > Please realize that the method of loading a module based on the device > > > node number is very restrictive, and only works for a small minority of > > > drivers. > > > > Agreed. But here, what is best? To explicitely load a "uinput" module or > > to explicitely open "/dev/input/uinput" ? > > Well as trying to open /dev/input/uinput will not cause anything to load > anymore (due to devfs not doing this, and udev systems not allowing this > to happen), I suggest loading the uinput module. That's what we ended up to do. In this case, this is fine (since only one module provides the uinput facility), but in the "seq" case explained above, this can't work (the qsynth application can't know whether it should load alsa's dummy device or oss's or...) > > > > The same situation holds for other virtual devices (loop, snd-seq-dummy, > > > > ...). > > > > > > Yes, look at how the distros do this today for loop, they merely load it > > > at boot time and everyone's happy. > > > > So distributions should load every possible virtual device? > > Within reason, it seems like they do at times. I can see at least dummy_hcd, loop, snd-seq-dummy, snd-dummy, dummy (net driver), dummycon, and uinput. This might put quite a lot of confusion in user's mind ("Oh? I have a USB host?!"). > > In the debian case, it doesn't, but udev has a links.conf script that > > creates a /dev/loop/0 entry, which losetup can open when looking for > > loop block devices, and hence the loop module gets auto-loaded. This is > > the behavior I'd expect. > > Perhaps you can just create a uinput script that does this. That's fine for me, but as I said this is considered hacky (the header of links.conf is "This file does not exist. Please do not ask the debian maintainer about it. You may use it to do strange and wonderful things, at your risk.") Samuel ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [GIT PATCH] Remove devfs from 2.6.17 2006-06-19 8:23 ` Samuel Thibault @ 2006-06-19 9:30 ` Marcel Holtmann 2006-06-19 9:39 ` Samuel Thibault 0 siblings, 1 reply; 21+ messages in thread From: Marcel Holtmann @ 2006-06-19 9:30 UTC (permalink / raw) To: Samuel Thibault; +Cc: Greg KH, linux-kernel, greg, linux-hotplug-devel Hi Samuel, > > Or just tell your users to make sure that they have the uinput driver > > loaded, > > They can't, since without it they can't even type things. if you install a program or a driver that needs uinput loaded, then you have a clean requirement. So simply add a "modprobe uinput" to its init script. Look at the TUN/Tap driver which has the same problem. The boot up scripts of various daemons (for example OpenVPN etc.) are making sure that the driver is loaded. Regards Marcel ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [GIT PATCH] Remove devfs from 2.6.17 2006-06-19 9:30 ` Marcel Holtmann @ 2006-06-19 9:39 ` Samuel Thibault 2006-06-19 10:22 ` Marcel Holtmann 0 siblings, 1 reply; 21+ messages in thread From: Samuel Thibault @ 2006-06-19 9:39 UTC (permalink / raw) To: Marcel Holtmann; +Cc: Greg KH, linux-kernel, greg, linux-hotplug-devel Marcel Holtmann, le Mon 19 Jun 2006 11:30:31 +0200, a écrit : > > > Or just tell your users to make sure that they have the uinput driver > > > loaded, > > > > They can't, since without it they can't even type things. > > if you install a program or a driver that needs uinput loaded, then you > have a clean requirement. So simply add a "modprobe uinput" to its init > script. > > Look at the TUN/Tap driver which has the same problem. The boot up > scripts of various daemons (for example OpenVPN etc.) are making sure > that the driver is loaded. And vtun's script in debian doesn't, so that I had to load it by hand. Don't justify lack of support thanks to corrections that people had to add ;) The problem I'm raising is that with udev we seem to be heading to asking every program to know which module it should load by hand before being able to use a /dev entry. This looks odd to me (why not opening the /dev entry itself shouldn't autoload the driver?). Samuel ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [GIT PATCH] Remove devfs from 2.6.17 2006-06-19 9:39 ` Samuel Thibault @ 2006-06-19 10:22 ` Marcel Holtmann 0 siblings, 0 replies; 21+ messages in thread From: Marcel Holtmann @ 2006-06-19 10:22 UTC (permalink / raw) To: Samuel Thibault; +Cc: Greg KH, linux-kernel, greg, linux-hotplug-devel Hi Samuel, > > > They can't, since without it they can't even type things. > > > > if you install a program or a driver that needs uinput loaded, then you > > have a clean requirement. So simply add a "modprobe uinput" to its init > > script. > > > > Look at the TUN/Tap driver which has the same problem. The boot up > > scripts of various daemons (for example OpenVPN etc.) are making sure > > that the driver is loaded. > > And vtun's script in debian doesn't, so that I had to load it by hand. > Don't justify lack of support thanks to corrections that people had to > add ;) > > The problem I'm raising is that with udev we seem to be heading to > asking every program to know which module it should load by hand before > being able to use a /dev entry. This looks odd to me (why not opening > the /dev entry itself shouldn't autoload the driver?). I don't see any problems that every program knows what kernel module it requires. In case of misc character devices with dynamic minor numbers, I would actually prefer that the application or an init scripts triggers the module loading. Unless the module is loaded, the kernel doesn't know anything about this device. Regards Marcel ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [GIT PATCH] Remove devfs from 2.6.17 2006-06-18 23:00 ` Samuel Thibault 2006-06-18 23:12 ` Greg KH @ 2006-06-19 0:54 ` H. Peter Anvin 2006-06-19 1:17 ` Joshua Hudson 2006-06-19 3:15 ` Greg KH 1 sibling, 2 replies; 21+ messages in thread From: H. Peter Anvin @ 2006-06-19 0:54 UTC (permalink / raw) To: Samuel Thibault, Greg KH, Linus Torvalds, Andrew Morton, linux-kernel, greg Samuel Thibault wrote: > > There has been at least my complaint about udev not being able to > auto-load modules on /dev entry lookup (28th March 2006): > > « Given a freshly booted linux box, hence uinput is not loaded (why > would it be, it doesn't drive any real hardware) ; what is the right > way(tm) for an application to have the uinput module loaded, so that it > can open /dev/input/uinput for emulating keypresses? > > - With good-old static /dev, we could just open /dev/input/uinput > (installed by the distribution), and thanks to a > alias char-major-10-223 uinput > line somewhere in /etc/modprobe.d, uinput gets auto-loaded. > > - With devfs, it doesn't look like it works (/dev/misc/uinput is not > present and opening it just like if it existed doesn't work). But I > read in archives that it could be feasible. > > - With udev, this just cannot work. As explained in an earlier thread, > even using a special filesystem that would report the opening attempt > to udevd wouldn't work fine since udevd takes time for creating the > device, and hence the original program needs to be notified ; this > becomes racy. > It would be nice if udev could be fed not just from the kernel, but from the repository of modules that are available for loading. That may require additional module information. -hpa ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [GIT PATCH] Remove devfs from 2.6.17 2006-06-19 0:54 ` H. Peter Anvin @ 2006-06-19 1:17 ` Joshua Hudson 2006-06-19 1:35 ` H. Peter Anvin 2006-06-19 3:15 ` Greg KH 1 sibling, 1 reply; 21+ messages in thread From: Joshua Hudson @ 2006-06-19 1:17 UTC (permalink / raw) To: linux-kernel With udev, you could mknod it yourself (in your application), then open it. That would fire up the auto-module-load. ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [GIT PATCH] Remove devfs from 2.6.17 2006-06-19 1:17 ` Joshua Hudson @ 2006-06-19 1:35 ` H. Peter Anvin 2006-06-19 5:55 ` Will Dyson 0 siblings, 1 reply; 21+ messages in thread From: H. Peter Anvin @ 2006-06-19 1:35 UTC (permalink / raw) To: Joshua Hudson; +Cc: linux-kernel Joshua Hudson wrote: > With udev, you could mknod it yourself (in your application), then open it. > That would fire up the auto-module-load. Sure, but it would be even better if pointing udev to a set of modules (or perhaps a file generated by depmod) and have it do it all automatically. -hpa ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [GIT PATCH] Remove devfs from 2.6.17 2006-06-19 1:35 ` H. Peter Anvin @ 2006-06-19 5:55 ` Will Dyson 2006-06-19 7:14 ` Alexander E. Patrakov 0 siblings, 1 reply; 21+ messages in thread From: Will Dyson @ 2006-06-19 5:55 UTC (permalink / raw) To: H. Peter Anvin; +Cc: Joshua Hudson, linux-kernel On 6/18/06, H. Peter Anvin <hpa@zytor.com> wrote: > Joshua Hudson wrote: > > With udev, you could mknod it yourself (in your application), then open it. > > That would fire up the auto-module-load. > > Sure, but it would be even better if pointing udev to a set of modules > (or perhaps a file generated by depmod) and have it do it all automatically. Providing the information about what devices a virtual driver will register when loaded seems like a good idea. Something like the following occurs to me. But it doesn't deal with loop's ability to register a different number of minors based on a module parameter. Not really sure what to do about that. Going in this direction is also a further impediment to dynamicly assigned device numbers. diff --git a/drivers/block/loop.c b/drivers/block/loop.c index 9c3b94e..b933f3f 100644 --- a/drivers/block/loop.c +++ b/drivers/block/loop.c @@ -1205,6 +1205,18 @@ static struct block_device_operations lo .ioctl = lo_ioctl, }; +static struct virtual_device_table loop_virt_tbl= { + {LOOP_MAJOR, 0, 1}, + {LOOP_MAJOR, 1, 1}, + {LOOP_MAJOR, 2, 1}, + {LOOP_MAJOR, 3, 1}, + {LOOP_MAJOR, 4, 1}, + {LOOP_MAJOR, 5, 1}, + {LOOP_MAJOR, 6, 1}, + {LOOP_MAJOR, 7, 1}, + {} +}; + /* * And now the modules code and kernel interface. */ @@ -1212,6 +1224,7 @@ module_param(max_loop, int, 0); MODULE_PARM_DESC(max_loop, "Maximum number of loop devices (1-256)"); MODULE_LICENSE("GPL"); MODULE_ALIAS_BLOCKDEV_MAJOR(LOOP_MAJOR); +MODULE_DEVICE_TABLE (virtual, loop_virt_tbl); int loop_register_transfer(struct loop_func_table *funcs) { diff --git a/include/linux/mod_devicetable.h b/include/linux/mod_devicetable.h index f697770..f4a21d0 100644 --- a/include/linux/mod_devicetable.h +++ b/include/linux/mod_devicetable.h @@ -297,4 +297,16 @@ struct input_device_id { kernel_ulong_t driver_info; }; +/* + * Declare the intention of a driver to register a virtual + * device upon loading. + */ +struct virtual_device_id { + __u32 major; + __u32 minor; + __u8 type; /* 0 for char, 1 for block */ + + kernel_ulong_t driver_info; +} + #endif /* LINUX_MOD_DEVICETABLE_H */ -- Will Dyson ^ permalink raw reply related [flat|nested] 21+ messages in thread
* Re: [GIT PATCH] Remove devfs from 2.6.17 2006-06-19 5:55 ` Will Dyson @ 2006-06-19 7:14 ` Alexander E. Patrakov 2006-06-19 22:14 ` Daniel Barkalow 0 siblings, 1 reply; 21+ messages in thread From: Alexander E. Patrakov @ 2006-06-19 7:14 UTC (permalink / raw) To: linux-kernel; +Cc: Joshua Hudson, H. Peter Anvin Will Dyson wrote: > On 6/18/06, H. Peter Anvin <hpa@zytor.com> wrote: >> Joshua Hudson wrote: >> > With udev, you could mknod it yourself (in your application), then >> open it. >> > That would fire up the auto-module-load. >> >> Sure, but it would be even better if pointing udev to a set of modules >> (or perhaps a file generated by depmod) and have it do it all >> automatically. > > Providing the information about what devices a virtual driver will > register when loaded seems like a good idea. Why? This information is currently useless. What you want is that something knows that you want this driver to be loaded. So, everything you need is one line: MODULE_ALIAS("virtual_dev"); (add this to loop, nbd, ppp_generic, uinput, dm-mod and other "virtual" drivers of your choice) and the initscript that does a "modprobe virtual_dev" to catch them all. -- Alexander E. Patrakov ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [GIT PATCH] Remove devfs from 2.6.17 2006-06-19 7:14 ` Alexander E. Patrakov @ 2006-06-19 22:14 ` Daniel Barkalow 2006-06-19 22:17 ` H. Peter Anvin 0 siblings, 1 reply; 21+ messages in thread From: Daniel Barkalow @ 2006-06-19 22:14 UTC (permalink / raw) To: Alexander E. Patrakov; +Cc: linux-kernel, Joshua Hudson, H. Peter Anvin On Mon, 19 Jun 2006, Alexander E. Patrakov wrote: > Will Dyson wrote: > > Providing the information about what devices a virtual driver will > > register when loaded seems like a good idea. > > Why? This information is currently useless. What you want is that something > knows that you want this driver to be loaded. The point is that you *don't* want those modules to be loaded. What you want is for the kernel to know that those modules are available, and therefore mention that drivers could be found for those devices, and therefore udev would create the device nodes for them, even though the kernel doesn't contain a module that drives them yet. If something actually opens the device node, the module will be loaded, but until then it isn't using up resources. -Daniel *This .sig left intentionally blank* ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [GIT PATCH] Remove devfs from 2.6.17 2006-06-19 22:14 ` Daniel Barkalow @ 2006-06-19 22:17 ` H. Peter Anvin 0 siblings, 0 replies; 21+ messages in thread From: H. Peter Anvin @ 2006-06-19 22:17 UTC (permalink / raw) To: Daniel Barkalow; +Cc: Alexander E. Patrakov, linux-kernel, Joshua Hudson Daniel Barkalow wrote: > On Mon, 19 Jun 2006, Alexander E. Patrakov wrote: > >> Will Dyson wrote: >>> Providing the information about what devices a virtual driver will >>> register when loaded seems like a good idea. >> Why? This information is currently useless. What you want is that something >> knows that you want this driver to be loaded. > > The point is that you *don't* want those modules to be loaded. What you > want is for the kernel to know that those modules are available, and > therefore mention that drivers could be found for those devices, and > therefore udev would create the device nodes for them, even though the > kernel doesn't contain a module that drives them yet. > The kernel doesn't need to know. udev needs to know. -hpa ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [GIT PATCH] Remove devfs from 2.6.17 2006-06-19 0:54 ` H. Peter Anvin 2006-06-19 1:17 ` Joshua Hudson @ 2006-06-19 3:15 ` Greg KH 2006-06-19 8:52 ` Samuel Thibault 1 sibling, 1 reply; 21+ messages in thread From: Greg KH @ 2006-06-19 3:15 UTC (permalink / raw) To: H. Peter Anvin Cc: Samuel Thibault, Linus Torvalds, Andrew Morton, linux-kernel, greg On Sun, Jun 18, 2006 at 05:54:27PM -0700, H. Peter Anvin wrote: > Samuel Thibault wrote: > > > >There has been at least my complaint about udev not being able to > >auto-load modules on /dev entry lookup (28th March 2006): > > > >? Given a freshly booted linux box, hence uinput is not loaded (why > >would it be, it doesn't drive any real hardware) ; what is the right > >way(tm) for an application to have the uinput module loaded, so that it > >can open /dev/input/uinput for emulating keypresses? > > > >- With good-old static /dev, we could just open /dev/input/uinput > > (installed by the distribution), and thanks to a > > alias char-major-10-223 uinput > > line somewhere in /etc/modprobe.d, uinput gets auto-loaded. > > > >- With devfs, it doesn't look like it works (/dev/misc/uinput is not > > present and opening it just like if it existed doesn't work). But I > > read in archives that it could be feasible. > > > >- With udev, this just cannot work. As explained in an earlier thread, > > even using a special filesystem that would report the opening attempt > > to udevd wouldn't work fine since udevd takes time for creating the > > device, and hence the original program needs to be notified ; this > > becomes racy. > > > > It would be nice if udev could be fed not just from the kernel, but from > the repository of modules that are available for loading. That may > require additional module information. There's no reason it could not be, but usually a simple, "modprobe loop" works good enough for everyone :) thanks, greg k-h ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [GIT PATCH] Remove devfs from 2.6.17 2006-06-19 3:15 ` Greg KH @ 2006-06-19 8:52 ` Samuel Thibault 0 siblings, 0 replies; 21+ messages in thread From: Samuel Thibault @ 2006-06-19 8:52 UTC (permalink / raw) To: Greg KH; +Cc: H. Peter Anvin, Linus Torvalds, Andrew Morton, linux-kernel, greg Greg KH, le Sun 18 Jun 2006 20:15:21 -0700, a écrit : > On Sun, Jun 18, 2006 at 05:54:27PM -0700, H. Peter Anvin wrote: > > It would be nice if udev could be fed not just from the kernel, but from > > the repository of modules that are available for loading. That may > > require additional module information. > > There's no reason it could not be, but usually a simple, "modprobe loop" > works good enough for everyone :) Not for non-root people. (And yes, they may want to do non-root things with such virtual devices, in the dummy sequencer case for instance). Samuel ^ permalink raw reply [flat|nested] 21+ messages in thread
end of thread, other threads:[~2006-06-19 22:18 UTC | newest] Thread overview: 21+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2006-06-18 22:13 [GIT PATCH] Remove devfs from 2.6.17 Greg KH 2006-06-18 22:45 ` Michal Piotrowski 2006-06-18 23:06 ` Greg KH 2006-06-18 23:00 ` Samuel Thibault 2006-06-18 23:12 ` Greg KH 2006-06-18 23:35 ` Samuel Thibault 2006-06-19 0:48 ` Nick Piggin 2006-06-19 3:22 ` Greg KH 2006-06-19 8:23 ` Samuel Thibault 2006-06-19 9:30 ` Marcel Holtmann 2006-06-19 9:39 ` Samuel Thibault 2006-06-19 10:22 ` Marcel Holtmann 2006-06-19 0:54 ` H. Peter Anvin 2006-06-19 1:17 ` Joshua Hudson 2006-06-19 1:35 ` H. Peter Anvin 2006-06-19 5:55 ` Will Dyson 2006-06-19 7:14 ` Alexander E. Patrakov 2006-06-19 22:14 ` Daniel Barkalow 2006-06-19 22:17 ` H. Peter Anvin 2006-06-19 3:15 ` Greg KH 2006-06-19 8:52 ` Samuel Thibault
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox