Re: 2.4.17pre2: devfs: devfs_mk_dir(printers): could not append to dir: dffe45c0 "", err: -17

andrew may (acmay@acmay.homeip.net)
Sat, 1 Dec 2001 18:09:40 -0800


On Sat, Dec 01, 2001 at 08:37:24PM -0500, Adam Schrotenboer wrote:
> On Saturday 01 December 2001 13:08, Richard Gooch wrote:
> > linux-kernel@borntraeger.net writes:
> <snip>
> > The new devfs core is less forgiving about these kinds of
> > bugs/misuses.
> >
> > > devfs: devfs_register(nvidiactl): could not append to parent, err: -17
> > > devfs: devfs_register(nvidia0): could not append to parent, err: -17
> > >
> > > with 2.4.16 and before the message was:
> > >
> > > devfs: devfs_register(): device already registered: "nvidia0"
> >
> > Who knows what nvidia does? Talk to them. Could be a bug in their
> > driver where they create duplicate entries (the old devfs code would
> > often let you get away with this). Or again, perhaps something in
> > user-space is creating these entries.
> >
> As of 1541 anyway (haven't tried anything newer, assuming newer exists), the
> make install of the nvidia driver also runs makedevices.sh (a vendor sp
> script that makes the devnodes. This may also have been put in the
> initscripts (mine isn't, but i tend to use the tar.gz fmt, not using the RPMs)
> Perhaps there is no check for devfs (likely will be fixed in the next
> release, as this is a new situation)

There is now a 2313 version of the driver. It has put in devfs calls, but it
seems they still call the makedefs script in the make install.

I don't know if the devfs code is correct but here it is.

from nv.c modules_init();

#ifdef CONFIG_DEVFS_FS
rc = devfs_register_chrdev(nv_major, "nvidia", &nv_fops);
#else
rc = register_chrdev(nv_major, "nvidia", &nv_fops);
#endif

if (rc < 0) {
NV_EMSG((nv_state_t *) 0, "init_module: register failed");
return rc;
}

osMemSet(nv_linux_devices, 0, sizeof(nv_linux_state_t) * NV_MAX_DEVICES);
num_devices = nvos_probe_devices();

#ifdef CONFIG_DEVFS_FS
osMemSet(nv_dev_handle, 0, sizeof(devfs_handle_t) * NV_MAX_DEVICES);
do {
char name[16];
int i;

nv_ctl_handle = devfs_register(NULL, "nvidiactl",
DEVFS_FL_DEFAULT, nv_major, 255,
S_IFCHR | S_IRUGO | S_IWUGO,
&nv_fops, NULL);

for (i = 0; i < num_devices; i++) {
snprintf(name, 16, "nvidia%d", i);
nv_dev_handle[i] = devfs_register(NULL, name,
DEVFS_FL_DEFAULT, nv_major, i,
S_IFCHR | S_IRUGO | S_IWUGO,
&nv_fops, NULL);
}
} while(0);
#endif
-
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/