ufs.c (182748) | ufs.c (276079) |
---|---|
1/* $NetBSD: ufs.c,v 1.20 1998/03/01 07:15:39 ross Exp $ */ 2 3/*- 4 * Copyright (c) 2002 Networks Associates Technology, Inc. 5 * All rights reserved. 6 * 7 * This software was developed for the FreeBSD Project by Marshall 8 * Kirk McKusick and Network Associates Laboratories, the Security --- 54 unchanged lines hidden (view full) --- 63 * Carnegie Mellon University 64 * Pittsburgh PA 15213-3890 65 * 66 * any improvements or extensions that they make and grant Carnegie the 67 * rights to redistribute these changes. 68 */ 69 70#include <sys/cdefs.h> | 1/* $NetBSD: ufs.c,v 1.20 1998/03/01 07:15:39 ross Exp $ */ 2 3/*- 4 * Copyright (c) 2002 Networks Associates Technology, Inc. 5 * All rights reserved. 6 * 7 * This software was developed for the FreeBSD Project by Marshall 8 * Kirk McKusick and Network Associates Laboratories, the Security --- 54 unchanged lines hidden (view full) --- 63 * Carnegie Mellon University 64 * Pittsburgh PA 15213-3890 65 * 66 * any improvements or extensions that they make and grant Carnegie the 67 * rights to redistribute these changes. 68 */ 69 70#include <sys/cdefs.h> |
71__FBSDID("$FreeBSD: head/lib/libstand/ufs.c 182748 2008-09-04 10:05:44Z raj $"); | 71__FBSDID("$FreeBSD: head/lib/libstand/ufs.c 276079 2014-12-22 20:42:36Z ian $"); |
72 73/* 74 * Stand-alone file reading package. 75 */ 76 77#include <sys/param.h> 78#include <sys/disklabel.h> 79#include <sys/time.h> --- 70 unchanged lines hidden (view full) --- 150 151 if (fs == NULL) 152 panic("fs == NULL"); 153 154 /* 155 * Read inode and save it. 156 */ 157 buf = malloc(fs->fs_bsize); | 72 73/* 74 * Stand-alone file reading package. 75 */ 76 77#include <sys/param.h> 78#include <sys/disklabel.h> 79#include <sys/time.h> --- 70 unchanged lines hidden (view full) --- 150 151 if (fs == NULL) 152 panic("fs == NULL"); 153 154 /* 155 * Read inode and save it. 156 */ 157 buf = malloc(fs->fs_bsize); |
158 twiddle(); | 158 twiddle(1); |
159 rc = (f->f_dev->dv_strategy)(f->f_devdata, F_READ, 160 fsbtodb(fs, ino_to_fsba(fs, inumber)), fs->fs_bsize, 161 buf, &rsize); 162 if (rc) 163 goto out; 164 if (rsize != fs->fs_bsize) { 165 rc = EIO; 166 goto out; --- 93 unchanged lines hidden (view full) --- 260 *disk_block_p = 0; /* missing */ 261 return (0); 262 } 263 264 if (fp->f_blkno[level] != ind_block_num) { 265 if (fp->f_blk[level] == (char *)0) 266 fp->f_blk[level] = 267 malloc(fs->fs_bsize); | 159 rc = (f->f_dev->dv_strategy)(f->f_devdata, F_READ, 160 fsbtodb(fs, ino_to_fsba(fs, inumber)), fs->fs_bsize, 161 buf, &rsize); 162 if (rc) 163 goto out; 164 if (rsize != fs->fs_bsize) { 165 rc = EIO; 166 goto out; --- 93 unchanged lines hidden (view full) --- 260 *disk_block_p = 0; /* missing */ 261 return (0); 262 } 263 264 if (fp->f_blkno[level] != ind_block_num) { 265 if (fp->f_blk[level] == (char *)0) 266 fp->f_blk[level] = 267 malloc(fs->fs_bsize); |
268 twiddle(); | 268 twiddle(1); |
269 rc = (f->f_dev->dv_strategy)(f->f_devdata, F_READ, 270 fsbtodb(fp->f_fs, ind_block_num), 271 fs->fs_bsize, 272 fp->f_blk[level], 273 &fp->f_blksize[level]); 274 if (rc) 275 return (rc); 276 if (fp->f_blksize[level] != fs->fs_bsize) --- 64 unchanged lines hidden (view full) --- 341 * in memory already, read it in first. 342 */ 343 if (((off > 0) || (*size_p + off < block_size)) && 344 (file_block != fp->f_buf_blkno)) { 345 346 if (fp->f_buf == (char *)0) 347 fp->f_buf = malloc(fs->fs_bsize); 348 | 269 rc = (f->f_dev->dv_strategy)(f->f_devdata, F_READ, 270 fsbtodb(fp->f_fs, ind_block_num), 271 fs->fs_bsize, 272 fp->f_blk[level], 273 &fp->f_blksize[level]); 274 if (rc) 275 return (rc); 276 if (fp->f_blksize[level] != fs->fs_bsize) --- 64 unchanged lines hidden (view full) --- 341 * in memory already, read it in first. 342 */ 343 if (((off > 0) || (*size_p + off < block_size)) && 344 (file_block != fp->f_buf_blkno)) { 345 346 if (fp->f_buf == (char *)0) 347 fp->f_buf = malloc(fs->fs_bsize); 348 |
349 twiddle(); | 349 twiddle(4); |
350 rc = (f->f_dev->dv_strategy)(f->f_devdata, F_READ, 351 fsbtodb(fs, disk_block), 352 block_size, fp->f_buf, &fp->f_buf_size); 353 if (rc) 354 return (rc); 355 356 fp->f_buf_blkno = file_block; 357 } 358 359 /* 360 * Copy the user data into the cached block. 361 */ 362 bcopy(buf_p, fp->f_buf + off, *size_p); 363 364 /* 365 * Write the block out to storage. 366 */ 367 | 350 rc = (f->f_dev->dv_strategy)(f->f_devdata, F_READ, 351 fsbtodb(fs, disk_block), 352 block_size, fp->f_buf, &fp->f_buf_size); 353 if (rc) 354 return (rc); 355 356 fp->f_buf_blkno = file_block; 357 } 358 359 /* 360 * Copy the user data into the cached block. 361 */ 362 bcopy(buf_p, fp->f_buf + off, *size_p); 363 364 /* 365 * Write the block out to storage. 366 */ 367 |
368 twiddle(); | 368 twiddle(4); |
369 rc = (f->f_dev->dv_strategy)(f->f_devdata, F_WRITE, 370 fsbtodb(fs, disk_block), 371 block_size, fp->f_buf, &fp->f_buf_size); 372 return (rc); 373} 374 375/* 376 * Read a portion of a file into an internal buffer. Return --- 24 unchanged lines hidden (view full) --- 401 rc = block_map(f, file_block, &disk_block); 402 if (rc) 403 return (rc); 404 405 if (disk_block == 0) { 406 bzero(fp->f_buf, block_size); 407 fp->f_buf_size = block_size; 408 } else { | 369 rc = (f->f_dev->dv_strategy)(f->f_devdata, F_WRITE, 370 fsbtodb(fs, disk_block), 371 block_size, fp->f_buf, &fp->f_buf_size); 372 return (rc); 373} 374 375/* 376 * Read a portion of a file into an internal buffer. Return --- 24 unchanged lines hidden (view full) --- 401 rc = block_map(f, file_block, &disk_block); 402 if (rc) 403 return (rc); 404 405 if (disk_block == 0) { 406 bzero(fp->f_buf, block_size); 407 fp->f_buf_size = block_size; 408 } else { |
409 twiddle(); | 409 twiddle(4); |
410 rc = (f->f_dev->dv_strategy)(f->f_devdata, F_READ, 411 fsbtodb(fs, disk_block), 412 block_size, fp->f_buf, &fp->f_buf_size); 413 if (rc) 414 return (rc); 415 } 416 417 fp->f_buf_blkno = file_block; --- 92 unchanged lines hidden (view full) --- 510 /* allocate file system specific data structure */ 511 fp = malloc(sizeof(struct file)); 512 bzero(fp, sizeof(struct file)); 513 f->f_fsdata = (void *)fp; 514 515 /* allocate space and read super block */ 516 fs = malloc(SBLOCKSIZE); 517 fp->f_fs = fs; | 410 rc = (f->f_dev->dv_strategy)(f->f_devdata, F_READ, 411 fsbtodb(fs, disk_block), 412 block_size, fp->f_buf, &fp->f_buf_size); 413 if (rc) 414 return (rc); 415 } 416 417 fp->f_buf_blkno = file_block; --- 92 unchanged lines hidden (view full) --- 510 /* allocate file system specific data structure */ 511 fp = malloc(sizeof(struct file)); 512 bzero(fp, sizeof(struct file)); 513 f->f_fsdata = (void *)fp; 514 515 /* allocate space and read super block */ 516 fs = malloc(SBLOCKSIZE); 517 fp->f_fs = fs; |
518 twiddle(); | 518 twiddle(1); |
519 /* 520 * Try reading the superblock in each of its possible locations. 521 */ 522 for (i = 0; sblock_try[i] != -1; i++) { 523 rc = (f->f_dev->dv_strategy)(f->f_devdata, F_READ, 524 sblock_try[i] / DEV_BSIZE, SBLOCKSIZE, 525 (char *)fs, &buf_size); 526 if (rc) --- 117 unchanged lines hidden (view full) --- 644 struct fs *fs = fp->f_fs; 645 646 if (!buf) 647 buf = malloc(fs->fs_bsize); 648 rc = block_map(f, (ufs2_daddr_t)0, &disk_block); 649 if (rc) 650 goto out; 651 | 519 /* 520 * Try reading the superblock in each of its possible locations. 521 */ 522 for (i = 0; sblock_try[i] != -1; i++) { 523 rc = (f->f_dev->dv_strategy)(f->f_devdata, F_READ, 524 sblock_try[i] / DEV_BSIZE, SBLOCKSIZE, 525 (char *)fs, &buf_size); 526 if (rc) --- 117 unchanged lines hidden (view full) --- 644 struct fs *fs = fp->f_fs; 645 646 if (!buf) 647 buf = malloc(fs->fs_bsize); 648 rc = block_map(f, (ufs2_daddr_t)0, &disk_block); 649 if (rc) 650 goto out; 651 |
652 twiddle(); | 652 twiddle(1); |
653 rc = (f->f_dev->dv_strategy)(f->f_devdata, 654 F_READ, fsbtodb(fs, disk_block), 655 fs->fs_bsize, buf, &buf_size); 656 if (rc) 657 goto out; 658 659 bcopy((char *)buf, namebuf, (unsigned)link_len); 660 } --- 201 unchanged lines hidden --- | 653 rc = (f->f_dev->dv_strategy)(f->f_devdata, 654 F_READ, fsbtodb(fs, disk_block), 655 fs->fs_bsize, buf, &buf_size); 656 if (rc) 657 goto out; 658 659 bcopy((char *)buf, namebuf, (unsigned)link_len); 660 } --- 201 unchanged lines hidden --- |