Re: [PATCH] drivers/scsi/st.c: add reference count and related fixes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I just tested out your patch on the latest git tree and this patch
fixes the scsi tape hot unplug problems I was seeing as well.


Brian

Dailey, Nate wrote:
> I've attached patches against 2.6.13rc2. These are basically identical
> to my earlier patches, as I found that all issues I'd seen in earlier
> kernels still existed in this kernel.
> 
> To summarize, the changes are: (more details in my original email)
> 
> - add a kref to the scsi_tape structure, and associate reference
> counting stuff
> 
> - set sr_request->end_io = blk_end_sync_rq so we get notified when an IO
> is rejected when the device goes away
> 
> - check rq_status when IOs complete, else we don't know that IOs
> rejected for a dead device in fact did not complete
> 
> - change last_SRpnt so it's set before an async IO is issued (in case
> st_sleep_done is bypassed)
> 
> - fix a bogus use of last_SRpnt in st_chk_result
> 
> 
> Nate Dailey
> Stratus Technologies
> 
> Signed-off-by: Nate Dailey <nate.dailey@xxxxxxxxxxx>
> 
> 
>>-----Original Message-----
>>From: Kai Makisara [mailto:Kai.Makisara@xxxxxxxxxxx] 
>>Sent: Tuesday, July 12, 2005 4:08 PM
>>To: Dailey, Nate
>>Cc: Brian King; linux-scsi@xxxxxxxxxxxxxxx
>>Subject: RE: [PATCH] drivers/scsi/st.c: add reference count 
>>and related fixes
>>
>>
>>On Tue, 12 Jul 2005, Dailey, Nate wrote:
>>
>>
>>>I'll try porting my changes to a recent kernel, verify that 
>>
>>the bugs I
>>
>>>found are still bugs, and get back to you with a new patch.
>>>
>>>In the meantime, responses to your comments:
>>>
>>>- using a new kref in the scsi_tape structure: I've given this some
>>>thought, and I think using a new kref is defintely the best 
>>
>>way to go.
>>
>>>If nothing else, this is the same way sd and sr do 
>>
>>reference counting...
>>
>>>seems easier to maintain if the code in st is as similar as 
>>
>>possible to
>>
>>>these other drivers.
>>>
>>
>>st is a character device and it should use the character device 
>>refcounting if convenient. However, I now agree that the new 
>>kref is the 
>>simplest solution.
>>
>>
>>>- my changes to how last_SRpnt is used: I'll add a comment 
>>
>>documenting
>>
>>>when last_SRpnt is valid (it's valid only for async IOs 
>>
>>that have been
>>
>>>issued, nulled out by write_behind_check when they complete)
>>>
>>
>>Good.
>>
>>
>>>- Here's why I think the use of last_SRpnt in st_chk_result 
>>
>>is bogus:
>>
>>>one of the inputs to st_chk_result is "struct scsi_request 
>>
>>* SRpnt", and
>>
>>>it seems like this is the SRpnt you want to use, rather 
>>
>>than last_SRpnt.
>>
>>>This input will be the command that st_do_scsi or write_behind_check
>>>just waited on. This might not cause any problems with the 
>>
>>current st
>>
>>>code, but it will definitely cause problems with the 
>>
>>changes I made to
>>
>>>last_SRpnt. Let me know if I'm wrong about this, though, and I can
>>>change my last_SRpnt code.
>>>
>>
>>OK. I now see your point and it seems that the solution is 
>>simple: use the 
>>SRpnt argument of st_chk_result(). The reason why the 
>>function is using 
>>last_SRpnt is moving code from one place to another and not 
>>being careful 
>>enough to change everything (I knew that in that code 
>>last_SRpnt was valid 
>>always and so this did not look like an error ;-).
>>
>>-- 
>>Kai
>>


-- 
Brian King
eServer Storage I/O
IBM Linux Technology Center
-
: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]
  Powered by Linux