Date: Mon, 6 Nov 2000 01:22:07 -0800 (PST) From: kkanda@rc.m-kagaku.co.jp To: freebsd-gnats-submit@FreeBSD.org Subject: gnu/22635: Why don't you use truncate(2) in libI77 Message-ID: <20001106092207.4A66437B4CF@hub.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 22635
>Category: gnu
>Synopsis: Why don't you use truncate(2) in libI77
>Confidential: no
>Severity: serious
>Priority: high
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: change-request
>Submitter-Id: current-users
>Arrival-Date: Mon Nov 06 01:30:00 PST 2000
>Closed-Date:
>Last-Modified:
>Originator: Katsuya KANDA
>Release: FreeBSD 4.1-RELEASE i386
>Organization:
Mitsubishi Chemical Corp.
>Environment:
FreeBSD izumo1 4.1-RELEASE FreeBSD 4.1-RELEASE #1: Tue Oct 10 20:24:40 JST 2000 katsuya@izumo1:/usr/src/sys/compile/IZUMO i386
>Description:
LibI77 contains the truncation operation of files.
Although FreeBSD has truncate(2) system call, the routine
"t_runc" in endfile.c uses the copy-delete-recopy
algorithm for file size truncation. This sometimes causes
not only the lower performance but also the file system full.
So the executables using f77(=g77) can not deal with a large
sequential files which appear in large quantum chemistry,
for example.
"t_runc" routine seems to be used in backspace, close,
endfile and rewind operations.
"The Design and Implementation of the 4.4BSD" said that
truncate(2) was introduced for Fortran's file operation.:-)
>How-To-Repeat:
The following fortran code causes file system full
if the available disk space is smaller than 16MB.
parameter (MX=1024*1024+1)
real*8 a(MX)
do i=1,MX
a(i)=i
enddo
write(1)(a(i),i=1,MX)
write(6,*)"write long file on 1"
rewind 1
write(6,*)"rewind 1"
write(1)(a(i),i=1,MX-1)
write(6,*)"write short file on 1"
rewind 1
write(6,*)"rewind 1"
stop
end
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20001106092207.4A66437B4CF>
