summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* NFS: Ensure that nfs_wb_page() calls writepage when necessary.Trond Myklebust2006-12-062-4/+31
| | | | Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
* NFS: Add nfs_set_page_dirty()Trond Myklebust2006-12-064-14/+39
| | | | | | | | | | We will want to allow nfs_writepage() to distinguish between pages that have been marked as dirty by the VM, and those that have been marked as dirty by nfs_updatepage(). In the former case, the entire page will want to be written out, and so any requests that were pending need to be flushed out first. Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
* NFS: Remove nfs_writepage_sync()Trond Myklebust2006-12-066-258/+10
| | | | | | | | Maintaining two parallel ways of doing synchronous writes is rather pointless. This patch gets rid of the legacy nfs_writepage_sync(), and replaces it with the faster asynchronous writes. Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
* NFS: More cleanups of fs/nfs/write.cTrond Myklebust2006-12-061-44/+24
| | | | Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
* NFS: Remove call to igrab() from nfs_writepage()Trond Myklebust2006-12-061-15/+1
| | | | | | | | We always ensure that the nfs_open_context holds a reference to the dentry, so the test in nfs_writepage() for whether or not the inode is referenced is redundant. Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
* NFS: Cleanup: add common helper nfs_page_length()Trond Myklebust2006-12-063-63/+31
| | | | | | Clean up a lot of ad-hoc page length calculations in fs/nfs/write.c Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
* NFS: Store pointer to the nfs_page in page->privateTrond Myklebust2006-12-061-33/+33
| | | | | | | This will allow fast lookup of the nfs_page from the struct page instead of having to search the radix tree. Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
* NFS: cleanup of nfs_sync_inode_wait()Trond Myklebust2006-12-064-39/+92
| | | | | | Allow callers to directly pass it a struct writeback_control. Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
* NFS: Clean up nfs_scan_dirty()Trond Myklebust2006-12-064-66/+71
| | | | | | Pass down struct writeback control. Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
* NFS: Clean up nfs_flush_inode()Trond Myklebust2006-12-061-10/+10
| | | | | | | Make it take a struct writepages argument, and rename to nfs_flush_mapping(). Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
* SUNRPC: Make the transport-specific setup routine allocate rpc_xprtChuck Lever2006-12-063-47/+61
| | | | | | | | | | | | | | | Change the location where the rpc_xprt structure is allocated so each transport implementation can allocate a private area from the same chunk of memory. Note also that xprt->ops->destroy, rather than xprt_destroy, is now responsible for freeing rpc_xprt when the transport is destroyed. Test plan: Connectathon. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
* SUNRPC: minor optimization of "xid" field in rpc_xprtChuck Lever2006-12-061-6/+1
| | | | | | | | | | | Move the xid field in the rpc_xprt structure to be in the same cache line as the reserve_lock, since these are used at the same time. Test plan: None. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
* SUNRPC: Clean up xs_send_pages()Trond Myklebust2006-12-061-75/+65
| | | | Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
* SUNRPC: Ensure xdr_buf_read_netobj() checks for memory overrunsTrond Myklebust2006-12-061-33/+26
| | | | | | Also clean up the code... Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
* SUNRPC: Add __(read|write)_bytes_from_xdr_bufTrond Myklebust2006-12-061-29/+37
| | | | Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
* SUNRPC: Clean up argument types in xdr.cTrond Myklebust2006-12-062-49/+49
| | | | | | Converts various integer buffer offsets and sizes to unsigned integer. Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
* NFS: Remove use of the Big Kernel Lock around nfs calls to readlinkFrank Filz2006-12-061-2/+0
| | | | | | | | | Remove use of the Big Kernel Lock around indirect calls to nfs3_proc_readlink and nfs4_proc_readlink, both of which basically call rpc_call_sync. Signed-off-by: Frank Filz <ffilz@us.ibm.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
* NFS: Remove use of the Big Kernel Lock around calls to rpc_call_syncFrank Filz2006-12-063-8/+0
| | | | | | | Remove use of the Big Kernel Lock around calls to rpc_call_sync. Signed-off-by: Frank Filz <ffilz@us.ibm.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
* NFS: Remove use of the Big Kernel Lock around calls to rpc_execute.Frank Filz2006-12-063-10/+0
| | | | | | | Remove use of the Big Kernel Lock around calls to rpc_execute. Signed-off-by: Frank Filz <ffilz@us.ibm.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
* SUNRPC: Remove BKL around the RPC socket operations etc.Trond Myklebust2006-12-062-5/+11
| | | | | | | All internal RPC client operations should no longer depend on the BKL, however lockd and NFS callbacks may still require it. Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
* SUNRPC: Fix up missing BKL in asynchronous RPC callback functionsTrond Myklebust2006-12-063-6/+13
| | | | Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
* SUNRPC: Give cloned RPC clients their own rpc_pipefs directoryTrond Myklebust2006-12-062-10/+14
| | | | Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
* SUNRPC: Handle the cases where rpc_alloc_iostats() failsTrond Myklebust2006-12-061-1/+10
| | | | Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
* NFS: Fix nfs_sync_inode_wait(FLUSH_INVALIDATE)Trond Myklebust2006-12-061-2/+4
| | | | | | | Currently nfs_sync_inode_wait() will fail to loop correctly when we call nfs_sync_inode_wait with the FLUSH_INVALIDATE argument. Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
* NFS: Fix missing page_unlock() in nfs_readpageTrond Myklebust2006-12-061-4/+6
| | | | Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
* NFS: Fix asynchronous read error handlingTrond Myklebust2006-12-061-71/+69
| | | | | | | | | | | | | | | | | | | | | We must always call ->read_done() before we truncate the page data, or decide to flag an error. The reasons are that in NFSv2, ->read_done() is where the eof flag gets set. in NFSv3/v4 ->read_done() handles EJUKEBOX-type errors, and v4 state recovery. However, we need to mark the pages as uptodate before we deal with short read errors, since we may need to modify the nfs_read_data arguments. We therefore split the current nfs_readpage_result() into two parts: nfs_readpage_result(), which calls ->read_done() etc, and nfs_readpage_retry(), which subsequently handles short reads. Note: Removing the code that retries in case of a short read also fixes a bug in nfs_direct_read_result(), which used to return a corrupted number of bytes. Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
* NFS Exclusive open not supported bugAndy Ryan2006-12-061-1/+1
| | | | | | | | | | | When trying to open a file with the O_EXCL flag over NFS on a server that does not support exclusive mode, the file does not open. The reason, rpc_call_sync returns a errno number, and not the nfs error number. I fixed it by changing the status check in nfs3proc.c. Either this is how it should be fixed, or rpc_call_sync should be fixed to return the NFS error. Signed-off-by: Andy Ryan <genanr@allantgroup.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
* SUNRPC: Fix a potential race in rpc_wake_up_task()Trond Myklebust2006-12-065-20/+47
| | | | | | | | Use RCU to ensure that we can safely call rpc_finish_wakeup after we've called __rpc_do_wake_up_task. If not, there is a theoretical race, in which the rpc_task finishes executing, and gets freed first. Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
* Fix a second potential rpc_wakeup race...Trond Myklebust2006-12-066-57/+65
| | | | Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
* Subject: Re: [PATCH] Fix SUNRPC wakeup/execute race conditionChristophe Saout2006-12-061-4/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | The sunrpc scheduler contains a race condition that can let an RPC task end up being neither running nor on any wait queue. The race takes place between rpc_make_runnable (called from rpc_wake_up_task) and __rpc_execute under the following condition: First __rpc_execute calls tk_action which puts the task on some wait queue. The task is dequeued by another process before __rpc_execute continues its execution. While executing rpc_make_runnable exactly after setting the task `running' bit and before clearing the `queued' bit __rpc_execute picks up execution, clears `running' and subsequently both functions fall through, both under the false assumption somebody else took the job. Swapping rpc_test_and_set_running with rpc_clear_queued in rpc_make_runnable fixes that hole. This introduces another possible race condition that can be handled by checking for `queued' after setting the `running' bit. Bug noticed on a 4-way x86_64 system under XEN with an NFSv4 server on the same physical machine, apparently one of the few ways to hit this race condition at all. Cc: Trond Myklebust <trond.myklebust@fys.uio.no> Cc: J. Bruce Fields <bfields@citi.umich.edu> Signed-off-by: Christophe Saout <christophe@saout.de> Signed-off-by: Trond Myklebust <trond.myklebust@fys.uio.no>
* Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6Linus Torvalds2006-12-0583-1126/+4760
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (73 commits) [SCSI] aic79xx: Add ASC-29320LPE ids to driver [SCSI] stex: version update [SCSI] stex: change wait loop code [SCSI] stex: add new device type support [SCSI] stex: update device id info [SCSI] stex: adjust default queue length [SCSI] stex: add value check in hard reset routine [SCSI] stex: fix controller_info command handling [SCSI] stex: fix biosparam calculation [SCSI] megaraid: fix MMIO casts [SCSI] tgt: fix undefined flush_dcache_page() problem [SCSI] libsas: better error handling in sas_expander.c [SCSI] lpfc 8.1.11 : Change version number to 8.1.11 [SCSI] lpfc 8.1.11 : Misc Fixes [SCSI] lpfc 8.1.11 : Add soft_wwnn sysfs attribute, rename soft_wwn_enable [SCSI] lpfc 8.1.11 : Removed decoding of PCI Subsystem Id [SCSI] lpfc 8.1.11 : Add MSI (Message Signalled Interrupts) support [SCSI] lpfc 8.1.11 : Adjust LOG_FCP logging [SCSI] lpfc 8.1.11 : Fix Memory leaks [SCSI] lpfc 8.1.11 : Fix lpfc_multi_ring_support ...
| * [SCSI] aic79xx: Add ASC-29320LPE ids to driverSalyzyn, Mark2006-12-053-1/+9
| | | | | | | | | | | | | | Simple patch to add the new PCIe version of the 29320 card. Signed-off: Mark Salyzyn <Mark_Salyzyn@adaptec.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] stex: version updateEd Lin2006-12-051-4/+2
| | | | | | | | | | | | | | Update version to 3.1.0.1 Signed-off-by: Ed Lin <ed.lin@promise.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] stex: change wait loop codeEd Lin2006-12-051-21/+20
| | | | | | | | | | | | | | | | | | The original wait loop may be much longer than intended time. Use more accurate timer_after for it. Also adjust wait value to avoid unnecessary long waiting. Signed-off-by: Ed Lin <ed.lin@promise.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] stex: add new device type supportEd Lin2006-12-051-7/+21
| | | | | | | | | | | | | | | | Add support for st_vsc1 type device (st_vsc is ok because it does not require extra buffer). Signed-off-by: Ed Lin <ed.lin@promise.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] stex: update device id infoEd Lin2006-12-052-11/+33
| | | | | | | | | | | | | | | | | | | | | | - add comments for various devices - remove unused device ids(0xf350, 0x4301, 0x8301, 0x8302) - add new device id(0xe350) - fix vendor id of st_vsc - modify Kconfig help info Signed-off-by: Ed Lin <ed.lin@promise.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] stex: adjust default queue lengthEd Lin2006-12-051-1/+10
| | | | | | | | | | | | | | | | Firmware of new version may adjust default queue length. It is backward compatible. Signed-off-by: Ed Lin <ed.lin@promise.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] stex: add value check in hard reset routineEd Lin2006-12-051-1/+1
| | | | | | | | | | | | | | During hard reset, an all-1 value from PCI_COMMAND should be invalid. Signed-off-by: Ed Lin <ed.lin@promise.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] stex: fix controller_info command handlingEd Lin2006-12-051-0/+1
| | | | | | | | | | | | | | | | This command needs information from both firmware and driver. First copy information from firmware to buffer, then fill in driver information. Signed-off-by: Ed Lin <ed.lin@promise.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] stex: fix biosparam calculationEd Lin2006-12-051-3/+3
| | | | | | | | | | | | | | Fix biosparam calculation. Signed-off-by: Ed Lin <ed.lin@promise.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] megaraid: fix MMIO castsJeff Garzik2006-12-052-6/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | megaraid's MMIO RD*/WR* macros directly call readl() and writel() with an 'unsigned long' argument. This throws a warning, but is otherwise OK because the 'unsigned long' is really the result of ioremap(). This setup is also OK because the variable can hold an ioremap cookie /or/ a PCI I/O port (PIO). However, to fix the warning thrown when readl() and writel() are passed an unsigned long cookie, I introduce 'void __iomem *mmio_base', holding the same value as 'base'. This will silence the warnings, and also cause an oops whenever these MMIO-only functions are ever accidentally passed an I/O address. Signed-off-by: Jeff Garzik <jeff@garzik.org> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] tgt: fix undefined flush_dcache_page() problemakpm@osdl.org2006-12-051-0/+2
| | | | | | | | | | | | | | | | drivers/scsi/scsi_tgt_if.c: In function 'tgt_uspace_send_event': drivers/scsi/scsi_tgt_if.c:88: warning: implicit declaration of function 'flush_dcache_page' Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] libsas: better error handling in sas_expander.cJames Bottomley2006-12-031-12/+24
| | | | | | | | | | | | | | With async scanning, we're now tripping the BUG_ON in sas_ex_discover_end_dev(), so make the error handling here correct. Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] lpfc 8.1.11 : Change version number to 8.1.11James Smart2006-12-031-1/+1
| | | | | | | | | | | | | | Change version number to 8.1.11 Signed-off-by: James Smart <James.Smart@emulex.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] lpfc 8.1.11 : Misc FixesJames Smart2006-12-034-3/+35
| | | | | | | | | | | | | | | | | | | | | | Misc Fixes: - Prevent references to NULL node list element in reset routines. - Add missing IOCB types to switch tables - Reset the card on Port Error 5 - Fix infinite loop in LUN reset Signed-off-by: James Smart <James.Smart@emulex.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] lpfc 8.1.11 : Add soft_wwnn sysfs attribute, rename soft_wwn_enableJames Smart2006-12-034-11/+80
| | | | | | | | | | | | | | The driver now allows both wwpn and wwnn to be set. Signed-off-by: James Smart <James.Smart@emulex.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] lpfc 8.1.11 : Removed decoding of PCI Subsystem IdJames Smart2006-12-032-84/+35
| | | | | | | | | | | | | | | | | | | | To avoid continually updating the driver for new subsystem ids (as adapter modules are proliferating), remove this 2nd level decode. Genericize the reported Adapter names to be consistent across Emulex product line. Signed-off-by: James Smart <James.Smart@emulex.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] lpfc 8.1.11 : Add MSI (Message Signalled Interrupts) supportJames Smart2006-12-033-0/+22
| | | | | | | | | | | | | | | | | | | | | | | | Add MSI (Message Signalled Interrupts) support Actual use must be enabled via the new module parameter "lpfc_use_msi" Defaults to no use Many thanks to Frederic Temporelli who implemented the initial patch. Signed-off-by: Frederic Temporelli <frederic.temporelli@ext.bull.net> Signed-off-by: James Smart <James.Smart@emulex.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] lpfc 8.1.11 : Adjust LOG_FCP loggingJames Smart2006-12-033-15/+24
| | | | | | | | | | | | | | Adjust LOG_FCP logging to be more meaningful. Signed-off-by: James Smart <James.Smart@emulex.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] lpfc 8.1.11 : Fix Memory leaksJames Smart2006-12-034-7/+41
| | | | | | | | | | | | | | Fix Memory leaks associated with mbox cmds READ_LA, READ_SPARAM, REG_LOGIN Signed-off-by: James Smart <James.Smart@emulex.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>