On 05/10/2010 10:52 AM, Dmitry Torokhov wrote: > > The usage that you mention only valid in the context of working with > device nodes. In other cases it can be used to indicate different errors > altogether: > > mmap: > > [ENODEV] > The fildes argument refers to a file whose type is not supported > by mmap(). > > fallocate: > > [ENODEV] > The fd argument does not refer to a regular file. > > Linux mount: > > ENODEV filesystemtype not configured in the kernel. > > ENXIO The major number of the block device source is out of range. > "The major number of the block device source is out of range" is really nothing but confusion on the part of the man page author. It's exactly this kind of confusion which I try to clamp down on, because we have *so* many instances of it in the existing codebase. It seems, in fact, to be one of the most common mistakes ENXIO really means exactly the same thing as it does elsewhere: no hardware for the specified device. For example, create /dev/hda on a system with no IDE: mount("/dev/hda", "/mnt", "ext2", MS_MGC_VAL, NULL) = -1 ENXIO (No such device or address) [no "out of range" anything there...] The kernel does indeed return ENODEV for a nonexistent filesystem name, which can only best be described as "severely confusing", but probably have to be considered grandfathered in by now. (mount returns ENOTBLK for a non-devicenode, which is somewhat accurate -- a non-device is not a block device, after all...) -hpa -- To unsubscribe from this list: send the line "unsubscribe linux-tip-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html