Christof Schmitt wrote: > On Sat, Aug 28, 2010 at 07:11:12PM +0200, Julia Lawall wrote: >> The function fc_bsg_goose_queue in the file drivers/scsi/scsi_transport_fc.c >> contains the following code: >> >> flagset = test_bit(QUEUE_FLAG_REENTER, &rport->rqst_q->queue_flags) && >> !test_bit(QUEUE_FLAG_REENTER, &rport->rqst_q->queue_flags); >> >> I have the impression that this is always 0. QUEUE_FLAG_REENTER is >> defined with quite a lot of other constants, so I don't really have a >> guess as to what was intended. > > I just came across the code in scsi_run_queue in > drivers/scsi/scsi_lib.c. It looks like the check of QUEUE_FLAG_REENTER > in fc_bsg_goose_queue is modeled after the check in scsi_run_queue. > > The check in scsi_run_queue has been introduced with this commit, > maybe this helps understanding the code: > > commit 04846f25920d4b05d6040c531cc601049260db52 > Author: Andreas Herrmann <aherrman@xxxxxxxxxx> > Date: Wed Aug 9 17:31:16 2006 +0200 > > [SCSI] limit recursion when flushing shost->starved_list > Then it's still wrong. The above commit has: + if (test_bit(QUEUE_FLAG_REENTER, &q->queue_flags) && + !test_and_set_bit(QUEUE_FLAG_REENTER, + &sdev->request_queue->queue_flags)) { Which is slightly different than the above. Looks like a copy and past error. It probably should read flagset = test_bit(QUEUE_FLAG_REENTER, &rport->rqst_q->queue_flags) && !test_and_set_bit(QUEUE_FLAG_REENTER, &rport->rqst_q->queue_flags); This was introduced by commit 9e4f5e29610162fd426366f3b29e3cc6e575b858 Author: James Smart <James.Smart@xxxxxxxxxx> Date: Thu Mar 26 13:33:19 2009 -0400 [SCSI] FC Pass Thru support so we should be blaming^Wasking him. Cheers, Hannes -- Dr. Hannes Reinecke zSeries & Storage hare@xxxxxxx +49 911 74053 688 SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg GF: Markus Rex, HRB 16746 (AG Nürnberg) -- To unsubscribe from this list: 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