- 03 10月, 2011 1 次提交
-
-
由 Roland Dreier 提交于
I hit a crash in qla2x00_abort_all_cmds() if the qla2xxx module is unloaded right after it is loaded. I debugged this down to the abort handling improperly treating a command of type SRB_ADISC_CMD as if it had a bsg_job to complete when that command actually uses the iocb_cmd part of the union. (I guess to hit this one has to unload the module while the async FC initialization is still in progress) It seems we should only look for a bsg_job if type is SRB_ELS_CMD_RPT, SRB_ELS_CMD_HST or SRB_CT_CMD, so switch the test to make that explicit. Signed-off-by: NRoland Dreier <roland@purestorage.com> Acked-by: NChad Dupuis <chad.dupuis@qlogic.com> Cc: stable@kernel.org Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
-
- 27 8月, 2011 4 次提交
-
-
由 Chad Dupuis 提交于
Close a small window where we could falsely fail an abort request if the mailbox command fails but the command was returned during interrupt context. Signed-off-by: NChad Dupuis <chad.dupuis@qlogic.com> Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
-
由 Saurav Kashyap 提交于
The dsd list shouldn't be manipulated without taking the per host hardware lock to prevent multiple callers from trampling upon one another. Signed-off-by: NSaurav Kashyap <saurav.kashyap@qlogic.com> Signed-off-by: NChad Dupuis <chad.dupuis@qlogic.com> Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
-
由 Arun Easi 提交于
This fix: - Disables app tag peeking; correct tag check will be added when the SCSI API is available. - Always derive ref_tag from scsi_get_lba() - Removes incorrect swap of FCP_LUN in FCP_CMND - Moves app-tag error check before ref-tag check. The reason being, currently there is no interface in SCSI to retrieve the app-tag for protection I/Os, so driver puts zero for app-tag in the firmware interface, but requests not to validate it, but when a ref-tag error is detected by firmware, it would put expected/actual tags for all the protection tags (guard/app/ref). As driver checks for app tag error first, a ref-tag error is incorrectly flagged as app-tag error. - Convert HBA specific checks to capability based. Signed-off-by: NArun Easi <arun.easi@qlogic.com> Signed-off-by: NChad Dupuis <chad.dupuis@qlogic.com> Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
-
由 Arun Easi 提交于
Driver needs to update protection bytes for uninitialized sectors as they are not DMA-d. Signed-off-by: NArun Easi <arun.easi@qlogic.com> Reviewed-by: NAndrew Vasquez <andrew.vasquez@qlogic.com> Signed-off-by: NChad Dupuis <chad.dupuis@qlogic.com> Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
-
- 27 7月, 2011 2 次提交
-
-
由 Saurav Kashyap 提交于
The code is changed to support the new dynamic logging infrastructure. Following are the levels added. Default is 0 - no logging. 0x40000000 - Module Init & Probe. 0x20000000 - Mailbox Cmnds. 0x10000000 - Device Discovery. 0x08000000 - IO tracing. 0x04000000 - DPC Thread. 0x02000000 - Async events. 0x01000000 - Timer routines. 0x00800000 - User space. 0x00400000 - Task Management. 0x00200000 - AER/EEH. 0x00100000 - Multi Q. 0x00080000 - P3P Specific. 0x00040000 - Virtual Port. 0x00020000 - Buffer Dump. 0x00010000 - Misc. 0x7fffffff - For enabling all logs, can be too many logs. Setting ql2xextended_error_logging module parameter to any of the above value, will enable the debug for that particular level. Do LOGICAL OR of the value to enable more than one level. Signed-off-by: NSaurav Kashyap <saurav.kashyap@qlogic.com> Signed-off-by: NGiridhar Malavali <giridhar.malavali@qlogic.com> Signed-off-by: NAndrew Vasquez <andrew.vasquez@qlogic.com> Signed-off-by: NJoe Carnuccio <joe.carnuccio@qlogic.com> Signed-off-by: NChad Dupuis <chad.dupuis@qlogic.com> Signed-off-by: NMadhuranath Iyengar <Madhu.Iyengar@qlogic.com> Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
-
由 Saurav Kashyap 提交于
This patch adds the dynamic logging framework to the qla2xxx driver. The user will be able to change the logging levels on the fly i.e. without load/unload of the driver. This also enables logging to be enabled for a particular section of the driver such as initialization, device discovery etc. Signed-off-by: NSaurav Kashyap <saurav.kashyap@qlogic.com> Signed-off-by: NGiridhar Malavali <giridhar.malavali@qlogic.com> Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
-
- 17 5月, 2011 4 次提交
-
-
由 Andrew Vasquez 提交于
The 'max_lun' value registered for each scsi_host is currently capped at 0xffff. The new module parameter can allow for 2nd-level flat-space addressing method-infrastructure to be supported. Signed-off-by: NAndrew Vasquez <andrew.vasquez@qlogic.com> Signed-off-by: NMadhuranath Iyengar <Madhu.Iyengar@qlogic.com> Signed-off-by: NJames Bottomley <jbottomley@parallels.com> Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
-
由 Madhuranath Iyengar 提交于
Signed-off-by: NMadhuranath Iyengar <Madhu.Iyengar@qlogic.com> Signed-off-by: NJames Bottomley <jbottomley@parallels.com> Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
-
由 Arun Easi 提交于
Bumping ref count during fc_vport_terminate() was the cause. vport delete would wait for ref count to drop to zero and that would never happen. Cc: stable@kernel.org Signed-off-by: NArun Easi <arun.easi@qlogic.com> Signed-off-by: NMadhuranath Iyengar <Madhu.Iyengar@qlogic.com> Signed-off-by: NJames Bottomley <jbottomley@parallels.com> Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
-
由 Saurav Kashyap 提交于
This patch ensures qla82xx_watchdog is not being run for the vport. It also makes sure that beacon ON is not done for the vport, as it will lead to the waking up of the dpc thread again and again. Signed-off-by: NSaurav Kashyap <saurav.kashyap@qlogic.com> Signed-off-by: NMadhuranath Iyengar <Madhu.Iyengar@qlogic.com> Cc: stable@kernel.org Signed-off-by: NJames Bottomley <jbottomley@parallels.com> Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
-
- 01 5月, 2011 5 次提交
-
-
由 Chad Dupuis 提交于
Add the inline function qla2x00_set_port_state() so that when a fcport state transition happens we can log the state transition if debug messages are enabled. Signed-off-by: NChad Dupuis <chad.dupuis@qlogic.com> Signed-off-by: NMadhuranath Iyengar <Madhu.Iyengar@qlogic.com> Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
-
由 Giridhar Malavali 提交于
Also, change the ISP82xx code to only reset if this module_param is set and reset is intended via the QLA82XX_DEV_NEED_RESET case. Signed-off-by: NGiridhar Malavali <giridhar.malavali@qlogic.com> Signed-off-by: NMadhuranath Iyengar <Madhu.Iyengar@qlogic.com> Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
-
由 Joe Carnuccio 提交于
If fabric device has invalid loop id (FC_NO_LOOP_ID) then call qla2x00_find_new_loop_id() to attempt to obtain valid loop id. Signed-off-by: NJoe Carnuccio <joe.carnuccio@qlogic.com> Signed-off-by: NMadhuranath Iyengar <Madhu.Iyengar@qlogic.com> Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
-
由 Giridhar Malavali 提交于
For certain failures, try to recover first by doing FCoE context reset before attempting big hammer approach(adpater reset). Signed-off-by: NGiridhar Malavali <giridhar.malavali@qlogic.com> Signed-off-by: NMadhuranath Iyengar <Madhu.Iyengar@qlogic.com> Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
-
由 Andrew Vasquez 提交于
Signed-off-by: NAndrew Vasquez <andrew.vasquez@qlogic.com> Signed-off-by: NMadhuranath Iyengar <Madhu.Iyengar@qlogic.com> Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
-
- 31 3月, 2011 1 次提交
-
-
由 Lucas De Marchi 提交于
Fixes generated by 'codespell' and manually reviewed. Signed-off-by: NLucas De Marchi <lucas.demarchi@profusion.mobi>
-
- 26 2月, 2011 3 次提交
-
-
由 Andrew Vasquez 提交于
The fc_block_scsi_eh() might return with status FAST_IO_FAIL indicating I/O has been terminated due to fast_io_fail timeout. In this case the rport is still blocked, so any error recovery will be failing on this port. Hence we need to check if the return value from fc_block_scsi_eh() is something other than 0, in which case it should just return with that status. Signed-off-by: NAndrew Vasquez <andrew.vasquez@qlogic.com> Signed-off-by: NMadhuranath Iyengar <Madhu.Iyengar@qlogic.com> Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
-
由 Giridhar Malavali 提交于
Signed-off-by: NGiridhar Malavali <giridhar.malavali@qlogic.com> Signed-off-by: NMadhuranath Iyengar <Madhu.Iyengar@qlogic.com> Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
-
由 Madhuranath Iyengar 提交于
Also in qla_os.c, rename the function, remove DEF_SCSI_QCMD, etc. Signed-off-by: NMadhuranath Iyengar <Madhu.Iyengar@qlogic.com> Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
-
- 16 2月, 2011 1 次提交
-
-
由 Andrew Vasquez 提交于
If the target device gets lost, this fix is needed, as it causes negative unintended responses on basic I/O tests. If the target device gets lost, the upstream qla2xxx driver returns SCSI_MLQUEUE_TARGET_BUSY which causes an immediate retry without drop in the number of allowed retries. This semantic change, as a result of removing FC_DEVICE_LOST check is reasonable, as it only extends a short transitional period, until the transport is called to notify that the rport as lost (fc_remote_port_delete()). Once transport notification is done, fc_remote_port_chkready() check will take over. Signed-off-by: NAndrew Vasquez <andrew.vasquez@qlogic.com> Signed-off-by: NMadhuranath Iyengar <Madhu.Iyengar@qlogic.com> Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
-
- 13 2月, 2011 2 次提交
-
-
由 Madhuranath Iyengar 提交于
Make the driver safer by using irqsave/irqrestore with host_lock. Signed-off-by: NMadhuranath Iyengar <Madhu.Iyengar@qlogic.com> Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
-
由 James Bottomley 提交于
There is a small race window in qla2x00_do_dpc() between checking for kthread_should_stop() and going to sleep after setting TASK_INTERRUPTIBLE. If qla2x00_free_device() is called in this window, kthread_stop will wait forever because there will be no one to wake up the process. Fix by making sure we only set TASK_INTERRUPTIBLE before checking kthread_stop(). Reported-by: NBandan Das <bandan.das@stratus.com> Acked-by: NMadhuranath Iyengar <Madhu.Iyengar@qlogic.com> Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
-
- 01 2月, 2011 1 次提交
-
-
由 Tejun Heo 提交于
Switch to new workqueue interface alloc_workqueue(). These are identity conversions. Signed-off-by: NTejun Heo <tj@kernel.org> Acked-by: NMadhuranath Iyengar <Madhu.Iyengar@qlogic.com> Cc: Jayamohan Kallickal <jayamohank@serverengines.com> Cc: Andrew Vasquez <andrew.vasquez@qlogic.com> Cc: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com> Cc: linux-scsi@vger.kernel.org
-
- 24 12月, 2010 4 次提交
-
-
由 Giridhar Malavali 提交于
Signed-off-by: NGiridhar Malavali <giridhar.malavali@qlogic.com> Signed-off-by: NMadhuranath Iyengar <Madhu.Iyengar@qlogic.com> Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
-
由 Joe Carnuccio 提交于
For driver module parameters that have permission bits set to (S_IRUGO|S_IRUSR), remove the second term since it is already included in the first term. S_IRUGO comes defined as (S_IRUSR|S_IRGRP|S_IROTH). Signed-off-by: NJoe Carnuccio <joe.carnuccio@qlogic.com> Signed-off-by: NMadhuranath Iyengar <Madhu.Iyengar@qlogic.com> Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
-
由 Dan Carpenter 提交于
This is just a cleanup. The unneeded NULL check annoys static checkers because we already derefenced it and the we check it and then (if it's not the _safe() version) we dereference it again without checking. And the static checker is all, "Wah? Is it null or not?" Signed-off-by: NDan Carpenter <error27@gmail.com> Signed-off-by: NMadhuranath Iyengar <Madhu.Iyengar@qlogic.com> Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
-
由 Saurav Kashyap 提交于
Support is added for quiescence mode. This feature is for P3P adapters. Any of the functions can put the firmware into quiescence state. All the others have to ack that request. During quiescence mode current commands are processed and all the new incoming I/Os are blocked. Loop resync is performed after firmware comes out of quiescence state. Signed-off-by: NSaurav Kashyap <saurav.kashyap@qlogic.com> Signed-off-by: NMadhuranath Iyengar <Madhu.Iyengar@qlogic.com> Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
-
- 10 12月, 2010 2 次提交
-
-
由 Saurav Kashyap 提交于
A return value is not set for the successful case and it has a garbage value. This fix will set the default value to SUCCESS and in case of any failures it is changed. Signed-off-by: NSaurav Kashyap <saurav.kashyap@qlogic.com> Signed-off-by: NMadhuranath Iyengar <Madhu.Iyengar@qlogic.com> Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
-
由 Andrew Vasquez 提交于
This would cause a panic while reading the NPIV-config data. Cc: stable@kernel.org Signed-off-by: NAndrew Vasquez <andrew.vasquez@qlogic.com> Signed-off-by: NMadhuranath Iyengar <Madhu.Iyengar@qlogic.com> Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
-
- 17 11月, 2010 1 次提交
-
-
由 Jeff Garzik 提交于
Move the mid-layer's ->queuecommand() invocation from being locked with the host lock to being unlocked to facilitate speeding up the critical path for drivers who don't need this lock taken anyway. The patch below presents a simple SCSI host lock push-down as an equivalent transformation. No locking or other behavior should change with this patch. All existing bugs and locking orders are preserved. Additionally, add one parameter to queuecommand, struct Scsi_Host * and remove one parameter from queuecommand, void (*done)(struct scsi_cmnd *) Scsi_Host* is a convenient pointer that most host drivers need anyway, and 'done' is redundant to struct scsi_cmnd->scsi_done. Minimal code disturbance was attempted with this change. Most drivers needed only two one-line modifications for their host lock push-down. Signed-off-by: NJeff Garzik <jgarzik@redhat.com> Acked-by: NJames Bottomley <James.Bottomley@suse.de> Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
-
- 26 10月, 2010 7 次提交
-
-
由 Giridhar Malavali 提交于
Signed-off-by: NGiridhar Malavali <giridhar.malavali@qlogic.com> Signed-off-by: NMadhuranath Iyengar <Madhu.Iyengar@qlogic.com> Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
-
由 Mike Christie 提交于
This patch fixes a regression introduced by commit 083a469d qla2xxx_eh_wait_on_command() is waiting for an srb to complete, which will never happen as the routine took a reference to the srb previously and will only drop it after this function. So every command abort will fail. Signed-off-by: NMike Christie <michaelc@cs.wisc.edu> Signed-off-by: NGiridhar Malavali <giridhar.malavali@qlogic.com> Signed-off-by: NMadhuranath Iyengar <Madhu.Iyengar@qlogic.com> Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
-
由 Madhuranath Iyengar 提交于
This patch adds a shutdown handler to qla2xxx driver to make sure that all DMA and firmware activities are stopped, and any associated driver resources are released. The need for this handler arose when executing kexec in specific environments caused the data of the 2nd kernel to be corrupted, due to DMA activities. Signed-off-by: NMadhuranath Iyengar <Madhu.Iyengar@qlogic.com> Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
-
由 Andrew Vasquez 提交于
Commit feafb7b1 neglected to initialize the spinlock. Signed-off-by: NAndrew Vasquez <andrew.vasquez@qlogic.com> Signed-off-by: NMadhuranath Iyengar <Madhu.Iyengar@qlogic.com> Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
-
由 Madhuranath Iyengar 提交于
This patch cleans up any printk or debug tracing of the the serial_number field in the qla2xxx driver. Signed-off-by: NMadhuranath Iyengar <Madhu.Iyengar@qlogic.com> Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
-
由 Chad Dupuis 提交于
Add the module parameter ql2xgffidenable to disable/enable the use of the GFF_ID name server command to prevent non FCP SCSI devices from being added to the driver's internal fc_port database. Signed-off-by: NChad Dupuis <chad.dupuis@qlogic.com> Signed-off-by: NMadhuranath Iyengar <Madhu.Iyengar@qlogic.com> Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
-
由 Chad Dupuis 提交于
This patch removes the use of the port down retry counter as a mechanism to update a fcport state. The internal driver counter is a residual carry-over from pre-FC-transport aware driver inteaction. The ql2xport_down_retry module parameter and NVRAM set ha->port_down_retry_count remain in order to seed the fc-host's default dev-loss-tmo. Signed-off-by: NChad Dupuis <chad.dupuis@qlogic.com> Signed-off-by: NMadhuranath Iyengar <Madhu.Iyengar@qlogic.com> Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
-
- 15 10月, 2010 1 次提交
-
-
由 Arnd Bergmann 提交于
All file_operations should get a .llseek operation so we can make nonseekable_open the default for future file operations without a .llseek pointer. The three cases that we can automatically detect are no_llseek, seq_lseek and default_llseek. For cases where we can we can automatically prove that the file offset is always ignored, we use noop_llseek, which maintains the current behavior of not returning an error from a seek. New drivers should normally not use noop_llseek but instead use no_llseek and call nonseekable_open at open time. Existing drivers can be converted to do the same when the maintainer knows for certain that no user code relies on calling seek on the device file. The generated code is often incorrectly indented and right now contains comments that clarify for each added line why a specific variant was chosen. In the version that gets submitted upstream, the comments will be gone and I will manually fix the indentation, because there does not seem to be a way to do that using coccinelle. Some amount of new code is currently sitting in linux-next that should get the same modifications, which I will do at the end of the merge window. Many thanks to Julia Lawall for helping me learn to write a semantic patch that does all this. ===== begin semantic patch ===== // This adds an llseek= method to all file operations, // as a preparation for making no_llseek the default. // // The rules are // - use no_llseek explicitly if we do nonseekable_open // - use seq_lseek for sequential files // - use default_llseek if we know we access f_pos // - use noop_llseek if we know we don't access f_pos, // but we still want to allow users to call lseek // @ open1 exists @ identifier nested_open; @@ nested_open(...) { <+... nonseekable_open(...) ...+> } @ open exists@ identifier open_f; identifier i, f; identifier open1.nested_open; @@ int open_f(struct inode *i, struct file *f) { <+... ( nonseekable_open(...) | nested_open(...) ) ...+> } @ read disable optional_qualifier exists @ identifier read_f; identifier f, p, s, off; type ssize_t, size_t, loff_t; expression E; identifier func; @@ ssize_t read_f(struct file *f, char *p, size_t s, loff_t *off) { <+... ( *off = E | *off += E | func(..., off, ...) | E = *off ) ...+> } @ read_no_fpos disable optional_qualifier exists @ identifier read_f; identifier f, p, s, off; type ssize_t, size_t, loff_t; @@ ssize_t read_f(struct file *f, char *p, size_t s, loff_t *off) { ... when != off } @ write @ identifier write_f; identifier f, p, s, off; type ssize_t, size_t, loff_t; expression E; identifier func; @@ ssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off) { <+... ( *off = E | *off += E | func(..., off, ...) | E = *off ) ...+> } @ write_no_fpos @ identifier write_f; identifier f, p, s, off; type ssize_t, size_t, loff_t; @@ ssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off) { ... when != off } @ fops0 @ identifier fops; @@ struct file_operations fops = { ... }; @ has_llseek depends on fops0 @ identifier fops0.fops; identifier llseek_f; @@ struct file_operations fops = { ... .llseek = llseek_f, ... }; @ has_read depends on fops0 @ identifier fops0.fops; identifier read_f; @@ struct file_operations fops = { ... .read = read_f, ... }; @ has_write depends on fops0 @ identifier fops0.fops; identifier write_f; @@ struct file_operations fops = { ... .write = write_f, ... }; @ has_open depends on fops0 @ identifier fops0.fops; identifier open_f; @@ struct file_operations fops = { ... .open = open_f, ... }; // use no_llseek if we call nonseekable_open //////////////////////////////////////////// @ nonseekable1 depends on !has_llseek && has_open @ identifier fops0.fops; identifier nso ~= "nonseekable_open"; @@ struct file_operations fops = { ... .open = nso, ... +.llseek = no_llseek, /* nonseekable */ }; @ nonseekable2 depends on !has_llseek @ identifier fops0.fops; identifier open.open_f; @@ struct file_operations fops = { ... .open = open_f, ... +.llseek = no_llseek, /* open uses nonseekable */ }; // use seq_lseek for sequential files ///////////////////////////////////// @ seq depends on !has_llseek @ identifier fops0.fops; identifier sr ~= "seq_read"; @@ struct file_operations fops = { ... .read = sr, ... +.llseek = seq_lseek, /* we have seq_read */ }; // use default_llseek if there is a readdir /////////////////////////////////////////// @ fops1 depends on !has_llseek && !nonseekable1 && !nonseekable2 && !seq @ identifier fops0.fops; identifier readdir_e; @@ // any other fop is used that changes pos struct file_operations fops = { ... .readdir = readdir_e, ... +.llseek = default_llseek, /* readdir is present */ }; // use default_llseek if at least one of read/write touches f_pos ///////////////////////////////////////////////////////////////// @ fops2 depends on !fops1 && !has_llseek && !nonseekable1 && !nonseekable2 && !seq @ identifier fops0.fops; identifier read.read_f; @@ // read fops use offset struct file_operations fops = { ... .read = read_f, ... +.llseek = default_llseek, /* read accesses f_pos */ }; @ fops3 depends on !fops1 && !fops2 && !has_llseek && !nonseekable1 && !nonseekable2 && !seq @ identifier fops0.fops; identifier write.write_f; @@ // write fops use offset struct file_operations fops = { ... .write = write_f, ... + .llseek = default_llseek, /* write accesses f_pos */ }; // Use noop_llseek if neither read nor write accesses f_pos /////////////////////////////////////////////////////////// @ fops4 depends on !fops1 && !fops2 && !fops3 && !has_llseek && !nonseekable1 && !nonseekable2 && !seq @ identifier fops0.fops; identifier read_no_fpos.read_f; identifier write_no_fpos.write_f; @@ // write fops use offset struct file_operations fops = { ... .write = write_f, .read = read_f, ... +.llseek = noop_llseek, /* read and write both use no f_pos */ }; @ depends on has_write && !has_read && !fops1 && !fops2 && !has_llseek && !nonseekable1 && !nonseekable2 && !seq @ identifier fops0.fops; identifier write_no_fpos.write_f; @@ struct file_operations fops = { ... .write = write_f, ... +.llseek = noop_llseek, /* write uses no f_pos */ }; @ depends on has_read && !has_write && !fops1 && !fops2 && !has_llseek && !nonseekable1 && !nonseekable2 && !seq @ identifier fops0.fops; identifier read_no_fpos.read_f; @@ struct file_operations fops = { ... .read = read_f, ... +.llseek = noop_llseek, /* read uses no f_pos */ }; @ depends on !has_read && !has_write && !fops1 && !fops2 && !has_llseek && !nonseekable1 && !nonseekable2 && !seq @ identifier fops0.fops; @@ struct file_operations fops = { ... +.llseek = noop_llseek, /* no read or write fn */ }; ===== End semantic patch ===== Signed-off-by: NArnd Bergmann <arnd@arndb.de> Cc: Julia Lawall <julia@diku.dk> Cc: Christoph Hellwig <hch@infradead.org>
-
- 06 9月, 2010 1 次提交
-
-
由 Saurav Kashyap 提交于
Return recovered from pci_mmio_enabled function if it is 82XX. Signed-off-by: NGiridhar Malavali <giridhar.malavali@qlogic.com> Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
-