Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 18 Jun 1998 17:51:25 -0700 (PDT)
From:      Thomas Dean <tomdean@ix.netcom.com>
To:        mi@video-collage.com
Cc:        questions@FreeBSD.ORG
Subject:   Re: file size confusion
Message-ID:  <199806190051.RAA01766@ix.netcom.com>
In-Reply-To: <199806182133.RAA16419@xxx.video-collage.com> (message from Mikhail Teterin on Thu, 18 Jun 1998 17:33:24 -0400 (EDT))

next in thread | previous in thread | raw e-mail | index | archive | help
Try:

/*
  xx.c - tomdean
  Make a large file, much more than the disk can hold.  Look at the effects
  of 'ls -ls', etc.
  */

#include <stdio.h>
#include <fcntl.h>

#define HM 100000000

main() {
  short count;
  int fd;

  if ((fd=open("bigfile",O_CREAT | O_WRONLY,0700)) == 1) {
	perror("Open failed.");
	exit(1);
  }

  for (count=0; count <= 10; count++) {
	printf(",");
	if (write(fd,"data",5) == -1) {
	  perror("write failed");
	  exit(1);
	}

	if (lseek(fd,HM,1) == -1) {
	  perror("seek failed");
	  exit(1);
	}
  }
  close(fd);
  printf("\n");
}

and look at 'ls -ls'.

352 -rwx------  1 tomdean  users  1000000055 Jun 18 17:16 bigfile

The file system only puts what you actually write on the disk.  The
remainder is mapped by the file system to appear as if it is there,
but, since there is no data in that area of the file, it is not
actually written to disk.  A structure that maps the file is allocated
for every file.  If the file is small, a direct mapping scheme is
used.  For larger files, indirect mapping is used.  The mapping
structure is allocated, but, most of the pointers are null, since
there is no data in most of the file.  This is a sparse file.
/var/log/wtmp is another sparse file, created by the system.

Does this make sense?

tomdean

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



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