Fixes to previous commit.
							parent
							
								
									af9fd39611
								
							
						
					
					
						commit
						135282539b
					
				|  | @ -40,6 +40,7 @@ typedef enum { | |||
| 	ND_Open,	/* 1: Device is open. */ | ||||
| 	ND_ReadOnly,	/* 1: Device is read-only. */ | ||||
| 	ND_Dirty,	/* 1: Device is dirty, needs sync. */ | ||||
| 	ND_Block,	/* 1: Device is a block device. */ | ||||
| } ntfs_device_state_bits; | ||||
| 
 | ||||
| #define  test_ndev_flag(nd, flag)	   test_bit(ND_##flag, (nd)->d_state) | ||||
|  | @ -58,6 +59,10 @@ typedef enum { | |||
| #define NDevSetDirty(nd)	  set_ndev_flag(nd, Dirty) | ||||
| #define NDevClearDirty(nd)	clear_ndev_flag(nd, Dirty) | ||||
| 
 | ||||
| #define NDevBlock(nd)		 test_ndev_flag(nd, Block) | ||||
| #define NDevSetBlock(nd)	  set_ndev_flag(nd, Block) | ||||
| #define NDevClearBlock(nd)	clear_ndev_flag(nd, Block) | ||||
| 
 | ||||
| /**
 | ||||
|  * struct ntfs_device - | ||||
|  * | ||||
|  |  | |||
|  | @ -671,7 +671,8 @@ int ntfs_device_sector_size_get(struct ntfs_device *dev) | |||
| 		int sect_size = 0; | ||||
| 
 | ||||
| 		if (!dev->d_ops->ioctl(dev, BLKSSZGET, §_size)) { | ||||
| 			ntfs_log_debug("BLKSSZGET sector size = %d bytes\n", sect_size); | ||||
| 			ntfs_log_debug("BLKSSZGET sector size = %d bytes\n", | ||||
| 					sect_size); | ||||
| 			return sect_size; | ||||
| 		} | ||||
| 	} | ||||
|  | @ -705,13 +706,15 @@ int ntfs_device_block_size_set(struct ntfs_device *dev, int block_size) | |||
| 		size_t s_block_size = block_size; | ||||
| 		if (!dev->d_ops->ioctl(dev, BLKBSZSET, &s_block_size)) { | ||||
| 			ntfs_log_debug("Used BLKBSZSET to set block size to " | ||||
| 					"%d bytes\n", block_size); | ||||
| 					"%d bytes.\n", block_size); | ||||
| 			return 0; | ||||
| 		} | ||||
| 		/* If not a block device, pretend it was successful. */ | ||||
| 		if (!NDevBlock(dev)) | ||||
| 			return 0; | ||||
| 	} | ||||
| #else | ||||
| 	errno = EOPNOTSUPP; | ||||
| #endif | ||||
| 	return -1; | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -79,6 +79,7 @@ | |||
| static int ntfs_device_unix_io_open(struct ntfs_device *dev, int flags) | ||||
| { | ||||
| 	struct flock flk; | ||||
| 	struct stat sbuf; | ||||
| 	int err; | ||||
| 
 | ||||
| 	if (NDevOpen(dev)) { | ||||
|  | @ -116,6 +117,9 @@ static int ntfs_device_unix_io_open(struct ntfs_device *dev, int flags) | |||
| 					"close %s", dev->d_name); | ||||
| 		goto err_out; | ||||
| 	} | ||||
| 	/* Determine if device is a block device or not, ignoring errors. */ | ||||
| 	if (!fstat(DEV_FD(dev), &sbuf) && S_ISBLK(sbuf.st_mode)) | ||||
| 		NDevSetBlock(dev); | ||||
| 	/* Set our open flag. */ | ||||
| 	NDevSetOpen(dev); | ||||
| 	return 0; | ||||
|  | @ -317,4 +321,3 @@ struct ntfs_device_operations ntfs_device_unix_io_ops = { | |||
| 	.stat		= ntfs_device_unix_io_stat, | ||||
| 	.ioctl		= ntfs_device_unix_io_ioctl, | ||||
| }; | ||||
| 
 | ||||
|  |  | |||
|  | @ -3745,8 +3745,8 @@ static BOOL mkntfs_override_vol_params(ntfs_volume *vol) | |||
| 	 * "inode size" can be specified on other Linux/Unix file systems. | ||||
| 	 */ | ||||
| 	vol->mft_record_size = 1024; | ||||
| 	if (vol->mft_record_size < vol->sector_size) | ||||
| 		vol->mft_record_size = vol->sector_size; | ||||
| 	if (vol->mft_record_size < opts.sector_size) | ||||
| 		vol->mft_record_size = opts.sector_size; | ||||
| 	if (vol->mft_record_size > (unsigned long)page_size) | ||||
| 		ntfs_log_warning("Mft record size (%u bytes) exceeds system " | ||||
| 				"page size (%li bytes).  You will not be able " | ||||
|  | @ -3763,8 +3763,8 @@ static BOOL mkntfs_override_vol_params(ntfs_volume *vol) | |||
| 	 * FIXME: Should we make the index record size to be user specifiable? | ||||
| 	 */ | ||||
| 	vol->indx_record_size = 4096; | ||||
| 	if (vol->indx_record_size < vol->sector_size) | ||||
| 		vol->indx_record_size = vol->sector_size; | ||||
| 	if (vol->indx_record_size < opts.sector_size) | ||||
| 		vol->indx_record_size = opts.sector_size; | ||||
| 	if (vol->indx_record_size > (unsigned long)page_size) | ||||
| 		ntfs_log_warning("Index record size (%u bytes) exceeds system " | ||||
| 				"page size (%li bytes).  You will not be able " | ||||
|  | @ -3893,7 +3893,8 @@ static BOOL mkntfs_initialize_rl_mft(void) | |||
| 		g_mft_zone_end = g_mft_zone_end >> 3;	/* 12.5% */ | ||||
| 		break; | ||||
| 	} | ||||
| 	ntfs_log_debug("MFT zone size = %lldkiB\n", g_mft_zone_end / 1024); | ||||
| 	ntfs_log_debug("MFT zone size = %lldkiB\n", g_mft_zone_end << | ||||
| 			g_vol->cluster_size_bits >> 10 /* >> 10 == / 1024 */); | ||||
| 	/*
 | ||||
| 	 * The mft zone begins with the mft data attribute, not at the beginning | ||||
| 	 * of the device. | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue