Print this page
PSARC 2008/290 lofi mount
6384817 Need persistent lofi based mounts and direct mount(1m) support for lofi

*** 24,34 **** * THIS SOFTWARE IS PROVIDED '`AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ ! #pragma ident "@(#)main.c 1.54 08/02/06 SMI" /* * In-core structures: * blockmap[] * A bitmap of block usage very similar to what's on disk, but --- 24,34 ---- * THIS SOFTWARE IS PROVIDED '`AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ ! #pragma ident "@(#)main.c 1.55 08/05/07 SMI" /* * In-core structures: * blockmap[] * A bitmap of block usage very similar to what's on disk, but
*** 694,737 **** FILE *vfstab; struct statvfs vfs_stat; int found_magic[MAGIC_LIMIT]; int magic_cnt; int is_magic = 0; ! int is_block; (void) memset((void *)found_magic, 0, sizeof (found_magic)); if (stat64(filename, &stbd) < 0) { (void) fprintf(stderr, "ufs fsck: sanity check failed : cannot stat %s\n", filename); exit(EXNOSTAT); } ! if ((stbd.st_mode & S_IFMT) == S_IFBLK) { is_block = 1; ! } else if ((stbd.st_mode & S_IFMT) == S_IFCHR) { is_block = 0; ! } else { ! /* ! * In !mflag mode, we allow checking the contents ! * of a file. Since this is intended primarily for ! * speeding up boot-time checks and allowing for a ! * file complicates the ok-input tests, we'll disallow ! * that option. ! */ ! (void) fprintf(stderr, ! "ufs fsck: sanity check failed: " ! "%s not block or character device\n", filename); ! exit(EXNOSTAT); } /* * Determine if this is the root file system via vfstab. Give up * silently on failures. The whole point of this is to be tolerant * of the magic file systems being already mounted. */ ! if ((vfstab = fopen(VFSTAB, "r")) != 0) { for (magic_cnt = 0; magic_cnt < MAGIC_LIMIT; magic_cnt++) { if (magic_cnt == MAGIC_NONE) continue; if (getvfsfile(vfstab, &vfsbuf, magic_fs[magic_cnt]) == 0) { --- 694,728 ---- FILE *vfstab; struct statvfs vfs_stat; int found_magic[MAGIC_LIMIT]; int magic_cnt; int is_magic = 0; ! int is_block = 0; ! int is_file = 0; (void) memset((void *)found_magic, 0, sizeof (found_magic)); if (stat64(filename, &stbd) < 0) { (void) fprintf(stderr, "ufs fsck: sanity check failed : cannot stat %s\n", filename); exit(EXNOSTAT); } ! if (S_ISBLK(stbd.st_mode)) { is_block = 1; ! } else if (S_ISCHR(stbd.st_mode)) { is_block = 0; ! } else if (S_ISREG(stbd.st_mode)) { ! is_file = 1; } /* * Determine if this is the root file system via vfstab. Give up * silently on failures. The whole point of this is to be tolerant * of the magic file systems being already mounted. */ ! if (!is_file && (vfstab = fopen(VFSTAB, "r")) != NULL) { for (magic_cnt = 0; magic_cnt < MAGIC_LIMIT; magic_cnt++) { if (magic_cnt == MAGIC_NONE) continue; if (getvfsfile(vfstab, &vfsbuf, magic_fs[magic_cnt]) == 0) {