Re: [PATCH] Freeze bdevs when freezing processes.
- From: Pavel Machek <pavel@xxxxxx>
- Date: Wed, 25 Oct 2006 10:10:01 +0200
Hi!
Do you mean calling sys_sync() after the userspace has been frozen
may not be sufficient?
In most cases it probably is, but sys_sync() doesn't provide any
guarantees that the filesystem is not being used or written to after
it completes. Given that every so often I hear about an XFS filesystem
that was corrupted by suspend, I don't think this is sufficient...
Userspace is frozen. There's noone that can write to the XFS
filesystem.
Sure, no new userspace processes can write data, but what about the
internal state of the filesystem?
All a sync guarantees is that the filesystem is consistent when the
sync returns and XFS provides this guarantee by writing all data and
ensuring all metadata changes are logged so if a crash occurs it can
be recovered (which provides the sync guarantee). hence after a
sys_sync(), XFS will still have lots of dirty metadata that needs to
be written to disk at some time in the future so the transactions
can be removed from the log.
This dirty metadata can be flushed at any time, and the dirty state
is kept in XFS structures and not always in page structures (think
multipage metadata buffers). Hence I cannot see how suspend can
guarantee that it has saved all the dirty data in XFS, nor
restore it correctly on resume. Once you toss dirty metadata that
is currently in the log, further operations will result in that log
transaction being overwritten without it ever being written to disk.
That then means any subsequent operations after resume will corrupt
the filesystem....
Hence the only way to correctly rebuild the XFS state on resume is
to quiesce the filesystem on suspend and thaw it on resume so as to
trigger log recovery.
No, during suspend/resume, memory image is saved, and no state is
lost. We would not even have to do sys_sync(), and suspend/resume
would still work properly.
sys_sync() is there only to limit damage in case of suspend/resume
failure.
Pavel
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
- Follow-Ups:
- Re: [PATCH] Freeze bdevs when freezing processes.
- From: David Chinner
- Re: [PATCH] Freeze bdevs when freezing processes.
- References:
- [PATCH] Freeze bdevs when freezing processes.
- From: Nigel Cunningham
- Re: [PATCH] Freeze bdevs when freezing processes.
- From: Rafael J. Wysocki
- Re: [PATCH] Freeze bdevs when freezing processes.
- From: David Chinner
- Re: [PATCH] Freeze bdevs when freezing processes.
- From: Rafael J. Wysocki
- Re: [PATCH] Freeze bdevs when freezing processes.
- From: David Chinner
- Re: [PATCH] Freeze bdevs when freezing processes.
- From: Pavel Machek
- Re: [PATCH] Freeze bdevs when freezing processes.
- From: David Chinner
- [PATCH] Freeze bdevs when freezing processes.
- Prev by Date: Re: [RFC][PATCH -mm] Make swsusp work on i386 with PAE
- Next by Date: Re: [PATCH] Use extents for recording what swap is allocated.
- Previous by thread: Re: [PATCH] Freeze bdevs when freezing processes.
- Next by thread: Re: [PATCH] Freeze bdevs when freezing processes.
- Index(es):
Relevant Pages
|