diff options
Diffstat (limited to 'fs/fat/fat_write.c')
| -rw-r--r-- | fs/fat/fat_write.c | 11 | 
1 files changed, 11 insertions, 0 deletions
| diff --git a/fs/fat/fat_write.c b/fs/fat/fat_write.c index 3542b0bcb..3bfc1c4b3 100644 --- a/fs/fat/fat_write.c +++ b/fs/fat/fat_write.c @@ -112,6 +112,7 @@ static void set_name(dir_entry *dirent, const char *filename)  	debug("ext : %s\n", dirent->ext);  } +static __u8 num_of_fats;  /*   * Write fat buffer into block device   */ @@ -134,6 +135,15 @@ static int flush_fat_buffer(fsdata *mydata)  		return -1;  	} +	if (num_of_fats == 2) { +		/* Update corresponding second FAT blocks */ +		startblock += mydata->fatlength; +		if (disk_write(startblock, getsize, bufptr) < 0) { +			debug("error: writing second FAT blocks\n"); +			return -1; +		} +	} +  	return 0;  } @@ -950,6 +960,7 @@ static int do_fat_write(const char *filename, void *buffer,  	cursect = mydata->rootdir_sect  		= mydata->fat_sect + mydata->fatlength * bs.fats; +	num_of_fats = bs.fats;  	mydata->sect_size = (bs.sector_size[1] << 8) + bs.sector_size[0];  	mydata->clust_size = bs.cluster_size; |