Re: [PATCH v12 7/9] libata: scsi: no poll when ODD is powered off

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

 



Hi Tejun,

On Thu, Jan 10, 2013 at 06:17:01PM -0800, Tejun Heo wrote:
> Hello, Aaron.
> 
> On Fri, Jan 11, 2013 at 10:11:10AM +0800, Aaron Lu wrote:
> > > What's the synchronization rule for this field?
> > 
> > I documented the rule in include/scsi/scsi_device.h.
> > 
> > This field is modified in the ata port's runtime suspend and resume
> > callback, and is read accessed in the check_events callback of the sr
> > block driver. The runtime PM callback is synchronized by PM core, in
> > that the two callbacks will never run concurrently. So I guess saying
> > synchronized by PM core is enough for this field?
> > 
> > This is what I've added in v12 for scsi_device structure:
> > 
> > +	bool disable_disk_events; /* disable poll for disk events, used in
> > +				   * ATA layer, sychronized by PM core */
> > +
> > 
> > Or do you mean I should add a comment explaining the sync rule when it
> > is modifed, like in the above code?
> 
> The thing is that disabling disk events doesn't necessarily have
> anything to do with PM, so tying synchronization to PM subsystem is a
> bit unexpected.  How about making it an atomic_t?  That way, disabling
> can stack and synchronization dependency to PM is removed.

OK, will make it atomic in next version, thanks for the advice.

Perhaps I can add two scsi helper functions in scsi_lib.c like:

void sdev_disable_disk_events(struct scsi_device *sdev)
{
	atomic_inc(&sdev->disk_events_disable_depth);
}

void sdev_enable_disk_events(struct scsi_device *sdev)
{
	if (WARN_ON_ONCE(atomic_read(&sdev->disk_events_disable_depth) <= 0))
		return;
	atomic_dec(&sdev->disk_events_disable_depth);
}

And call them in ATA layer. Do you like this?

Thanks,
Aaron

--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Filesystems]     [Linux SCSI]     [Linux RAID]     [Git]     [Kernel Newbies]     [Linux Newbie]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Samba]     [Device Mapper]

  Powered by Linux