public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Phillip Susi <psusi@cfl.rr.com>
To: Alan Stern <stern@rowland.harvard.edu>
Cc: Kyle Moffett <mrmacman_g4@mac.com>,
	Alon Bar-Lev <alon.barlev@gmail.com>,
	Kernel development list <linux-kernel@vger.kernel.org>
Subject: Re: Flames over -- Re: Which is simpler?
Date: Mon, 13 Feb 2006 12:14:55 -0500	[thread overview]
Message-ID: <43F0BE8F.6030609@cfl.rr.com> (raw)
In-Reply-To: <Pine.LNX.4.44L0.0602131113310.7035-100000@iolanthe.rowland.org>

Alan Stern wrote:
> Sorry, but you're wrong.  First of all, testing if hardware is there is
> different from testing whether it has changed -- it could have changed 
> while the system was asleep, with the result that hardware is indeed there 
> but it's not the _same_ hardware.
>
>   

If you believe I am wrong, then please offer proof.  Specifically, refer 
to the kernel code that handles verifying that the hardware is still 
there after a resume.  I very well may be wrong, but you can not simply 
surmise this to be so without any proof.  It is currently my belief that 
the kernel probes the hardware the same way after a cold boot, resume 
from s-t-r, and resume from s-t-d.  Specifically it looks to see if a 
device is located in the same bus location with the same serial number, 
etc, and if so, access to it continues exactly where it left off prior 
to the suspend. 

This is why you can suspend to disk, and when you resume, your open 
files are still valid; the disk is found to be still there, so it 
continues to be accessible.  Nothing gets clobbered as a result of the 
disk seeming to be disconnected and reconnected.  If that does happen, 
it is a bug. 

> Second, with USB at any rate, in addition to checking that hardware is 
> still there, the kernel queries the USB controller to see if a disconnect 
> occurred while the system was asleep.  (If the controller wasn't powered 
> during that time then it will report that every USB device was 
> disconnected.)
>   

AFAIK, there is no interface by which the kernel can query that 
information from the controller, maybe you could show me?  If that is 
the case however, then I consider that to be a bug with the USB bus and 
the kernel's handling of it.  The kernel needs to be able to assume that 
nothing was disconnected while it was shutdown, provided that the same 
devices are there now as when it went to sleep.  This is how it behaves 
for say, SCSI disks in desktops/servers, where the controller certainly 
is completely powered off.  It should work the same for USB. 
> Third, there is indeed something special that monitors USB device 
> insertion/removal while suspended to RAM -- the USB host controller does 
> so if it has suspend power.
>
>   

Could you site references to that?  AFAIK, the host controller is only 
capable of generating a wake event when the bus state changes; it does 
not have a means of informing the OS what has changed, aside from the OS 
enumerating the devices on the bus again. 

> No.  It does work exactly as designed and it's not buggy.  You just don't
> understand it.
>
>   

If the mounted filesystem becomes corrupted over a hibernation because 
the kernel thinks the drive was unplugged, then plugged back in, that 
clearly is a bug. It does not do this for disks connected via other bus 
types, and it clearly is undesirable to corrupt data in this way. 

>> The state of the kernel after resuming from either suspend to disk, or 
>> suspend to ram is the same.  The filesystem is still mounted, and any 
>> dirty pages in ram will be flushed just like normal.  Whether the disk 
>> is connected via SCSI, SATA, USB, or whatever does not matter.
>>     
>
> Don't be silly.  Dirty pages can't be flushed to disks that are no longer
> attached!  And if a USB disk was unplugged while the system was asleep,
> the kernel will know that it is no longer attached.  I don't know which
> other bus drivers check for this sort of thing.
>
>   
The disk is still attached of course.  The scenario we are talking about 
does not actually involve disconnecting the drive.  Since the drive is 
not actually disconnected, if the kernel believes it has been, it's a bug. 
>> The kernel knows that the same device is still there on the bus, and so 
>> it picks up right where it left off.  If it thinks the device has been 
>> unplugged and reconnected, that is a bug.
>>     
>
> It's not a bug if the device _has_ been unplugged and reconnected.  When 
> that happens, there's no way for the kernel to tell whether the device 
> there now is the same as the device that used to be there.
>
>   

Again, we're not talking about it actually being unplugged, though since 
the kernel has no way of knowing it, you can unplug a scsi disk while 
hibernated, then plug it back in before you resume, and it will work 
just fine since the same type of hardware with the same serial number et 
al is found in the same place on the bus. 



  reply	other threads:[~2006-02-13 17:15 UTC|newest]

Thread overview: 78+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-02-12 16:57 Flames over -- Re: Which is simpler? Alan Stern
2006-02-13  0:51 ` Phillip Susi
2006-02-13  2:19   ` Alan Stern
2006-02-13  3:52     ` Phillip Susi
2006-02-13  5:43       ` Kyle Moffett
2006-02-13 16:40         ` Phillip Susi
2006-02-13 16:31       ` Alan Stern
2006-02-13 17:14         ` Phillip Susi [this message]
2006-02-13 20:04           ` Alan Stern
2006-02-13 20:38             ` Phillip Susi
2006-02-13 21:24               ` Alan Stern
2006-02-13 22:27                 ` Rafael J. Wysocki
2006-02-14 19:26                   ` Alan Stern
2006-02-14 20:41                     ` Rafael J. Wysocki
2006-02-14 21:08                       ` Lee Revell
2006-02-15 15:56                       ` Alan Stern
2006-02-13 22:51                 ` J. Bruce Fields
2006-02-13 23:47                 ` Phillip Susi
2006-02-14  0:50                   ` Kyle Moffett
2006-02-14  2:09                     ` Phillip Susi
2006-02-14  4:09                       ` Kyle Moffett
2006-02-14  4:28                         ` Alan Stern
2006-02-14  5:11                           ` Kyle Moffett
2006-02-14 15:33                             ` Alan Stern
2006-02-14  6:27                         ` Phillip Susi
2006-02-14 16:23                           ` Kyle Moffett
2006-02-14 18:39                             ` Phillip Susi
2006-02-14 19:55                               ` Kyle Moffett
2006-02-14 21:13                                 ` Phillip Susi
2006-02-14 23:32                                   ` Kyle Moffett
2006-02-15  3:08                                     ` Phillip Susi
2006-02-14 19:14                             ` Olivier Galibert
2006-02-14 19:37                               ` Phillip Susi
2006-02-17 21:04                   ` Pavel Machek
2006-02-18 16:34                     ` Phillip Susi
2006-02-18 17:29                       ` Pavel Machek
2006-02-19  5:52                         ` Phillip Susi
2006-02-19  9:02                           ` Pavel Machek
2006-02-19 16:35                             ` Phillip Susi
2006-02-19 16:41                               ` Alan Stern
2006-02-19 19:17                                 ` Phillip Susi
2006-02-19 19:43                                   ` Pavel Machek
2006-02-20  0:56                                     ` Olivier Galibert
2006-02-20  1:01                                       ` Pavel Machek
2006-02-20  1:26                                         ` Olivier Galibert
2006-02-20  4:04                                           ` Alan Stern
2006-02-19 20:16                                   ` Bernd Eckenfels
2006-02-18 21:04                     ` Alan Stern
2006-02-19  0:02                       ` Andrew Morton
2006-02-19  6:02                         ` Phillip Susi
2006-02-19  6:32                           ` Andrew Morton
2006-02-19 16:39                             ` Phillip Susi
2006-02-19 16:54                               ` Alan Stern
2006-02-19 20:02                                 ` Andrew Morton
2006-02-19 20:44                                   ` Oliver Neukum
2006-02-19 21:02                                     ` Andrew Morton
2006-02-20  6:55                                       ` Oliver Neukum
2006-02-20  7:29                                         ` Andrew Morton
2006-02-20  7:57                                           ` Andrew Morton
2006-02-14 14:15     ` hackmiester / Hunter Fuller
2006-02-15 23:51     ` Pavel Machek
2006-02-13  2:25   ` Kyle Moffett
  -- strict thread matches above, loose matches on Subject: below --
2006-02-13 19:16 David Brownell
2006-02-13 20:08 ` Phillip Susi
2006-02-14  3:10   ` David Brownell
2006-02-14  6:05     ` Phillip Susi
2006-02-14 17:04       ` David Brownell
2006-02-15 23:43   ` Pavel Machek
2006-02-18 20:51     ` David Brownell
2006-02-19  6:06       ` Phillip Susi
2006-02-20  5:50         ` David Brownell
2006-02-20 16:07           ` Phillip Susi
2006-02-20 16:51             ` Olivier Galibert
2006-02-20 18:20               ` Phillip Susi
2006-02-20 18:44                 ` Olivier Galibert
2006-02-20 21:45                   ` Phillip Susi
2006-02-21 16:19             ` David Brownell
2006-02-21 18:30               ` Phillip Susi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=43F0BE8F.6030609@cfl.rr.com \
    --to=psusi@cfl.rr.com \
    --cc=alon.barlev@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mrmacman_g4@mac.com \
    --cc=stern@rowland.harvard.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox