ffs.c (185222) | ffs.c (186261) |
---|---|
1/* $NetBSD: ffs.c,v 1.30 2004/06/24 22:30:13 lukem Exp $ */ 2 3/* 4 * Copyright (c) 2001 Wasabi Systems, Inc. 5 * All rights reserved. 6 * 7 * Written by Luke Mewburn for Wasabi Systems, Inc. 8 * --- 51 unchanged lines hidden (view full) --- 60 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 61 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 62 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 63 * SUCH DAMAGE. 64 * 65 * @(#)ffs_alloc.c 8.19 (Berkeley) 7/13/95 66 */ 67 | 1/* $NetBSD: ffs.c,v 1.30 2004/06/24 22:30:13 lukem Exp $ */ 2 3/* 4 * Copyright (c) 2001 Wasabi Systems, Inc. 5 * All rights reserved. 6 * 7 * Written by Luke Mewburn for Wasabi Systems, Inc. 8 * --- 51 unchanged lines hidden (view full) --- 60 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 61 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 62 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 63 * SUCH DAMAGE. 64 * 65 * @(#)ffs_alloc.c 8.19 (Berkeley) 7/13/95 66 */ 67 |
68#if HAVE_NBTOOL_CONFIG_H 69#include "nbtool_config.h" 70#endif 71 | |
72#include <sys/cdefs.h> 73#if defined(__RCSID) && !defined(__lint) 74__RCSID("$NetBSD: ffs.c,v 1.30 2004/06/24 22:30:13 lukem Exp $"); 75#endif /* !__lint */ 76 77#include <sys/param.h> 78 79#if !HAVE_NBTOOL_CONFIG_H --- 9 unchanged lines hidden (view full) --- 89#include <string.h> 90#include <unistd.h> 91 92#include "makefs.h" 93 94#include <ufs/ufs/dinode.h> 95#include <ufs/ufs/dir.h> 96#include <ufs/ffs/fs.h> | 68#include <sys/cdefs.h> 69#if defined(__RCSID) && !defined(__lint) 70__RCSID("$NetBSD: ffs.c,v 1.30 2004/06/24 22:30:13 lukem Exp $"); 71#endif /* !__lint */ 72 73#include <sys/param.h> 74 75#if !HAVE_NBTOOL_CONFIG_H --- 9 unchanged lines hidden (view full) --- 85#include <string.h> 86#include <unistd.h> 87 88#include "makefs.h" 89 90#include <ufs/ufs/dinode.h> 91#include <ufs/ufs/dir.h> 92#include <ufs/ffs/fs.h> |
97#include <ufs/ufs/ufs_bswap.h> | |
98 | 93 |
94#include "ffs/ufs_bswap.h" |
|
99#include "ffs/ufs_inode.h" 100#include "ffs/newfs_extern.h" 101#include "ffs/ffs_extern.h" 102 103#undef DIP 104#define DIP(dp, field) \ 105 ((fsopts->version == 1) ? \ 106 (dp)->ffs1_din.di_##field : (dp)->ffs2_din.di_##field) --- 404 unchanged lines hidden (view full) --- 511 assert(fsopts != NULL); 512 513 if (debug & DEBUG_FS_SIZE_DIR) 514 printf("ffs_size_dir: entry: bytes %lld inodes %lld\n", 515 (long long)fsopts->size, (long long)fsopts->inodes); 516 517#define ADDDIRENT(e) do { \ 518 tmpdir.d_namlen = strlen((e)); \ | 95#include "ffs/ufs_inode.h" 96#include "ffs/newfs_extern.h" 97#include "ffs/ffs_extern.h" 98 99#undef DIP 100#define DIP(dp, field) \ 101 ((fsopts->version == 1) ? \ 102 (dp)->ffs1_din.di_##field : (dp)->ffs2_din.di_##field) --- 404 unchanged lines hidden (view full) --- 507 assert(fsopts != NULL); 508 509 if (debug & DEBUG_FS_SIZE_DIR) 510 printf("ffs_size_dir: entry: bytes %lld inodes %lld\n", 511 (long long)fsopts->size, (long long)fsopts->inodes); 512 513#define ADDDIRENT(e) do { \ 514 tmpdir.d_namlen = strlen((e)); \ |
519 this = DIRSIZ(0, &tmpdir, 0); \ | 515 this = DIRSIZ_SWAP(0, &tmpdir, 0); \ |
520 if (debug & DEBUG_FS_SIZE_DIR_ADD_DIRENT) \ 521 printf("ADDDIRENT: was: %s (%d) this %d cur %d\n", \ 522 e, tmpdir.d_namlen, this, curdirsize); \ 523 if (this + curdirsize > roundup(curdirsize, DIRBLKSIZ)) \ 524 curdirsize = roundup(curdirsize, DIRBLKSIZ); \ 525 curdirsize += this; \ 526 if (debug & DEBUG_FS_SIZE_DIR_ADD_DIRENT) \ 527 printf("ADDDIRENT: now: %s (%d) this %d cur %d\n", \ --- 410 unchanged lines hidden (view full) --- 938 assert (name != NULL); 939 assert (node != NULL); 940 /* create direct entry */ 941 (void)memset(&de, 0, sizeof(de)); 942 de.d_ino = ufs_rw32(node->inode->ino, needswap); 943 de.d_type = IFTODT(node->type); 944 de.d_namlen = (uint8_t)strlen(name); 945 strcpy(de.d_name, name); | 516 if (debug & DEBUG_FS_SIZE_DIR_ADD_DIRENT) \ 517 printf("ADDDIRENT: was: %s (%d) this %d cur %d\n", \ 518 e, tmpdir.d_namlen, this, curdirsize); \ 519 if (this + curdirsize > roundup(curdirsize, DIRBLKSIZ)) \ 520 curdirsize = roundup(curdirsize, DIRBLKSIZ); \ 521 curdirsize += this; \ 522 if (debug & DEBUG_FS_SIZE_DIR_ADD_DIRENT) \ 523 printf("ADDDIRENT: now: %s (%d) this %d cur %d\n", \ --- 410 unchanged lines hidden (view full) --- 934 assert (name != NULL); 935 assert (node != NULL); 936 /* create direct entry */ 937 (void)memset(&de, 0, sizeof(de)); 938 de.d_ino = ufs_rw32(node->inode->ino, needswap); 939 de.d_type = IFTODT(node->type); 940 de.d_namlen = (uint8_t)strlen(name); 941 strcpy(de.d_name, name); |
946 reclen = DIRSIZ(0, &de, needswap); | 942 reclen = DIRSIZ_SWAP(0, &de, needswap); |
947 de.d_reclen = ufs_rw16(reclen, needswap); 948 949 dp = (struct direct *)(dbuf->buf + dbuf->cur); 950 llen = 0; 951 if (dp != NULL) | 943 de.d_reclen = ufs_rw16(reclen, needswap); 944 945 dp = (struct direct *)(dbuf->buf + dbuf->cur); 946 llen = 0; 947 if (dp != NULL) |
952 llen = DIRSIZ(0, dp, needswap); | 948 llen = DIRSIZ_SWAP(0, dp, needswap); |
953 954 if (debug & DEBUG_FS_MAKE_DIRBUF) 955 printf( 956 "ffs_make_dirbuf: dbuf siz %d cur %d lastlen %d\n" 957 " ino %d type %d reclen %d namlen %d name %.30s\n", 958 dbuf->size, dbuf->cur, llen, 959 ufs_rw32(de.d_ino, needswap), de.d_type, reclen, 960 de.d_namlen, de.d_name); --- 42 unchanged lines hidden (view full) --- 1003 cgino = ino % fs->fs_ipg; 1004 if (debug & DEBUG_FS_WRITE_INODE) 1005 printf("ffs_write_inode: din %p ino %u cg %d cgino %d\n", 1006 dp, ino, cg, cgino); 1007 1008 ffs_rdfs(fsbtodb(fs, cgtod(fs, cg)), (int)fs->fs_cgsize, &sbbuf, 1009 fsopts); 1010 cgp = (struct cg *)sbbuf; | 949 950 if (debug & DEBUG_FS_MAKE_DIRBUF) 951 printf( 952 "ffs_make_dirbuf: dbuf siz %d cur %d lastlen %d\n" 953 " ino %d type %d reclen %d namlen %d name %.30s\n", 954 dbuf->size, dbuf->cur, llen, 955 ufs_rw32(de.d_ino, needswap), de.d_type, reclen, 956 de.d_namlen, de.d_name); --- 42 unchanged lines hidden (view full) --- 999 cgino = ino % fs->fs_ipg; 1000 if (debug & DEBUG_FS_WRITE_INODE) 1001 printf("ffs_write_inode: din %p ino %u cg %d cgino %d\n", 1002 dp, ino, cg, cgino); 1003 1004 ffs_rdfs(fsbtodb(fs, cgtod(fs, cg)), (int)fs->fs_cgsize, &sbbuf, 1005 fsopts); 1006 cgp = (struct cg *)sbbuf; |
1011 if (!cg_chkmagic(cgp, fsopts->needswap)) | 1007 if (!cg_chkmagic_swap(cgp, fsopts->needswap)) |
1012 errx(1, "ffs_write_inode: cg %d: bad magic number", cg); 1013 | 1008 errx(1, "ffs_write_inode: cg %d: bad magic number", cg); 1009 |
1014 assert (isclr(cg_inosused(cgp, fsopts->needswap), cgino)); | 1010 assert (isclr(cg_inosused_swap(cgp, fsopts->needswap), cgino)); |
1015 1016 buf = malloc(fs->fs_bsize); 1017 if (buf == NULL) 1018 errx(1, "ffs_write_inode: cg %d: can't alloc inode block", cg); 1019 1020 dp1 = (struct ufs1_dinode *)buf; 1021 dp2 = (struct ufs2_dinode *)buf; 1022 1023 if (fs->fs_cstotal.cs_nifree == 0) 1024 errx(1, "ffs_write_inode: fs out of inodes for ino %u", 1025 ino); 1026 if (fs->fs_cs(fs, cg).cs_nifree == 0) 1027 errx(1, 1028 "ffs_write_inode: cg %d out of inodes for ino %u", 1029 cg, ino); | 1011 1012 buf = malloc(fs->fs_bsize); 1013 if (buf == NULL) 1014 errx(1, "ffs_write_inode: cg %d: can't alloc inode block", cg); 1015 1016 dp1 = (struct ufs1_dinode *)buf; 1017 dp2 = (struct ufs2_dinode *)buf; 1018 1019 if (fs->fs_cstotal.cs_nifree == 0) 1020 errx(1, "ffs_write_inode: fs out of inodes for ino %u", 1021 ino); 1022 if (fs->fs_cs(fs, cg).cs_nifree == 0) 1023 errx(1, 1024 "ffs_write_inode: cg %d out of inodes for ino %u", 1025 cg, ino); |
1030 setbit(cg_inosused(cgp, fsopts->needswap), cgino); | 1026 setbit(cg_inosused_swap(cgp, fsopts->needswap), cgino); |
1031 ufs_add32(cgp->cg_cs.cs_nifree, -1, fsopts->needswap); 1032 fs->fs_cstotal.cs_nifree--; 1033 fs->fs_cs(fs, cg).cs_nifree--; 1034 if (S_ISDIR(DIP(dp, mode))) { 1035 ufs_add32(cgp->cg_cs.cs_ndir, 1, fsopts->needswap); 1036 fs->fs_cstotal.cs_ndir++; 1037 fs->fs_cs(fs, cg).cs_ndir++; 1038 } --- 55 unchanged lines hidden --- | 1027 ufs_add32(cgp->cg_cs.cs_nifree, -1, fsopts->needswap); 1028 fs->fs_cstotal.cs_nifree--; 1029 fs->fs_cs(fs, cg).cs_nifree--; 1030 if (S_ISDIR(DIP(dp, mode))) { 1031 ufs_add32(cgp->cg_cs.cs_ndir, 1, fsopts->needswap); 1032 fs->fs_cstotal.cs_ndir++; 1033 fs->fs_cs(fs, cg).cs_ndir++; 1034 } --- 55 unchanged lines hidden --- |