This is the mail archive of the cygwin-apps mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: What to do about setup's poor handling of disk full conditions


On Jun 30 13:00, Christopher Faylor wrote:
> On Sun, Jun 30, 2013 at 11:45:24AM +0200, Corinna Vinschen wrote:
> >On Jun 29 16:33, Christopher Faylor wrote:
> >> I keep cygwin on a partition which is relatively small.  So, today for
> >> at least the third time, I've run into problems where setup was unable
> >> to extract files because I'd run out of disk space (I had started to
> >> install the 64-bit installation on the same disk, thought better of it,
> >> and forgotten to clean up after myself).  The errors represented as
> >> in-use problems.  That was clearly wrong.  I thought there was a setup
> >> bug because it seemed to allow me to continue without error.  It didn't
> >> really.  I kept continuing until eventually setup came to a hard stop
> >> and my installation was hosed.
> >> 
> >> What should setup do when it encounters a full disk?  I think it should
> >> probably give the user the option of freeing up disk space and
> >> continuing but I think that's going to be difficult to do cleanly since
> >> there are any number of places where you could run into this situation.
> >> 
> >> Does anyone have any creative ideas about how to allow setup.exe to
> >> cleanly handle out-of-disk-space errors?
> >
> >I don't see a simple way out, unless you make the installation
> >process transactional as under yum.
> >
> >One simple way to handle that would be to add up the bytes of
> >the packages to install (blocksize aligned) and to compare that
> >with the number of bytes left on the disk.
> >
> >One even more easy way would be to show a warning every time the
> >available disk space is less then 1 Gig.
> 
> I think I was actually seeing the error on directory creation so
> just adding up space wouldn't necessarily be sufficient.

It would give a pretty good indicator that you could run into problems
if you proceed, though.  Liberally add 100K for directory creation and
you're good.

> I was actually thinking of having some kind of exception when any file
> I/O operation encounters an ERROR_DISK_FULL (or whatever it is).  But, I
> guess, if you are going to code that then you can just put a standard
> check_for_disk_full() call after every operation.

Ok, but you asked for a *clean* way to handle the problem.  When the
disk full error occurs, it's too late to handle it gracefully.  A
mechanism telling you early on that you might run into problems could be
helpful.  Other than that, you'd really need transactions to allow
rolling back the broken update.


Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Maintainer                 cygwin AT cygwin DOT com
Red Hat


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]