- 07 1月, 2008 1 次提交
-
-
由 Linus Torvalds 提交于
This reverts commit ac40532e, which gets us back the original cleanup of 6f5391c2. It turns out that the bug that was triggered by that commit was apparently not actually triggered by that commit at all, and just the testing conditions had changed enough to make it appear to be due to it. The real problem seems to have been found by Peter Osterlund: "pktcdvd sets it [block device size] when opening the /dev/pktcdvd device, but when the drive is later opened as /dev/scd0, there is nothing that sets it back. (Btw, 40944 is possible if the disk is a CDRW that was formatted with "cdrwtool -m 10236".) The problem is that pktcdvd opens the cd device in non-blocking mode when pktsetup is run, and doesn't close it again until pktsetup -d is run. The effect is that if you meanwhile open the cd device, blkdev.c:do_open() doesn't call bd_set_size() because bdev->bd_openers is non-zero." In particular, to repeat the bug (regardless of whether commit 6f5391c2 is applied or not): " 1. Start with an empty drive. 2. pktsetup 0 /dev/scd0 3. Insert a CD containing an isofs filesystem. 4. mount /dev/pktcdvd/0 /mnt/tmp 5. umount /mnt/tmp 6. Press the eject button. 7. Insert a DVD containing a non-writable filesystem. 8. mount /dev/scd0 /mnt/tmp 9. find /mnt/tmp -type f -print0 | xargs -0 sha1sum >/dev/null 10. If the DVD contains data beyond the physical size of a CD, you get I/O errors in the terminal, and dmesg reports lots of "attempt to access beyond end of device" errors." which in turn is because the nested open after the media change won't cause the size to be set properly (because the original open still holds the block device, and we only do the bd_set_size() when we don't have other people holding the device open). The proper fix for that is probably to just do something like bdev->bd_inode->i_size = (loff_t)get_capacity(disk)<<9; in fs/block_dev.c:do_open() even for the cases where we're not the original opener (but *not* call bd_set_size(), since that will also change the block size of the device). Cc: Peter Osterlund <petero2@telia.com> Cc: James Bottomley <James.Bottomley@HansenPartnership.com> Cc: Matthew Wilcox <matthew@wil.cx> Cc: Ingo Molnar <mingo@elte.hu> Cc: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
-
- 03 1月, 2008 1 次提交
-
-
由 Ingo Molnar 提交于
This reverts commit 6f5391c2 ("[SCSI] Get rid of scsi_cmnd->done") that was supposed to be a cleanup commit, but apparently it causes regressions: Bug 9370 - v2.6.24-rc2-409-g9418d5dc: attempt to access beyond end of device http://bugzilla.kernel.org/show_bug.cgi?id=9370 this patch should be reintroduced in a more split-up form to make testing of it easier. Signed-off-by: NIngo Molnar <mingo@elte.hu> Acked-by: NMatthew Wilcox <matthew@wil.cx> Cc: James Bottomley <James.Bottomley@HansenPartnership.com> Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
-
- 18 10月, 2007 1 次提交
-
-
由 James Bottomley 提交于
Spotted by Paul Jackson <pj@sgi.com> The error handler rework moved the scatterlist into a globally exposed structure in scsi_eh.h; unfortunately, the scatterlist include needs to move from scsi_error.c to scsi_eh.h to allow this to compile universally. Acked-by: NPaul Jackson <pj@sgi.com> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
- 13 10月, 2007 6 次提交
-
-
由 Boaz Harrosh 提交于
- Drivers/transports that want to send a synchronous REQUEST_SENSE command as part of their .queuecommand sequence, have 2 new API's that facilitate in doing so and abstract them from scsi-ml internals. void scsi_eh_prep_cmnd(struct scsi_cmnd *scmd, struct scsi_eh_save *sesci, unsigned char *cmnd, int cmnd_size, int sense_bytes) Will hijack a command and prepare it for request sense if needed. And will save any later needed info into a scsi_eh_save structure. void scsi_eh_restore_cmnd(struct scsi_cmnd* scmd, struct scsi_eh_save *sesci); Will undo any changes done to a command by above function. Making it ready for completion. - Re-factor scsi_send_eh_cmnd() to use above APIs Signed-off-by: NBoaz Harrosh <bharrosh@panasas.com> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
由 Boaz Harrosh 提交于
- regrouped variables for easier reviewing of next patch - Support of cmnd==NULL in call to scsi_send_eh_cmnd() - In the @sense_bytes case set transfer size to the minimum size of sense_buffer and passed @sense_bytes. cmnd[4] is set accordingly. - REQUEST_SENSE is set into cmnd[0] so if @sense_bytes is not Zero passed @cmnd should be NULL. - Also save/restore resid of failed command. - Adjust caller Signed-off-by: NBoaz Harrosh <bharrosh@panasas.com> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
由 Matthew Wilcox 提交于
The ULD ->done callback moves into the scsi_driver. By moving the call to scsi_io_completion() from scsi_blk_pc_done() to scsi_finish_command(), we can eliminate the latter entirely. By returning 'good_bytes' from the ->done callback (rather than invoking scsi_io_completion()), we can stop exporting scsi_io_completion(). Also move the prototypes from sd.h to sd.c as they're all internal anyway. Rename sd_rw_intr to sd_done and rw_intr to sr_done. Inspired-by: NChristoph Hellwig <hch@infradead.org> Signed-off-by: NMatthew Wilcox <willy@linux.intel.com> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
由 Matthew Wilcox 提交于
The pid field is a duplicate of the serial_number field and has been scheduled for removal for a long time. A few drivers were still using it, so just change them to use serial_number instead. Signed-off-by: NMatthew Wilcox <willy@linux.intel.com> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
由 Matthew Wilcox 提交于
The current code prints: scsi 13:0:4:0: scsi: Device offlined - not ready after error recovery which is repetitively redundant. This patch changes that message to: scsi 6:0:6:0: Device offlined - not ready after error recovery Signed-off-by: NMatthew Wilcox <matthew@wil.cx> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
由 Adrian Bunk 提交于
Every file should #include the headers containing the prototypes for its global functions (in this case for scsi_schedule_eh()). Signed-off-by: NAdrian Bunk <bunk@stusta.de> Signed-off-by: NAndrew Morton <akpm@linux-foundation.org> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
- 18 7月, 2007 1 次提交
-
-
由 Rafael J. Wysocki 提交于
Currently, the freezer treats all tasks as freezable, except for the kernel threads that explicitly set the PF_NOFREEZE flag for themselves. This approach is problematic, since it requires every kernel thread to either set PF_NOFREEZE explicitly, or call try_to_freeze(), even if it doesn't care for the freezing of tasks at all. It seems better to only require the kernel threads that want to or need to be frozen to use some freezer-related code and to remove any freezer-related code from the other (nonfreezable) kernel threads, which is done in this patch. The patch causes all kernel threads to be nonfreezable by default (ie. to have PF_NOFREEZE set by default) and introduces the set_freezable() function that should be called by the freezable kernel threads in order to unset PF_NOFREEZE. It also makes all of the currently freezable kernel threads call set_freezable(), so it shouldn't cause any (intentional) change of behaviour to appear. Additionally, it updates documentation to describe the freezing of tasks more accurately. [akpm@linux-foundation.org: build fixes] Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl> Acked-by: NNigel Cunningham <nigel@nigel.suspend2.net> Cc: Pavel Machek <pavel@ucw.cz> Cc: Oleg Nesterov <oleg@tv-sign.ru> Cc: Gautham R Shenoy <ego@in.ibm.com> Signed-off-by: NAndrew Morton <akpm@linux-foundation.org> Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
-
- 24 5月, 2007 1 次提交
-
-
由 James Bottomley 提交于
Now that the block submission path correctly bounces, we can simply use the command sense_buffer to send to retrieve sense information and junk the unnecessary page allocation. Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
- 06 5月, 2007 1 次提交
-
-
由 Brian King 提交于
Use the sysfs configurable timeout when issuing a START_UNIT command from the scsi error handler. This is needed for devices which take longer than thirty seconds to respond to the start unit. The problem was observed when sending a start unit to a disk array device in an ipr RAID adapter, which results in the adapter firmware sending potentially multiple commands to physical devices as a result of this command, which ended up timing out sometimes. This patch does not change the default value used for this command. Signed-off-by: NBrian King <brking@linux.vnet.ibm.com> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
- 18 4月, 2007 1 次提交
-
-
由 Brian King 提交于
Currently, the scsi error handler will issue a START_UNIT command if the drive indicates it needs its motor started and the allow_restart flag is set in the scsi_device. If, after the scsi error handler invokes a host adapter reset due to error recovery, a device is in a unit attention state AND also needs a START_UNIT, that device will be placed offline. The disk array devices on an ipr RAID adapter will do exactly this when in a dual initiator configuration. This patch adds a single retry to the EH initiated START_UNIT. Signed-off-by: NBrian King <brking@linux.vnet.ibm.com> Patch modified and Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
- 03 4月, 2007 1 次提交
-
-
由 David S. Miller 提交于
This fixes a regression caused by commit: 2dc611de The sense buffer code in scsi_send_eh_cmnd was changed to use alloc_page() and a scatter list, but the sense data copy was not updated to match so what we actually get in the sense buffer is total grabage starting with the kernel address of the struct page we got. Basically the stack frame of scsi_send_eh_cmd() is what ends up in the sense buffer. Depending upon how pointers look on a given platform, you can end up getting sr_ioctl.c errors when you mount a cdrom. If the CDROM gives a check condition for GPCMD_GET_CONFIGURATION issued by drivers/cdrom/cdrom.c:cdrom_mmc_profile(), sr_ioctl will spit out this error message in sr_do_ioctl() with the way pointers are on sparc64: default: printk(KERN_ERR "%s: CDROM (ioctl) error, command: ", cd->cdi.name); __scsi_print_command(cgc->cmd); scsi_print_sense_hdr("sr", &sshdr); err = -EIO; This is the error Tom Callaway reported in: http://marc.info/?l=linux-sparc&m=117407453208101&w=2 Anyways, fix this by using page_address(sgl.page) which is OK because we know this is low-mem due to GFP_ATOMIC. Signed-off-by: NDavid S. Miller <davem@davemloft.net> Acked-by: NChristoph Hellwig <hch@lst.de>
-
- 20 3月, 2007 1 次提交
-
-
由 James Bottomley 提交于
It looks like megaraid_sas at least needs this to throttle its commands as they begin to time out. The code keeps the existing transport template use of eh_timed_out (and allows the transport to override the host if they both have this callback). Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
- 03 2月, 2007 1 次提交
-
-
由 Brian King 提交于
If an EH command times out today, the LLDD's abort handler will be called to abort the command. It is assumed that this completes successfully, which can result in the command getting completed later resulting in an oops. Improve the current implementation by escalating all the way to host reset if necessary in order to clean up the EH command. Signed-off-by: NBrian King <brking@linux.vnet.ibm.com> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
- 01 2月, 2007 1 次提交
-
-
由 Luben Tuikov 提交于
1) If the device reports an uncorrectable MEDIUM ERROR, such as SK MEDIUM ERROR, ASC UNRECOVERED READ ERR, AMNF DATA FIELD or RECORD NOT FOUND, then: In scsi_check_sense() return SUCCESS so as to not retry -- the error is uncorrectable -- this speeds up total processing time. Signed-off-by: NLuben Tuikov <ltuikov@yahoo.com> Extracted the MEDIUM ERROR piece and Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
- 28 1月, 2007 1 次提交
-
-
由 Darrick J. Wong 提交于
Export a couple of functions from scsi_error that are needed to handle failed SCSI commands from the SAS EH. Signed-off-by: NDarrick J. Wong <djwong@us.ibm.com> make exports GPL and Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
- 16 11月, 2006 1 次提交
-
-
由 Christoph Hellwig 提交于
scsi_send_eh_cmnd is the last user of non-sg commands currently. This patch switches it to a one-element SG list. Also updates the kerneldoc comment for scsi_send_eh_cmnd to reflect reality while we're at it. Test on my mptsas card, but this should get testing with as many drivers as possible. Signed-off-by: NChristoph Hellwig <hch@lst.de> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
- 11 10月, 2006 1 次提交
-
-
由 Al Viro 提交于
Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk> Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
-
- 13 9月, 2006 1 次提交
-
-
由 Stefan Richter 提交于
Fixup for lockdep enabled kernels: Annotate an on-stack completion. Signed-off-by: NStefan Richter <stefanr@s5r6.in-berlin.de> Acked-by: NIngo Molnar <mingo@elte.hu> Cc: James Bottomley <James.Bottomley@steeleye.com> Signed-off-by: NAndrew Morton <akpm@osdl.org> Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
-
- 26 8月, 2006 1 次提交
-
-
由 Mike Christie 提交于
The callers of scsi_send_eh_cmnd are setting the cmnd buffer, and then scsi_send_eh_cmnd is copying that updated buffer to the old_cmnd variable. Then after the command runs, we end up copying that old_cmnd var which has the new cmnd to the scsi command buffer. When this command gets recent, all types of fun things happen like getting TUR or START_STOP commands with data and scatterlists. This patch made against scsi-rc-fixes, has the callers of scsi_send_eh_cmnd pass in the command so scsi_send_eh_cmnd can do the right thing. This should go into 2.6.18 since this fixes a regression added when we removed some of the scsi_cmnd fields and replaced them with local variables. Signed-off-by: NMike Christie <michaelc@cs.wisc.edu> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
- 10 7月, 2006 1 次提交
-
-
由 Christoph Hellwig 提交于
Currently struct scsi_cmnd has various fields that are used to backup original data after the corresponding fields have been overridden for EH commands. This means drivers can easily get at it and misuse it. Due to the old_ naming this doesn't happen for most of them, but two that have different names have been used wrong a lot (see previous patch). Another downside is that they unessecarily bloat the scsi_cmnd size. This patch moves them onstack in scsi_send_eh_cmnd to fix those two issues aswell as allowing future EH fixes like moving the EH command submissions to use SG lists like everything else. Signed-off-by: NChristoph Hellwig <hch@lst.de> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
- 27 6月, 2006 1 次提交
-
-
由 James Smart 提交于
The scsi midlayer portion of the patch Signed-off-by: NJames Smart <James.Smart@emulex.com> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
- 11 6月, 2006 2 次提交
-
-
由 Christoph Hellwig 提交于
The RQ_SCSI_* flags are a vestiage of a long past history. The EH code still sets them but we never make use of that information. The other users is pluto.c which never had a chance to work but needs to be kept compiling to keep Davem happy, so copy over the definition there. We could probably get rid of RQ_ACTIVE/RQ_INACTIVE aswell with some work, there's only two more or less bogus looking uses in ubd and scsi. Signed-off-by: NChristoph Hellwig <hch@lst.de> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
由 Christoph Hellwig 提交于
With Achim patch the last user (gdth) is switched away from scsi_request so we an kill it now. Also disables some code in i2o_scsi that was broken since the sg driver stopped using scsi_requests. Signed-off-by: NChristoph Hellwig <hch@lst.de> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
- 20 5月, 2006 1 次提交
-
-
由 Tejun Heo 提交于
libata implemented a feature to schedule EH without an associated EH by manipulating shost->host_eh_scheduled in ata_scsi_schedule_eh() directly. Move this function to scsi_error.c and rename it to scsi_schedule_eh(). It is now an exported API for SCSI transports and exported via new header file drivers/scsi/scsi_transport_api.h This patch also de-export scsi_eh_wakeup() which was exported specifically for ata_scsi_schedule_eh(). Signed-off-by: NTejun Heo <htejun@gmail.com> Signed-off-by: NJeff Garzik <jeff@garzik.org>
-
- 15 5月, 2006 1 次提交
-
-
由 Tejun Heo 提交于
libata needs to invoke EH without scmd. This patch adds shost->host_eh_scheduled to implement such behavior. Currently the only user of this feature is libata and no general interface is defined. This patch simply adds handling for host_eh_scheduled where needed and exports scsi_eh_wakeup() to modules. The rest is upto libata. This is the result of the following discussion. http://thread.gmane.org/gmane.linux.scsi/23853/focus=9760 In short, SCSI host is not supposed to know about exceptions unrelated to specific device or command. Such exceptions should be handled by transport layer proper. However, the distinction is not essential to ATA and libata is planning to depart from SCSI, so, for the time being, libata will be using SCSI EH to handle such exceptions. Signed-off-by: NTejun Heo <htejun@gmail.com>
-
- 11 4月, 2006 1 次提交
-
-
由 Christoph Hellwig 提交于
Overriding the whole EH code is a per-transport, not per-host thing. Move ->eh_strategy_handler to the transport class, same as ->eh_timed_out. Downside is that scsi_host_alloc can't check for the total lack of EH anymore, but the transition period from old EH where we needed it is long gone already. Signed-off-by: NChristoph Hellwig <hch@lst.de> Signed-off-by: NJeff Garzik <jeff@garzik.org>
-
- 13 3月, 2006 1 次提交
-
-
由 James Smart 提交于
This moves the eh_timed_out functionality from the scsi_host_template to the transport_template. Given that this is now a transport function, the EH_RESET_TIMER case no longer caps the timer reschedulings. The transport guarantees that this is not an infinite condition. Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
- 28 2月, 2006 1 次提交
-
-
由 Brian King 提交于
Fix up an off by one error in calculating retries for scsi commands. This bug was discovered when an SG_IO request was sent to scsi core with retries = 0, causing the overall timeout check to go off in scsi_softirq_done. Signed-off-by: NBrian King <brking@us.ibm.com> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
- 27 1月, 2006 2 次提交
-
-
由 Tejun Heo 提交于
Export two SCSI EH command handling functions. To be used by libata EH. Signed-off-by: NTejun Heo <htejun@gmail.com> Signed-off-by: NJeff Garzik <jgarzik@pobox.com>
-
由 brking@us.ibm.com 提交于
When the scsi_execute_async interface was added it ended up reducing the flexibility of userspace to send arbitrary scsi commands through sg using SG_IO. The SG_IO interface allows userspace to specify the CDB length. This is now ignored in scsi_execute_async and it is guessed using the COMMAND_SIZE macro, which is not always correct, particularly for vendor specific commands. This patch adds a cmd_len parameter to the scsi_execute_async interface to allow the caller to specify the length of the CDB. Signed-off-by: NBrian King <brking@us.ibm.com> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
- 15 12月, 2005 1 次提交
-
-
由 Mike Christie 提交于
Add scsi helpers to create really-large-requests and convert scsi-ml to scsi_execute_async(). Per Jens's previous comments, I placed this function in scsi_lib.c. I made it follow all the queue's limits - I think I did at least :), so I removed the warning on the function header. I think the scsi_execute_* functions should eventually take a request_queue and be placed some place where the dm-multipath hw_handler can use them if that failover code is going to stay in the kernel. That conversion patch will be sent in another mail though. Signed-off-by: NMike Christie <michaelc@cs.wisc.edu> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
- 08 12月, 2005 1 次提交
-
-
由 Michael Reed 提交于
The eh_action semaphore in scsi_eh_send_command is cleared after a command timeout. The command is subsequently aborted and the abort will try to call scsi_done() on it. Unfortunately, the scsi_eh_done() routine unconditinally completes the semaphore (which is now null). Fix this race by makiong the scsi_eh_done() routine check that the semaphore is non null before completing it (mirroring the ordinary command done/timeout logic). Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
- 07 11月, 2005 3 次提交
-
-
由 Christoph Hellwig 提交于
scsi_send_eh_cmnd currently uses a semaphore and an overload of eh_timer to either get a completion for a command for a timeout. Switch to using a completion and wait_for_completion_timeout to simply the code and not having to deal with the races ourselves. Signed-off-by: NChristoph Hellwig <hch@lst.de> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
由 Christoph Hellwig 提交于
now that the abuse in qla2xxx is gone this field can be remove. Signed-off-by: NChristoph Hellwig <hch@lst.de> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
由 Christoph Hellwig 提交于
adjust comments, remove a useless cast and remove a write-only variable. Signed-off-by: NChristoph Hellwig <hch@lst.de> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
- 29 10月, 2005 2 次提交
-
-
由 Jeff Garzik 提交于
Wrap a highly common idiom. Makes the code easier to read, helps pave the way for sdev->{id,channel} removal, and adds a token that can easily by grepped-for in the future. There are a couple sdev_id() and scmd_printk() updates thrown in as well. Rejections fixed up and Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
由 Jeff Garzik 提交于
rejections fixed and Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-