Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 17 Oct 1999 01:35:42 -0500 (CDT)
From:      Kevin Day <toasty@dragondata.com>
To:        wes@softweyr.com (Wes Peters)
Cc:        toasty@dragondata.com (Kevin Day), newton@internode.com.au (Mark Newton), gupz@hotmail.com (Dodge Ram), freebsd-hackers@FreeBSD.ORG
Subject:   Re: Handling segV's
Message-ID:  <199910170635.BAA10112@celery.dragondata.com>
In-Reply-To: <38096D39.794E9EC0@softweyr.com> from "Wes Peters" at Oct 17, 1999 12:31:21 AM

next in thread | previous in thread | raw e-mail | index | archive | help
> > > > I mmap() files in, then copy them to a device. This works great except when
> > > > someone tries to change that file during the copy. If the size of the file
> > > > shrinks, I'll SIGBUS or SIGSEGV when i try to touch past the new file size.
> > > > So, i setup a signal handler and longjmp into some recovery code.
> > > >
> > > > Perhaps there's a better way, but I don't consider this a bug really, and
> > > > i'll get a SEGV. :)
> > >
> > > MAP_PRIVATE?
> > >
> > 
> > This has the undesired effect of me not noticing that the file changed then.
> 
> stat(2) it after the copy?  OK, I'm reaching.  Handling SEGV seems like a
> rather iffy solution at best.

In my case, it's a very very very rare thing that the file's been changed
out from under me, and I'm doing several thousand copies per second, so
doing a stat() on each copy makes things very slow.

I know it's a crappy solution, but it's the only one that works. :)  

Also, consider that *during* the copy, the file could be changed.

Kevin


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199910170635.BAA10112>