dev.c (7c4213f6a52f35ff6ba2d97aa4eb04cbfc963b86) | dev.c (4101f6879256720b30df712089a3df18565f9203) |
---|---|
1/* 2 * (C) Copyright 2003 - 2004 3 * Sysgo AG, <www.elinos.com>, Pavel Bartusek <pba@sysgo.com> 4 * 5 * SPDX-License-Identifier: GPL-2.0+ 6 */ 7 8 9#include <common.h> 10#include <config.h> 11#include <reiserfs.h> 12 13#include "reiserfs_private.h" 14 | 1/* 2 * (C) Copyright 2003 - 2004 3 * Sysgo AG, <www.elinos.com>, Pavel Bartusek <pba@sysgo.com> 4 * 5 * SPDX-License-Identifier: GPL-2.0+ 6 */ 7 8 9#include <common.h> 10#include <config.h> 11#include <reiserfs.h> 12 13#include "reiserfs_private.h" 14 |
15static block_dev_desc_t *reiserfs_block_dev_desc; | 15static struct blk_desc *reiserfs_blk_desc; |
16static disk_partition_t *part_info; 17 18 | 16static disk_partition_t *part_info; 17 18 |
19void reiserfs_set_blk_dev(block_dev_desc_t *rbdd, disk_partition_t *info) | 19void reiserfs_set_blk_dev(struct blk_desc *rbdd, disk_partition_t *info) |
20{ | 20{ |
21 reiserfs_block_dev_desc = rbdd; | 21 reiserfs_blk_desc = rbdd; |
22 part_info = info; 23} 24 25 26int reiserfs_devread (int sector, int byte_offset, int byte_len, char *buf) 27{ 28 char sec_buf[SECTOR_SIZE]; 29 unsigned block_len; --- 18 unchanged lines hidden (view full) --- 48 sector += byte_offset >> SECTOR_BITS; 49 byte_offset &= SECTOR_SIZE - 1; 50 51#if defined(DEBUG) 52 printf (" <%d, %d, %d> ", sector, byte_offset, byte_len); 53#endif 54 55 | 22 part_info = info; 23} 24 25 26int reiserfs_devread (int sector, int byte_offset, int byte_len, char *buf) 27{ 28 char sec_buf[SECTOR_SIZE]; 29 unsigned block_len; --- 18 unchanged lines hidden (view full) --- 48 sector += byte_offset >> SECTOR_BITS; 49 byte_offset &= SECTOR_SIZE - 1; 50 51#if defined(DEBUG) 52 printf (" <%d, %d, %d> ", sector, byte_offset, byte_len); 53#endif 54 55 |
56 if (reiserfs_block_dev_desc == NULL) | 56 if (reiserfs_blk_desc == NULL) |
57 return 0; 58 59 60 if (byte_offset != 0) { 61 /* read first part which isn't aligned with start of sector */ | 57 return 0; 58 59 60 if (byte_offset != 0) { 61 /* read first part which isn't aligned with start of sector */ |
62 if (reiserfs_block_dev_desc->block_read(reiserfs_block_dev_desc, 63 part_info->start + 64 sector, 65 1, (void *)sec_buf) 66 != 1) { | 62 if (reiserfs_blk_desc->block_read(reiserfs_blk_desc, 63 part_info->start + sector, 64 1, (void *)sec_buf) != 1) { |
67 printf (" ** reiserfs_devread() read error\n"); 68 return 0; 69 } 70 memcpy(buf, sec_buf+byte_offset, min(SECTOR_SIZE-byte_offset, byte_len)); 71 buf+=min(SECTOR_SIZE-byte_offset, byte_len); 72 byte_len-=min(SECTOR_SIZE-byte_offset, byte_len); 73 sector++; 74 } 75 76 /* read sector aligned part */ 77 block_len = byte_len & ~(SECTOR_SIZE-1); | 65 printf (" ** reiserfs_devread() read error\n"); 66 return 0; 67 } 68 memcpy(buf, sec_buf+byte_offset, min(SECTOR_SIZE-byte_offset, byte_len)); 69 buf+=min(SECTOR_SIZE-byte_offset, byte_len); 70 byte_len-=min(SECTOR_SIZE-byte_offset, byte_len); 71 sector++; 72 } 73 74 /* read sector aligned part */ 75 block_len = byte_len & ~(SECTOR_SIZE-1); |
78 if (reiserfs_block_dev_desc->block_read(reiserfs_block_dev_desc, 79 part_info->start + sector, 80 block_len / SECTOR_SIZE, 81 (void *)buf) 82 != block_len/SECTOR_SIZE) { | 76 if (reiserfs_blk_desc->block_read(reiserfs_blk_desc, 77 part_info->start + sector, 78 block_len / SECTOR_SIZE, (void *)buf) 79 != block_len/SECTOR_SIZE) { |
83 printf (" ** reiserfs_devread() read error - block\n"); 84 return 0; 85 } 86 buf+=block_len; 87 byte_len-=block_len; 88 sector+= block_len/SECTOR_SIZE; 89 90 if ( byte_len != 0 ) { 91 /* read rest of data which are not in whole sector */ | 80 printf (" ** reiserfs_devread() read error - block\n"); 81 return 0; 82 } 83 buf+=block_len; 84 byte_len-=block_len; 85 sector+= block_len/SECTOR_SIZE; 86 87 if ( byte_len != 0 ) { 88 /* read rest of data which are not in whole sector */ |
92 if (reiserfs_block_dev_desc->block_read(reiserfs_block_dev_desc, 93 part_info->start + 94 sector, 95 1, (void *)sec_buf) 96 != 1) { | 89 if (reiserfs_blk_desc->block_read(reiserfs_blk_desc, 90 part_info->start + sector, 91 1, (void *)sec_buf) != 1) { |
97 printf (" ** reiserfs_devread() read error - last part\n"); 98 return 0; 99 } 100 memcpy(buf, sec_buf, byte_len); 101 } 102 103 return 1; 104} | 92 printf (" ** reiserfs_devread() read error - last part\n"); 93 return 0; 94 } 95 memcpy(buf, sec_buf, byte_len); 96 } 97 98 return 1; 99} |