Summary of changes from v2.5.47 to v2.5.48 ============================================ Rescan a serio port in serio.c only when a character comes from it only in case it's a valid character (correct parity, no timeout). Here's a patch that makes the RiscPC input bits work in 2.5: - Call the RiscPC mouse "CONFIG_MOUSE_RISCPC" not "CONFIG_MOUSE_ACORN" - Remember the last state of the buttons so we're not continuously reporting this to the core input subsystem. - Correct mapping of bits to buttons - Correct button sense (1 = released) - Always pass a dev_id when requesting an IRQ. Required for SA_SHIRQ shared interrupts. - Merge ARM keyboard controller config options - General update for rpckbd.c I found a missing '\n' in serio.c:118. This prevents the next printk to be interpreted correctly. A bunch of miscellaneous changes - mostly fixes from 2.4 and updates to 2.5.43. Added some Makefile fixes so the build works. Brought the xterm not hanging fix from 2.4. Updated the signal code from 2.4. Fixed port_interrupt to not allocate IRQs. The idle threads for the secondary processors are now killed off on shutdown. Some rwlock symbols are exported. Added a system call entry for lookup_dcookie. A number of small fixes. The port and xterm drivers handle -EAGAIN from os_rcv_fd gracefully, fixing a crash in the xterm driver. The ubd driver handles devfs_register failures better. More symbols were exported. Add Logitech Wheel Mouse to the list of Logitech mice that have a wheel in mousedev.c The block driver supports partitions again. Removed an unused field from cpu_tasks. atkbd.c: Only issue the set LED command during probe when absolutely needed. Merged the 2.5.44 ubd driver changes. Updated to work as 2.5.44. psmouse.c: First check for a Synaptics touchpad, other probes confuse it enough to disable the trackpoint. Remove dead logibusmouse.h. hid-input.c: Back out a (wrong) find_next_zero_bit() patch from Arnaldo Carvalho de Melo. Fix open counting in usbkbd.c and usbmouse.c in case the irq urb submit fails. Bug spotted by Thiemo Seufer. Fix dyslexia in Amiga keyboard driver [PATCH] add request prep functions to SCSI This patch adds request prep functions to the mid-layer. At the moment, its a single request prep function for all of SCSI. I've altered the logic in scsi_request_fn so that we now do early preparation (this should improve throughput slightly in the untagged case with only a single command block). The prep function also cannot drop the queue lock, so the calling assumptions for scsi_init_io and the upper layer driver init_commands have changed to be that the lock is now held and they cannot drop it. I think this means that we have no callers of scsi_init_io that aren't atomic, so perhaps I can just take the if out. I've hammered this in my usual set up, but other testers would be welcome. James [PATCH] get rid of ->detect for upper layer drivers Okay, we're finally at the point where ->detect has become entirely superflous. In sd, sr and st it does nothing but return different values that are ignored anyway, in sg it increments a variable that is never read (and thus removed in this patch aswell), only in osst it increments a variable that is actually checked for beeing non-zero. But if it was zero we'd never reached that place anyway (same check in the beginning of osst_detect and osst_attach). This make the upper layer interface a lot nicer and avoids the race condition where a device is remove between detect and attach (which currently wouldn't matter anyway as we aren't doing anything in detect anymore) ACPI: Interpreter update to fix mutex wait problem This changes the timeout param around the interpreter to a u16, so that ACPI_WAIT_FOREVER is equivalent to 0xFFFF, the value ASL expects to mean "wait forever". ACPI: bus.c needed device.h included [PATCH] [Trivial Patch] scsi_register-001-002 From: Michael Still Updated patches to scsi_register patches against the 2.5.45 tree [PATCH] [Trivial Patch] scsi_register-004 From: Michael Still This patch has been generated as part of my scsi_register audit of the 2.5.45 kernel tree. scsi_register() can fail, returning a NULL pointer, and the failure case was not being handled here... [PATCH] [Trivial Patch] scsi_register-003-002 From: Michael Still Updated patches to scsi_register patches against the 2.5.45 tree [PATCH] [Trivial Patch] scsi_register-006 From: Michael Still This patch has been generated as part of my scsi_register audit of the 2.5.45 kernel tree. scsi_register() can fail, returning a NULL pointer, and the failure case was not being handled here... [PATCH] [Trivial Patch] scsi_register-002 From: Michael Still This patch has been generated as part of my scsi_register audit of the 2.5.45 kernel tree. scsi_register() can fail, returning a NULL pointer, and the failure case was not being handled here... [PATCH] [Trivial Patch] scsi_register-008 From: Michael Still This patch has been generated as part of my scsi_register audit of the 2.5.45 kernel tree. scsi_register() can fail, returning a NULL pointer, and the failure case was not being handled here... ACPI: Correctly init device struct, permissing proper unloading/reloading (John Cagle) Some fixes after conflict merge, in rpcmouse.c and rpckbd.c Handle return values from interface_register() and misc_register() in the input drivers. Add defaults for the most needed keyboard/mouse options. Add 'needed for mouse and keyboard' comments to Kconfig to make configuration of mouse and keyboard support more obvious. Make it clearer that the atkbd.c driver is for PS/2 keyboards as well in the Kconfig help text. Remove unused variable This fixes a compiler warning. [PATCH] remove some dead declarations from the scsi headers scsi_debug 1.64 , remove detect(), "hotplug" hosts This patch is against lk 2.5.46-bk3 which includes Christoph's work removing the requirement for detect() functions in LLDDs. He sent me an example for scsi_debug which I have built on with this patch. As threatened, this version includes a "scsi_debug_add_host" parameter. At kernel or module load time this is an absolute number (0..127 are allowable and 1 is the default). So: modprobe scsi_debug scsi_debug_num_devs=20 scsi_debug_add_host=0 will result in no scsi_debug hosts (thus no devices) but the driver has 20 slots available for devices. Then a host can be introduced (simulated hotplug) by echo 1 > /sysfs/bus/scsi/drivers/scsi_debug/add_host This causes a scsi_debug host to appear and devices get found on it [14 in my system: 7 targets (0..6) each with 2 luns (0..1)]. Another host hotplug can be simulated by echo 1 > /sysfs/bus/scsi/drivers/scsi_debug/add_host which results in another 6 devices being attached (for a total of 20 scsi_debug devices as dictated by the original scsi_debug_num_devs). That last (second) scsi_debug host can be removed by echo -1 > /sysfs/bus/scsi/drivers/scsi_debug/add_host and its 6 devices go. Another application of this "echo" removes the first host and all remaining devices. Seems to work fine. scsi_mid_low_api.txt This patch against 2.5.46-bk3 is work in progress (since the interface is in flux). It dusts of some cobwebs, removes politically incorrect typedefs and describes slave_attach() and slave_detach(). It removes the revoke() description (per hch? changes). Is a section describing mid level functions provided for LLDDs (e.g. scsi_adjust_queue_depth() ) warranted? warn (and don't attach) if no error handling Add code to warn and not attach the host if it has no error handling. Allow attachment if the `scsi_ignore_no_error_handling' boot flag is set. This should allow us finally to rip out all the old error code. [ARM] makefile cleanup Added prerequisite FORCE in several rules, now kbuild build a kernel even the second time you try. Corrected several errors to avoid errornous rebuild of targets in arch/arm Lot's of trivial clean-up [SCSI] downgrade lack of eh to warning and stack dump include/asm-sparc/elf.h: Include uaccess.h arp: fix seq_file support [SPARC64]: In sys32_sched_getaffinity, put mask back to user if ret > 0. [SPARC64]: Do not NULL conswitchp when serial_console. [SPARC]: Move LDFLAGS_BLOD define out from NEW_GAS test. [sparc] Fix off-by-one in s/g handling [IPSEC]: More fixes and corrections. - Make connect() policy selection actually happen - return len instead of 0 on successful pfkey sendmsg - make prefixlen checks in a way more compatible with isakmpd - key manager wait queues are totally wrong [TG3]: TG3_HW_STATUS_SIZE should be 0x50 not 0x80. [SPARC64]: Fix accidental clobbering of register on cheetahplus. Add fs/jfs/acl.c This file was somehow skipped (along with jfs_acl.h> when I checked in the ACL support. net/ipv4/arp.c: Fix compiler warning. [IPSEC]: Make netlink user interface header. scsi_debug 1.64 against 2.5.47 This is essentially the same patch that I sent earlier today. The earlier patch will apply cleanly. However since the 'sscanf("-1", "%d", &i)' bug is fixed in lk 2.5.47, this attachment removes the work around. lk 2.5.47 does not include the 'modprobe/rmmod' fixes from Patrick Mansfield sent last week. They apply cleanly to lk 2.5.47 and with them modprobe/rmmod cycles are stable with scsi_debug. [PATCH 0/2] clean up scsi documentation here are my patches to clean up the scsi documentation. It is split in three parts: 0) Do the work. A small script that does the following things: -create Documentation/scsi/ -move all the scsi documentation from Documentation/ and drivers/scsi/ to this location -kill ChangeLog.serverraid. It's a duplication from ChangeLog.ips but is missing some bits (got ok from maintainer to do this) -rename README.drivername to drivername.txt which is more common in Documentation/* NOTE: start this script on the top level of the source tree (/usr/src/linux or whereever you put it). [PATCH] clean up scsi documentation Ok, here comes part 2. Not mentioned in the first mail: it makes some minor formatting changes in some comments. Eike [PATCH] clean up scsi documentation And here are the final cleanups. Eike [PATCH] loop sendfile retval Buffer I/O error on device loop: its use of sendfile is (trivially) broken - retval is usually count done, only an error when negative. This code (like the old one) does not correctly handle partial reads. Nearby spinlocking clearly bogus, delete instead of remarking on it. [PATCH] CLONE_NEWNS fix Spotted by Andries - cloning namespace assumes that new tree is congruent to the old one (when switching root/cwd) but actually inverts the order of children in each node. [PATCH] sys_swapoff() cleanup Instead of user_path_walk() and comparing dentries, sys_swapoff() opens its argument and compares ->i_mapping. Result: slightly simpler code and swapoff(2) becomes tolerant to e.g. swapon /dev/sda2 switch root from initrd to sda1 .... swapoff /dev/sda2 # where /dev is from sda1, not from initrd current tree fails in the case above (different dentries -> no love). [PATCH] paride/pseudo.h cleanup paride/pseudo.h fed through Lindent, use of timer replaced with schedule_delayed_work() - that's what the old code tried to emulate. [PATCH] late-boot cleanups RAID autoconfig rewritten to use syscalls and moved into do_mounts.c; use of devfs_get_handle() in do_mounts.c also rewritten in syscalls. [PATCH] dm_ioctl() fix Compile fixes, cleanup. [PATCH] ->pmtu compile fix [PATCH] bdevname() cleanups Bunch of kdevname() uses replaced with bdevname(). __bdevname() switched from kdev_t to dev_t; callers updated. [PATCH] bd_dev cleanups Eliminated several gratitious ->bd_dev uses. [PATCH] dasd fixe and cleanups dasd.c forgot to set ->private_data, but was using it ;-/ Fixed. Remaining dasd_devmap_from_kdev() callers switched to dasd_devmap_from_bdev() (other than call from dasd_devmap_from_bdev(), that is). dasd_devmap_from_kdev() merged into dasd_devmap_from_bdev(). [PATCH] misc cleanups - compile fixes in amiflop.c - removal of dead local variables in ll_rw_blk.c - removed gratitious devfs_get_handle() in usb/input/hiddev.c (no need to do lookup for "usb" and then create "hid" in there - enough to create "usb/hid" at once). [PATCH] KBUILD_MODNAME define for build system By Kai Germaschewski. This patch adds a -DKBUILD_MODNAME to the kernel compile, which contains the base of the module name which is being built. - Some sreorganization of the c_flags since they're needed for generating modversions (.ver) and compiling - Use the right KBUILD_MODNAME also when the user just wants a .i/.s/.lst file for debugging and also when generating modversions - It looks like with your current approach you can't have a ',' or '-' in KBUILD_MODNAME - however, that means that KBUILD_MODNAME is not quite right for passing module parameters for built-in modules on the command line, it would be confusing to pass parameters for ide-cd as ide_cd.foo=whatever. So that part could use a little more thought. - If you think your module_names trick makes a noticable difference, feel free to re-add it. - It's possible that objects are linked into more than one module - I suppose this shouldn't be a problem, since these objects hopefully don't have a module_init() nor do they export symbols. Not sure if your patch did handle this. [PATCH] In-kernel Module Loader This is an implementation of the in-kernel module loader extending the try_inc_mod_count() primitive and making its use compulsory. This has the benifit of simplicity, and similarity to the existing scheme. To reduce the cost of the constant increments and decrements, reference counters are lockless and per-cpu. Eliminated (coming in following patches): o Modversions o Module parameters o kallsyms o EXPORT_SYMBOL_GPL and MODULE_LICENCE checks o DEVICE_TABLE support. New features: o Typesafe symbol_get/symbol_put o Single "insert this module" syscall interface allows trivial userspace. o Raceless loading and unloading You will need the trivial replacement module utilities from: http://ozlabs.org/~rusty/module-init-tools-0.6.tar.gz [PATCH] New Module Loader: x86 support This patch provides basic x86 support for modules. [PATCH] C99 designated initializers for arch/s390 [PATCH] C99 designated initializers for arch/mips64 [PATCH] C99 designated initializers for drivers/ide/pci (2 of 2) [PATCH] C99 designated initializers for arch/arm [PATCH] C99 designated initializers for arch/ppc64 [PATCH] C99 designated initializers for arch/v850 [PATCH] C99 designated initializers for arch/mips [PATCH] C99 designated initializer for arch/alpha/kernel/sys_jensen.c [PATCH] C99 designated initializers for arch/s390x [PATCH] C99 designated initializers for arch/cris [PATCH] C99 designated initializers for drivers/ide/pci (1 of 2) [PATCH] C99 designated initializers for drivers/char/agp [PATCH] C99 designated initializers for drivers/macintosh [PATCH] C99 designated initializer for drivers/usb/media/vicam.c Re-introduce __MODULE_STRING, since some drivers depend on it. (Yes, they should probably use __stringify() instead). [PATCH] remove code duplication from fs/eventpoll.c Clean up poll queue handling, avoid doing any wait-queue operations when we only want to get the current state. [PATCH] usb storage: remmove unneeded abort checks Since we now test for aborts at a higher level, the low-level end of the drivers don't need to be constantly testing for aborts. This patch removes that excess logic. [PATCH] usb storage: remove duplicate functions Once upon a time, the SCSI command structure could only hold a maximum of 12 bytes. Thus, the ISD-200 driver needed an entirely separate function to work with 16-byte commands. Now that 16-bytes is stored, we can cut the duplicates. [PATCH] usb storage: fix aborted auto-sense This patch fixes the case of an ABORT happening during the auto-sense processing when using the ISD-200 driver. [PATCH] usb storage: fix spelling, comments. This patch fixes some spelling errors and makes some comments a bit more clear. [PATCH] usb storage: remove unneeded workaround for START_STOP This patch removes the special-case code for START_STOP. It can be safely removed now because the higher SCSI layers won't send this command unless the device indicates that it needs it to allow media access. [PATCH] Mux driver for PA-RISC A driver for the Mux serial ports in some PA-RISC servers from Ryan Bradetich. [PATCH] C99 designated initializers for arch/i386 ACPI: Interpreter update to 20021111 - Adds support for SMBus OpRegions [PATCH] KERN_WARN(ING) This fixes so dev_warn() uses KERN_WARNING, instead of a non-existent symbol. It also uses parens around some arguments that need them ... those macros are now usable. mptscsih.h: compile fix o ipv4: convert /proc/net/netstat to seq_file [PATCH] usbtest, add some unlink testcases This adds some simple unlink test cases. I've only run these against OHCI so far, and so far only in simple configurations (only one active device), where it hasn't yet turned up problems. [PATCH] usbnet Kconfig helptext Mostly just highlights the PDA support, now that we can say this talks to all the Linux based PDAs; adds "more info" URL. [PATCH] USB: update usb hotplug documentation ACPI: Make unload/reload of modules work properly w.r.t. /proc ACPI: Do not compile code for EC unloading, because it cannot be unloaded atm [PATCH] ehci-hcd, use dummy td when queueing What it does is give up on catching all the "race with HC" cases when appending to a live QH, by switching to using a disabled "dummy" TD at the end of all hardware queues. The HC won't cache disabled TDs, so it just sees "always good" pointers: no races. As a side benefit this also makes it safe to not irq on completion of most TDs that are queued using the scatterlist calls, so it'll be typical for one 64 KByte usb-storage request to mean just one irq (or less!) even without tuning ehci irq latency (for the DATA stage, that is). kernel/module.c: Kill warnings on egcs-2.9x and 64-bit. drivers/net/sk98lin/skge.c: Kill useless init_module/cleanup_module forward declarations. drivers/net/skfp/skfddi.c: Kill useless init_module/cleanup_module forward declarations. drivers/net/tulip/de4x5.c: Kill useless init_module/cleanup_module forward declarations. [SPARC]: Updated module support. net/ipv6/af_inet6.c: Remove extraneous #endef [SPARC]: More new modules work. [SCSI] minor fixes - remove unnecessary variable - adjust block layer TCQ interface ISDN: config update o Re-add lost config options during kconfig merge o Simplify some Kconfig files using if .. endif ISDN: Missed conversion in drivers/isdn/i4l/isdn_net_lib.c When changing .exclusive from a number to a pointer, the validity check should have changed from >=0 to != NULL everywhere. ISDN: Fix some typos Embarrassing, but the compiler doesn't warn unless CONFIG_SMP is set. [UDP]: silly bug, local input policy did not work on udp sockets. [IPSEC]: ah/esp, 0 was used as tunnels protocol. o ipv4: convert /proc/net/snmp to seq_file [PATCH] Re: USB scanner fix for 2.5.47 was not good ? Bad news is that the scanner endpoint change did not work, maybe I mistested it or it never worked. My version worked, but was very ugly. Here is a working one (against 2.5.47), this also looks nicer (I did not know the EP_XXX() could be changed too): [PATCH] Fix module loader compile bug The code was broken if module unload support was turned off. symbol_put_addr() in module.c should be moved under __symbol_put. [PATCH] swsusp: rewrite critical parts to assembly This rewrites the parts that can not be safely written in C (ie the low-level register save/restore) to assembly. Fix more CONFIG_MODULE_UNLOAD issues [PATCH] timers: drivers/ The output from a second pass across the tree. I visited all instances of ".function" and "->function". net/ has been sent to David. [PATCH] timers: sound/ Initialise dynamically allocated timers under sound/ [PATCH] timers: fs/ ncpfs has a dynamically allocated timer. [PATCH] rrunner PCI DMA mappings This makes drivers/net/rrunner.[ch] use the PCI DMA mapping API. It also fixes some potential SMP bugs where spin locks were taking outside of interrupt context without disabling interrupts. [PATCH] usb problems (ohci-hcd + printer) This fixes a number of issues in OHCI: - Force out the PCI write disabling control/bulk queues. This "shouldn't" matter, they're empty. - The rule is that if an ED is IDLE, its OK to just schedule it and start appending TDs. Hard to do that when the typical error path left them still halted! - Sometimes ed->hwTailP needs updating when TDs are removed from the queue, not just ed->hwHeadP. Oops. - Oh, and it's not the high bits we want to save when we unlink ... it's the low bits (actually just toggle). Except for forcing the writes to the controller, these patches should only affect (improve :) fault and unlink handling. [PATCH] USB: fixed up the wording of the bluetty driver's help entry to be stronger. This was suggested by Max Krasnyansky to try to remove confusion between this driver and the BlueZ supported driver. [PATCH] usblp buffer allocation (2.5.47) Here is the usblp buffer allocation patch for 2.5.47. [PATCH] USB: changed USB_UHCI_HCD_ALT to USB_UHCI_HCD as there is only one driver. [IPSEC]: authentication signature for MD5/SHA was not truncated to conform RFC. o ipv4: convert /proc/net/sockstat to seq_file Also only compile/link socket_seq_show (previously socket_get_info) in net/socket.c if CONFIG_PROC_FS is enabled. [IPSEC]: Netlink xfrm configuration interface. ISDN: Eicon driver fixes o Return correct error codes o New-style named initializers o Don't define dummy fops operations where not needed o Race-free open() (Armin Schindler) ISDN: Eicon driver indent Use Linux kernel coding style (no code changes). (Armin Schindler) ISDN: More Eicon driver cosmetics - moved some "//" remarks to "/* */" - removed DOS carriage-return characters at end of line from one header-file. (Armin Schindler) [PATCH] Sparc and Sparc64 Module updates My patch accidentally deleted module_map and module_unmap, which Sparc64 uses to get 32-bit memory (Sparc64 was the entire reason the arch has to supply the module allocation functions, and then I didn't use it. Doh). Plus a thinko in relocation calculation (dunno how that ever worked). [PATCH] module_name macro Fixes crypto so it compiles with !CONFIG_MODULES, and cleans up two other cases which did #ifdef CONFIG_MODULES. o ipv4: convert /proc/net/raw to seq_file Also: . prototypes for _proc_init functions only needed in af_inet.c, and only if CONFIG_PROC_FS is set. . net/socket.c needs include . review raw.c needed includes kbuild: Indicate building modules in non-verbose mode When using the abbreviated (non-verbose) output, show [M] when building modules. (Peter Samuelson) ISDN: Fix Kconfig typo (Jak) [AF_KEY]: Fix alloc_skb args. [IPSEC]: More pfkey2 semantic fixes. - xfrm_state.c: never return mature SAs on getspi. - af_key.c: do not forget to delete dummy super-larvals when they are resolved - af_key.c: wow! specially for this case I added gfp argument to xfrm_alloc_policy() and forgot to use it really. [XFRM_USER]: Fix xfrm_find_acq args. [XFRM_USER]: Destroy netlink socket on shutdown. [NET]: More timer init fixes. [XFRM]: Add family member to state/policy structs. dynamic device info flag entries This patch allows scsi device flags like those in the current scsi_scan.c device_list to be added via the command line or via /proc/scsi/device_info. It also allows a default flag to be set via the command line. This should allow for the (eventual) removal of the current device_list. Example boot command line arguments: scsi_default_dev_flags=0x1 scsi_dev_flags="IBM:LN V1.2Rack:0x200" The above means that a SCSI device with vendor "IBM ", model (product) "LN V1.2Rack " will get a flag of 0x200 during scanning, meaning it should be treated like a SCSI-3 device for scanning. All other devices without an entry would get the default flag value of 1, so they would not be scanned past LUN 0 (the same behaviour as max_scsi_luns = 1). I left the old device list and BLIST defines in scsi_scan.c. I could not get lilo to allow two spaces, so I could not use this with my device that has model "ST318203LC !#". I didn't try grub. Fix impressive call gate misuse DoS reported on bugtraq. Duh. Fix the other lcall entry point too. remove scsi_host_hn_list Here is Adam's patch to remove the scsi_host_hn_list, modified to skip past the token separator. [PATCH] kernel.h: changed #if DEBUG to #ifdef DEBUG to play nicer with compilers. [PATCH] usb sysfs shows bNumConfigurations This patch shows how many configurations a device has, which will be important for eventual user mode tools that manage configurations. [PATCH] usb_new_device() sets up dev->dev earlier This mostly moves the initialization of some sysfs-related fields earlier, so HCD code can access them during those (initial error prone) parts of enumeration without oopsing. The particular access I wanted was using debug utilities like dev_dbg(), dev_warn() and so on ... so I also changed the name the "generic" driver gives itself to be "usb" so those messages make more sense. Also added comments about how usb_new_device() moves the device through the other chapter 9 usb device states. [PATCH] cleanup usb hcd unlink code This fixes various minor problems: - re-orders some tests so that "(no bus?)" diagnostic should no longer be appearing (and making folk worry needlessly) - removes one unreachable test for URB_TIMEOUT_KILLED - removes the reachable test, since it's never an error on the part of the device driver to unlink something the HCD is already unlinking. - gets rid of some comments and code that expected automagic resubmits for interrupts (no more!), - resolves a FIXME for a rather unlikely situation (HCD can't perform the unlink, it reports an error) It also starts to use dev_dbg() macros, which give more concise (lately) and useful (they have both driver name and device id) diagnostics than the previous usb-only dbg() macros. To do this, DEBUG had to be #defined before is included, but it can't be #undeffed before is included. [PATCH] USB: hcd.c: move #ifdef CONFIG_USB_DEBUG statement around a bit. USB: fixup previous missed hunk in vicam patch. Fix tg3 net driver to properly disable interrupts during some TX operations [PATCH] ohci-hcd, driverfs files work again, less debug output This fixes a problem from Chris' patch, letting the driverfs files work again. The root cause was a duplicate "parent_dev" field, now gone. This also adds minor cleanup in the hcd glue, renaming the value being duplicated as the "controller" that the HCD is driving. (A "parent" should rarely be used, but the "controller" has reasonable uses all over the place ... like in dev_dbg calls!) It's initted by the PCI bus glue, or by the SA-1111 bus glue. Also makes some OHCI debug messages appear only when VERBOSE debug is (manually) enabled. This was self-defense, otherwise running the link/unlink "usbtest" cases could fill up the log filesystem (with debug enabled). [PATCH] HID patches for MGE UPS I thought I'd send the results of some experimentation of mine getting an MGE UPS (Evolution) to talk to 2.5 ... basically it behaved after some patches, though the "hidups" driver didn't. They're all attached: - "hiddev-1.patch" ... The default queue size was so small that this low-speed device couldn't queue up about 110 control requests (that many reports to check!) during init. - "hiddev-2.patch" ... Makes hid debug output more useful by (a) making it compile again; (b) adding lots of "Power Device" and "Battery System" reports, and putting all that data into the readonly data section; (c) actually printing the usage strings, if they're known; (d) printing a message when neither input nor hiddev claim the device ... likely something's wrong, like someone didn't configure in input subsystem or hiddev support. - "hiddev-3.patch" ... Teaches hiddev to expose the physical ID just like the input event framework does. Useful to help sort out which UPS is which, so you won't power down the wrong set of servers by accident. fix potential panic due to scsi_init_io failure [axboe@kernel.dk] This is the problem I have solved (incorrect segments), but it also shows a nasty bug in SCSI. If scsi_init_io() fails there, it calls scsi_end_request() which ends the entire request. That calls __scsi_release_command() which clears SCpnt->request (its now gone), but you then proceed to scsi_mlqueue_insert() which ends up doing blk_insert_request() on SCpnt->request. Boom. Problem is there are two possible reason to return failure from init_io. So we need to do the requeue inside init_io. [patch fixed to work with request prep function] Merge Radeon driver updates from DRI CVS (add support for R200 cube map registers) Update r128 driver to DRI CVS tree. Add getparam and vblank irq handling. MGA driver update to DRI CVS (3.0.2 -> 3.1.0). Add vblank interrupt, DMA blit and getparam support. i810 driver update to DRI CVS tree: use pci_alloc_consistent instead of home-brew PCI allocations. i830 driver update to DRI CVS tree: use pci_alloc_consistent instead of home-brew PCI allocations. Merge with DRI CVS tree: handle lack of AGP gracefully. [PATCH] incorrect block layer segment accounting There's a long standing bug in blk_recount_segments(). Clustering means physical segment colascing, not hardware segment colascing. This basically means that we are mapping more segments than here than the bio + requests contains, and this causes a bug in the SCSI layer for host adapters that have CLUSTERING enabled. This patch makes sure that we are clustering physical segments correctly, and correctly accounting hardware segments. Please apply. [PATCH] epoll bits 0.46 ... - A more uniform poll queueing interface with tips from Manfred - The f_op->poll() is done outside the irqlock to maintain compatibility with existing drivers that assume to be called with irq enabled - Moved event mask setting inside ep_modify() with tips from John - Fixed locking to fit the new "poll() outside the lock" approach - Bufferd userspace event delivery to reduce irq_lock/irq_unlock switching rate and to reduce the number of __copy_to_user() - Comments added [PATCH] epoll bit 0.47 - Improved file cleanup code [PATCH] dv1394 devfs use dv1394.c piles amazing amounts of crap around its devfs entries. Probably a result of times before devfs_find_and_unregister()... In any case, code switched to use of devfs_find_and_unregister(), crapectomy performed... [PATCH] dm use of devfs dm-ioctl.c does, er, interesting things to figure out the name of devfs node it had just created. Cleaned up. [PATCH] paride.c fed through Lindent [PATCH] eliminated use of devfs_auto_unregister() in checks.c [PATCH] cleaned up callers of devfs_mk_dir() [PATCH] devfs_register_tape() cleanup devfs_register_tape() returns the number it had assigned to tape. new helper: devfs_unregister_tape(number) - removes symlink created by devfs_register_tape() devfs_register_tape() doesn't use devfs_auto_unregister() anymore. devfs_register_tape() gets devfs entry of directory, instead of that of a random file in that directory. users updated [PATCH] gratitious MOD_INC_USE_COUNT dasd_proc.c : should be using ->owner instead of MOD_..._USE_COUNT in ->open()/->release(). s390/char/tape.c, s390/char/tapechar.c, usb/image/scanner.c, intermezzo/psdev.c: ditto intermezzo/super.c: they forgot to remove MOD_INC_USE_COUNT from the ..._fill_super() binfmt_som.c: ->load_binary() and ->load_library() don't need MOD_INC_USE_COUNT, since ->module is correctly set. [PATCH] paride protocols switched to ->owner Still not safe (we use __MOD_INC_USE_COUNT in paride.c; old code has MOD_INC_USE_COUNT in protocol drivers), but that takes crap in one place. ->owner added paride.c grabs/releases it if if present ->proto_init() became empty for almost everything ->proto_release() <<--->> ->proto_init() returns int now (the only case where we do have a non-empty ->proto_init() needed that all along). paride.c taught to deal with that. [PATCH] late-boot fixes Grrr... Two bugs in a patch that had moved md setup to late boot: a) we need md_run_setup() run before parsing root name. b) it's create_dev("/dev/md0",...), not create_dev("md0",...) ;-/ Updated to 2.5.45. [PATCH] Remove d_path from sched.h This patch from William Lee Irwin III privatizes __d_path() to dcache.c, uninlines d_path(), moves its declaration to dcache.h, moves it to dcache.c, and exports d_path() instead of __d_path(). [PATCH] Move fd-related functions from sched.h to file.h A minor removal of 6 function definitions from sched.h. They clearly fit better in file.h. All users of these functions already include file.h. And none of them included sched.h directly... [PATCH] Move request_irq & free_irq to interrupt.h It really makes no sense to have request_irq and free_irq in sched.h Let's move them to interrupt.h instead. Note that I also remove sched.h from interrupt.h since it's not needed. [PATCH] Move wait queue handling from sched.h to wait.h This patch removes all the wait_queue handling code from sched.h and puts it in wait.h with the rest of the wait_queue handling code. Note that sched.h must continue to include wait.h for the wait_queue_head_t embedded in struct task. However there may be files which only need wait.h now. [PATCH] direct-io bio_add_page fix From Badari. bio_add_page returns zero on failure - we need to propagate that to the dio_bio_add_page() caller. [PATCH] mbcache: add gfp_mask parameter to free() callback, Patch from Andreas Gruenbacher Add a gfp_mask parameter to the free() callback so that the callback can safely do I/O, etc. The free callback can now also fail. This will be needed by reiserfs. The order of entries on the cache entry lru is reversed so that list_for_each_safe() can be used. Several helper functions that don't make the code any better are removed. Finally, a couple of cosmetic things. [PATCH] run flush_cache_page while pte is valid Patch from Hugh Dickins On some architectures (cachetlb.txt gives HyperSparc as an example) it is essential to flush_cache_page while pte is still valid: the rmap VM diverged from the base 2.4 VM before that fix was made, so this error has crept back into 2.5. Patch below applies to 2.5.47 or 2.5.47-mm1 - needs more work over shared pagetables, but they've silently fallen out of 2.5.47-mm1: oversight? I'll send Alan the equivalent for 2.4-ac shortly. (I wonder, what happens if userspace now modifies the page after the flush_cache_page, before the pte is invalidated?) [PATCH] unlock_page when get_swap_bio fails Patch from Hugh Dickins swap_readpage and swap_writepage forgot to unlock_page if get_swap_bio failed. [PATCH] handle pages which alter their ->mapping Patch from Hugh Dickins tmpfs failed fsx+swapout tests after many hours, a page found zeroed. Not a truncate problem, but mirror image of earlier truncate problems: swap goes through mpage_writepages, which must therefore allow for a sudden swizzle back to file identity. Second time this caught us, so I've audited the tree for other places which might be surprised by such swizzling. The only others I found were (perhaps) in the parisc and sparc64 flush_dcache_page called from do_generic_mapping_read on a looped tmpfs file which is also mmapped; but that's a very marginal case, I wanted to understand it better before making any edit, and now realize that hch's sendfile in loop eliminates it (now go through do_shmem_file_read instead: similar but crucially this locks the page when raising its count, which is enough to keep vmscan from interfering). [PATCH] misc fixes - add init_timer in bttv driver - remove duplicated init_timer() in ncpfs. - remove noisy printk's from 3c59x.c - sparc64 compile fix with CONFIG_HUGETLBPAGE=y - htlbpage_max is now an int [PATCH] hugetlb cleanups A rollup of Bill's 11-patch series which replaces hugetlb's custom inode with a bare radix tree. Reviewed and acked by Rohit. - revert doublefreeing patch - Put set_new_inode() and the inode allocation loop into an alloc_key(), and introduce a new opaque type "struct hugetlb_key". - Wrap the release path in alloc_shared_hugetlb_pages() with a release_key() function that handles the release. - Wrap hugetlb_prefault() with prefault_key() in order to isolate the dependency on inodes for prefaulting the hugetlb vma. - Replaces the usage of inode->i_writecount as a flag marking keys busy with a boolean flag field in struct htlbpagekey, and removes the last dependency of alloc_shared_hugetlb_pages() on struct inode. - Remove the last direct usage of struct inode within the hugetlb functions. - Removes many direct usages of struct inode within the key manipulation API in exchange for passing references to the key structure itself. - Expand out prefault_key() into its hugetlb_prefault() component, but substitute stubs to abstract out inode access. - Move uid/gid/mode/size fields used in struct inode and the checks on them into key management code and structures. - Substitute direct usage of radix trees for inodes, and removes the custom-allocated inodes. - Wrap up the release path by adding proper refcounting of keys. [PATCH] more hugetlb fixes Patch from Rohit Seth, changelog from Bill Irwin: (1) fixes failure to clear key->busy (yes, it's always under a lock) (2) fixes key->count being unconditionally set to 1 in alloc_key() (3) reduces search to key->size >> HPAGE_SHIFT from key->size (4) actually uses vma->vm_private_data to release the key as intended plus the cleanup: (5) removes the int *new argument to alloc_key() [PATCH] improved slab error diagnostics slab does various consistency checks during `cat /proc/slabinfo' processing. If it finds one it stupidly goes BUG just before displaying the info which is required to diagnose the bug. Change it to not go BUG, but to emit some useful printks and continue. The patch also removes an uninteresting printk from the boot process. [PATCH] try to remove buffer_heads from to-be-reaped inodes Stephen Tweedie reports a 2.4.7 problem in which kswapd is chewing lots of CPU trying to reclaim inodes which are pinned by buffer_heads at i_dirty_buffers. This can only happen when there's memory pressure on ZONE_HIGHMEM - the 2.4 kernel runs shrink_icache_memory in that case as well. But there's no reclaim pressure on ZONE_NORMAL so the VM is never running try_to_free_buffers() against the ZONE_NORMAL buffers which are pinning the inodes. The 2.5 kernel also runs the slab shrinkers in response to ZONE_HIGHMEM pressure. This may be wrong - still thinking about that. This patch arranges for prune_icache to try to remove the inode's buffers when the inode is to be reclaimed. It also changes inode_has_buffers() and the other inode-buffer-list functions to look at inode->i_data, not inode->i_mapping. The latter was wrong. [PATCH] kmap->kmap_atomic in mpage.c Replace some kmaps in mpage.c with kmap_atomic. [PATCH] better inode reclaim balancing The inode reclaim is too aggressive at present - it is causing the shootdown of lots of recently-used pagecache. Simple testcase: run a huge `dd' while running a concurrent `watch -n1 cat /proc/meminfo'. The program text for `cat' gets loaded from disk once per second. This is in fact because the dentry_unused reclaim is too aggressive. (The general approach to inode reclaim is that it _not_ happen at the inode level. All the aging and lru activity happens at the dcache level.) The problem is partly due to a bug: shrink_dcache_memory() is returning the *total* number of dentries to the VM, rather than the number of unused dentries. This patch fixes that, and goes a little further. We do want to keep some unused dentries around. Reclaiming the last few thousand dentries is pretty pointless, and will allow reclaim of the last few thousand inodes and their attached pagecache. So the algorithm I have used is to not allow the number of unused dentries to fall below the number of used ones. This keeps a reasonable number of dentries in cache while providing a level of scaling to the system size and the current system activity. (Magic number alert: why not pin nr_unused to seven times nr_used, rather than one times??) shrink_dcache_memory() has been changed to tell the VM that the number of shrinkable dentries is: zero if (nr_unused < nr_used) otherwise (nr_unused - nr_used) so when there is memory pressure the VM will prune the unused dentry cache down to the size of the used dentry cache, but not below that. The patch also arranges (awkwardly) for all modifications of dentry_stat.nr_dentry to occur inside dcache_lock - it was racy. scsi.c: - Comment out GET_USE_COUNT, it's a bogus test anyway - Don't panic on failure to allocate sg table slab slots, fail gracefully - init_scsi() leaks all sorts of crap on failed module load A small Makefile change. move all procfs code to scsi_proc scsi.c gets really far too big, and having all code that depends on CONFIG_PROC_FS in scsi_proc.c is a nice cleanup. Note that much of the procfs code is really really ugly and wants a rewrite to at least use the seq_file interface and probably moving to sysfs. Update high level scsi drivers to use struct list_head in templates Update scsi.c for struct list_head in upper layer templates Update scsi.c for new module loader semantics aic7xxx_old: fix check_region/request_region usage so that the module may be loaded/unloaded/reloaded Christoph Hellwig posted a patch that conflicted with a lot of my own changes, so this is the merge of his work into my own. Updates to 2.5.47. [PATCH] remove sched.h from blkdev.h blkdev.h simply doesn't need sched.h [PATCH] remove sched.h from atmdev.h atmdev.h only wants wait.h, not sched.h [PATCH] remove sched.h from input.h input.h wants fs.h and timer.h, not sched.h [PATCH] remove sched.h from nfsd/cache.h nfsd/cache.h doesn't need sched.h, just sockaddr_in and iovec [PATCH] remove sched.h from parport.h parport only needs jiffies.h, not sched.h [PATCH] eliminate pci_dev name This removes the pci_dev "->name[]" field, and makes users use the "struct device" name field instead. It also trimps it down to 50 bytes and limited the length of the vendor & device descriptions to 20 bytes each. Now we have three cases: - unknown vendor & unknown device -> "PCI device %04x:%04x". Clearly limited to 21 chars. - known vendor, unknown device -> "PCI device %04x:%04x (%.20s)" 24 + 20 chars - known vendor, known device -> "%.20s %.20s" 20 + 1 + 20 + 1, EXCEPT: - multiple devices of the same type add " (#%d)" so 42 + 4 + 4 = 50. This is the point where an IBMer tells me they intend to sell a machine with > 9999 PCI devices of the same type ;-) This limits the PCI IDs to a reasonable amount of space. For release, I think we do want to go back up to 80 for prettier output [PATCH] nuke some crap from fs.h Remove four dead prototypes and don't include mount.h here - fs.h itself doesn't need it at all (just the struct vfsmount forward declaration) and gets it through dcache.h anyway. [PATCH] include mount.h explicitly were needed This is a preparation to get rid of the implicit includes in dcache.h and fs_struct.h. [PATCH] don't include mount.h in dcache.h Once again we only need a forward-declaration of struct vfsmount. [PATCH] move mount.h out of fs_struct.h It's only need for the two monster-inlines set_fs_root and set_fs_pwd that should better be out of line anyway. Some additional cleanup like named initializers as extra bonus. [PATCH] fork.c bits for uClinux mmuless ports don't need dup_mmap nor allocation of a pgd. I tried to avoid ifdef-mess as far as possible, and to archive that I created small wrappers for pgd allocation/freeing and move taking of the mmap semaphore into dup_mmap from the only caller. The end result is just one additiona ifdef. Fix up after pci name removal Fix up after header file cleanups: add to NFSD users that got it implicitly before. [PATCH] remove sched.h from if_pppox.h if_pppox simply doesn't need sched.h [PATCH] remove sched.h from i2c.h i2c.h simply doesn't need sched.h [PATCH] remove sched.h from ftape.h ftape.h really wants interrupt.h, not sched.h [PATCH] remove sched.h from elf.h elf.h simply doesn't need sched.h [PATCH] remove sched.h from coda_linux.h coda_linux simply doesn't need sched.h [PATCH] Add some missing includes to drivers/base drivers/base relies on device.h pulling in sched.h pulling in the rest of the world. Add some explicit dependencies in preparation for removing sched.h from device.h. Fix up after header file cleanups: add to quota that got it implicitly before. Fix up after header file cleanups: add to cifs that got it implicitly before. Fix up after header file cleanups: add to hugetlbfs that got it implicitly before. Fix up after header file cleanups: add to intermezzo that got it implicitly before. Fix up after header file cleanups: add to jffs2 that got it implicitly before. Fix up after header file cleanups: add to ntfs that got it implicitly before. Fix up after header file cleanups: add to pci_hotplug_core that got it implicitly before. Fix up after header file cleanups: add to smbfs that got it implicitly before. Fix up after header file cleanups: add to dquot that got it implicitly before. [ARM] Cleanup ARM configuration - FORCE_MAX_ZONEORDER should depend on SA1111, not a collection of machine specific configuration symbols. - RPCMOUSE is obsolete; replaced by MOUSE_RISCPC. [ARM] Clean up includes Remove unnecessary references to various include files from arch/arm [ARM] Fix flush_dcache_page() Make flush_dcache_page() handle user space mappings correctly; with a VIVT cache, we need to make sure that any user space cache lines are coherent with the kernels view of the same page of memory. o ps2esdi: fixups after header file cleanups Also fix a printk usage. [PATCH] epoll - just when you think it's over ... This does: - naming cleanup: ep_* -> eventpoll_* for non-static functions ( 2 ) - No more limit of 2 poll wait queue for each file* Before epoll used to have, inside its item struct, space for two wait queues. This was driven by the fact that during a f_op->poll() each file won't register more than one read and one write wait queue. Now, I'm not sure if this is 100% true or not, but with the current implementation a linked list of wait queues is kept to remove each limit. [PATCH] additional cleanup for f_op->poll This splits poll_table into one structure used by f_op->poll and one structure used by the implemenation of sys_poll/sys_select: poll_table contains just the callback function pointer. struct poll_wrapper additionally contains err and table, i.e. the members used by the poll implementation. Changes: - split poll_table into 2 structures - reorder the declarations in accordingly - uninline poll_initwait(). [PATCH] yenta resource handling bugs This adds error handling to the resource allocations in yenta.c: check that request_resource returns success, reduce allocation size if allocate_resource fails, free resources on module unload. [PATCH] cleanup: switch to passing *(struct rpc_procinfo) in rpc_message. The "procedure number" has been used for 2 purposes in the kernel client RPC implementation: 1) As a number to pass to the server in the RPC header. 2) As an index into the "procedure array" of type 'struct rpc_procinfo', from which the RPC layer can find the XDR encode/decode functions, buffer size, and all the other static data that it needs to construct the on-wire RPC message. This works fine for NFSv2, v3 and for the NLM locking code for which there is a one-to-one mapping between NFS file operations, and RPC procedures. For NFSv4 on the other hand, the mapping is many-to-one, since there is only one RPC procedure number: NFSPROC4_COMPOUND. For efficiency purposes, we want to have a one-to-one mapping between NFS file operations and the corresponding XDR encode/decode routines, but currently this is not possible because of (2). The result is the mess that is 'struct nfs4_op' and encode/decode_compound. In the process eliminating (2), we might as well change to passing a pointer to the appropriate procedure array entry instead of an index. This change can be made transparent The appended patch therefore does the following: - Substitute a pointer to the rpc_procinfo instead of the RPC procedure number in the struct rpc_message. - Make the RPC procedure number an entry in the struct rpc_procinfo. - Clean out the largely unused (except in some obscure lockd debugging code) p_name field. The latter was just a stringified version of the RPC procedure name, so for those lockd cases, we can use the RPC procedure number instead. [PATCH] trivial compile fix for pxa-regs.h [PATCH] don't include net.h in fs.h fs.h is pulling so much crap in.. No need to include net.h in fs.h if we move struct sock_alloc to net.h (which already includes fs.h through skbuf.h and mm.h..). Fixup the few files in net/ that relied on this, and the readv/writev implementations that got uio.h through net.h. [PATCH] Run timers as softirqs, not tasklets The timer code is attempting to replicate the softirq characteristics at the tasklet level, which is a little pointless. This patch converts timers to be a first-class softirq citizen. [PATCH] Emu10k1 gameport fix Change from PCI name to generic device name. [PATCH] move scsi_reset_provider to scsi_error.c it's clearly error-handling specific and allows to mark scsi_new_reset static Make sure we clean user_tid when we've released the memory space it was associated with. Fix up missing "struct iovec" declaration that was lost in cleanups o xd: fixup after header files cleanups: add include request_irq/free_irq are now in linux/interrupt.h [ARM] Optimise set_pmd Since we store two hardware pte tables contiguously, a common operation is to set two pmd entries. Rather than call set_pmd() with the associated overhead twice, we set the two PMD entries, and then call cpu_flush_pmd() to perform any CPU specific handling. o cpqarray/cciss: fixup after header files cleanups: add include request_irq/free_irq are now in linux/interrupt.h [PATCH] separate out moduleloader.h Separates the module loading function prototypes (and elf.h) into moduleloader.h. AT_GID in elf.h clashes with xfs.h, but this also makes module.h less cluttered. [PATCH] Allocate struct module using special allocator Sparc64 (and probably others) need all the kernel symbols within 32-bits, which includes the manufactured "__this_module" which refers to the struct module *. This changes the interface back to its old style: the arch-specific code manipulates the init and core sizes, and we call module_alloc() ourselves. [PATCH] add strcspn() library function This patch implements a generic strcspn. [PATCH] Forced module unload This is the logical counterpoint to the code which marks modules "[unsafe]" when obsolete (racy) interfaces are used. Allows "just remove the damn thing" rmmod -f, and taints the kernel. Mark it dangerous and experimental in the config file to make this doubly clear. [PATCH] Export module_dummy_usage Trivial patch. We keep a dummy use count for old code which wants to know its own usecount using GET_USE_COUNT. It needs to be exported. Thanks to Doug Ledford for the bug report. [PATCH] threading fix, tid-2.5.47-A3 This introduces the sys_set_thread_address() syscall. It sets the tid address (which gets cleared at VM release time) and returns the PID so that the newly initialized 'initial thread' does not have to do an additional sys_gettid() call. It is used to bootstrap a thread group where the original thread user hasn't had a tid address assigned to it by any parent. o mcd/mcdx: fixup after header files cleanups: add include request_irq/free_irq are now in linux/interrupt.h o tp3870i: fixup after header files cleanups: add include request_irq/free_irq are now in linux/interrupt.h [PATCH] UDF sync with CVS This patch updates udf to the CVS version: - removes UDF_RW - fixes a extraneous read after write which killed CDRW performance - fixes setting the session - fix a array index bug in udf_prealloc_extents - fix symlinks to correspond to the UDF spec module.c: allow modules to enter themselves during mod init [ARM] Finally kill old ecard device discovery interfaces. This cset kills the old racy ecard device discovery interfaces, converting the remaining drivers to use the new LDM-based interface. pci/setup-bus.c: Fix compile bustage from pci header cleanup Add forgotten system call number for set_tid_address() [ARM] Move ARMv4 wbi functions to separate file This allows the ARMv4 write buffer + icache entry handling instructions to be left out of a kernel which doesn't have separate icache entry handling instructions. [PATCH] drivers/char/raw.c Missing due to header file cleanups. [PATCH] fs/autofs/dirhash.c fs/autofs/dirhash.c needs mount.h for mntget. I've added the #include into the central header file, it seems the author wants one central header for all .c files in fs/autofs [PATCH] More rpc cleanup... Don't share a routing for xdr_encode_mon/umon. What we really want to do is split the XDR routine into one which does SM_MON encodes, and the other which does SM_UNMON. Remove some unused "void" encoders / decoders to avoid compiler warnings. move sd_init_onedisk so that the disk name is usable After the gendisk changes, the disk name disappeared from the initialisation methods (sd_spinup et al) because the disk name is set after the init routines are called. This moves init to be after the name is set [PATCH] drivers/pcmcia/i8???.c - function prototypes for request_irq were missing - after including , I got an error due to a conflict with the 'irq_count()' macro and the irq_count function. Rename to i385_count_irq Initialize exception tables early - don't use an initcall, since they are needed for early arch initialization. Thanks to Manfred for pointing this out. [update] scsi_mid_low_api.txt Here is another version of the scsi_mid_low_api.txt document. It adds descriptions of functions supplied by the mid level for a LLD (lower level driver) to call. It is also tries to describe the two, alternate registration scenarios. How do the terms: "hotplug initialization model" and "passive initialization model" sound? final tidy up of hch/dledford merger [PATCH] pull even more crap out of fs.h Don't include the following headers implicitly through fs.h: stddef.h, string.h, bitops.h, pipe_fs_i.h, ext3_fs_i.h, efs_fs_i.h and fixup the fallout.. Tidy up compile warnings in scsi.c [PATCH] nanosecond stat timefields stat64 has been changed to return jiffies granuality as nsec in previously unused fields. This allows make to make better decisions on when to recompile a file. Follows losely the Solaris API. CURRENT_TIME has been redefined to return struct timespec. The users who don't use it in a inode/attr context have been changed to use a new get_seconds() function. CURRENT_TIME is implemented by an out-of-line function. There is a small performance penalty in this patch. The previous filemap code had an optimization to flush atime only once a second. This is currently gone, which will increase flushes a bit. I believe the correct solution if it should be a problem is to have per super block fields that give an arbitary atime flush granuality - so that you can set it to be only flushed once a hour if you prefer that. I will work on that later in separate patches if the need should arise. struct inode and the attr struct has been changed to store struct timespec instead of time_t for [cma]time. Not all file systems support this granuality, but some like XFS,NFSv3,CIFS,JFS do. The others will currently truncate the nsec part on flushing to disk. There was some discussion on this rounding on l-k previously. I went for simple truncation because there is not much evidence IMHO that the more complicated roundings have any advantages. In practice application will be rather unlikely to notice the rounding anyways - they can only see a difference when an inode is flush from memory and reloaded in less than a second, which is rather unlikely. [PATCH] devfs_remove() helper All callers of devfs_find_and_unregister() pass 0 in 6th argument. All uses of that function either pass 0 in 3rd and 4th argument (in which case the 5th is ignored) or pass the existing pathname in the 2nd (in which case 3rd, 4th and 5th are ignored). In all cases the first argument can be trivially made NULL. devfs_find_and_unregister() is left as-is. All existing callers converted to new helper - devfs_remove(pathname). Said beast does equivalent of devfs_find_and_unregister(NULL, pathname, 0, 0, 0, 0); [PATCH] more bogus MOD_INC_USE_COUNT removals - example in Documentation/DocBook/procfs_example.c uses MOD_..._USE_COUNT for no reason. - alpha/kernel/srm_env.c uses MOD_...USE_COUNT for no reason _and_ does lovely stuff like strlen() on user-supplied pointers, copy_from_user() with unverified size, half-kilobyte on-stack arrays, etc. Fixed. - s390{,x}/kernel/debug.c: set ->owner instead of playing with MOD_..._USE_COUNT in ->open()/->release() - mwavedd.c: gratitious use of MOD_..._USE_COUNT - uinput.c: ditto - radio/miropcm20-rds.c: set ->owner, remove MOD_..._USE_COUNT from ->open()/->release(), fixed an obvious race in the former (it checked that nobody else had device opened, then did kmalloc() with GFP_KERNEL, then marked device as opened). o mtpav: fix up header file cleanup: add include o ncpfs: fix up header cleanup: forward declare struct sock. [PATCH] fix for rescan_partitions() Check for ->bd_invalidate moved from rescan_partitions() to the only caller that a) needs that check and b) doesn't do it already. Fixes the problem with BLKRRPART which doesn't want that check at all... Fix up devfs handling for when it is disabled. o sound: fix up header cleanups: add include Also convert cmipci to C99 designated initializers style o char: fix up header cleanups: include linux/interrupt.h Also there is one sound header that was modified in the same way. Linux v2.5.48