From owner-freebsd-hackers Mon Aug 31 14:38:19 1998 Return-Path: Received: (from majordom@localhost) by hub.freebsd.org (8.8.8/8.8.8) id OAA07446 for freebsd-hackers-outgoing; Mon, 31 Aug 1998 14:38:19 -0700 (PDT) (envelope-from owner-freebsd-hackers@FreeBSD.ORG) Received: from bingsun2.cc.binghamton.edu (bingsun2.cc.binghamton.edu [128.226.1.6]) by hub.freebsd.org (8.8.8/8.8.8) with ESMTP id OAA07420 for ; Mon, 31 Aug 1998 14:38:10 -0700 (PDT) (envelope-from bf20761@binghamton.edu) Received: from localhost (bf20761@localhost) by bingsun2.cc.binghamton.edu (8.8.7/8.6.9) with SMTP id RAA20955; Mon, 31 Aug 1998 17:36:42 -0400 (EDT) Date: Mon, 31 Aug 1998 17:36:41 -0400 (EDT) From: zhihuizhang X-Sender: bf20761@bingsun2 To: Mike Smith cc: hackers Subject: Re: FFS questions In-Reply-To: <199808271532.PAA00757@dingo.cdrom.com> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-freebsd-hackers@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG On Thu, 27 Aug 1998, Mike Smith wrote: > > The comment says it is the number of cylinders per *cycle* in position > > table. What does the "cycle" mean? > > It's the size of the rotational offset table. Starting from position 0 > on the disk, there are N cycles of fastest-next-block locations as you > move across the disk. You only need to store one cycle in the offset > table. > >From your explanation, it seems that the table is for entire disk (not constrained to one cylinder) and according to comment in mkfs.c, each cycle is a rotational pattern. So I guess that each pattern covers fs_cpc cylinders, or after fs_cpc cylinders the pattern will repeat (on the next cylinder boundary or immediately?) So how is the pattern represented anyway? Is there any relationship between fs_cpc and fs_nrpos (should be number of rotational positions *per cylinder*). I guess that in a pattern (cycle), there are fs_cpc * fs_nrpos different positions. How are these positions represented, by block numbers or by increments? The macro cbtorpos() converts a block number to a rotational position in a single cylinder. This position is used to index position table to get another block number. This block number is in turn used to index the rotational table to get an increase of it. After increase, the block number is used again to index the positional table until a free file block is found.... The use of fs_postbl() and fs_rotbl() seems to construct a list of blocks available at each rotational position. But they confuses me. I hope someone can clarify for me on how those blocks for one rotational position are organized. Any help is appreciated. To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message