vvfat.c (fe5241bfe3fb61ec3f589ceacd91c1469bfd400f) | vvfat.c (e2b8247a322cd92945785edf25f09e6b3e8285f9) |
---|---|
1/* vim:set shiftwidth=4 ts=4: */ 2/* 3 * QEMU Block driver for virtual VFAT (shadows a local directory) 4 * 5 * Copyright (c) 2004,2005 Johannes E. Schindelin 6 * 7 * Permission is hereby granted, free of charge, to any person obtaining a copy 8 * of this software and associated documentation files (the "Software"), to deal --- 1142 unchanged lines hidden (view full) --- 1151 1152 s->bs = bs; 1153 1154 /* LATER TODO: if FAT32, adjust */ 1155 s->sectors_per_cluster=0x10; 1156 1157 s->current_cluster=0xffffffff; 1158 | 1/* vim:set shiftwidth=4 ts=4: */ 2/* 3 * QEMU Block driver for virtual VFAT (shadows a local directory) 4 * 5 * Copyright (c) 2004,2005 Johannes E. Schindelin 6 * 7 * Permission is hereby granted, free of charge, to any person obtaining a copy 8 * of this software and associated documentation files (the "Software"), to deal --- 1142 unchanged lines hidden (view full) --- 1151 1152 s->bs = bs; 1153 1154 /* LATER TODO: if FAT32, adjust */ 1155 s->sectors_per_cluster=0x10; 1156 1157 s->current_cluster=0xffffffff; 1158 |
1159 /* read only is the default for safety */ 1160 bdrv_set_read_only(bs, true); | |
1161 s->qcow = NULL; 1162 s->qcow_filename = NULL; 1163 s->fat2 = NULL; 1164 s->downcase_short_names = 1; 1165 1166 fprintf(stderr, "vvfat %s chs %d,%d,%d\n", 1167 dirname, cyls, heads, secs); 1168 1169 s->sector_count = cyls * heads * secs - (s->first_sectors_number - 1); 1170 1171 if (qemu_opt_get_bool(opts, "rw", false)) { | 1159 s->qcow = NULL; 1160 s->qcow_filename = NULL; 1161 s->fat2 = NULL; 1162 s->downcase_short_names = 1; 1163 1164 fprintf(stderr, "vvfat %s chs %d,%d,%d\n", 1165 dirname, cyls, heads, secs); 1166 1167 s->sector_count = cyls * heads * secs - (s->first_sectors_number - 1); 1168 1169 if (qemu_opt_get_bool(opts, "rw", false)) { |
1172 ret = enable_write_target(bs, errp); | 1170 if (!bdrv_is_read_only(bs)) { 1171 ret = enable_write_target(bs, errp); 1172 if (ret < 0) { 1173 goto fail; 1174 } 1175 } else { 1176 ret = -EPERM; 1177 error_setg(errp, 1178 "Unable to set VVFAT to 'rw' when drive is read-only"); 1179 goto fail; 1180 } 1181 } else { 1182 /* read only is the default for safety */ 1183 ret = bdrv_set_read_only(bs, true, &local_err); |
1173 if (ret < 0) { | 1184 if (ret < 0) { |
1185 error_propagate(errp, local_err); |
|
1174 goto fail; 1175 } | 1186 goto fail; 1187 } |
1176 bdrv_set_read_only(bs, false); | |
1177 } 1178 1179 bs->total_sectors = cyls * heads * secs; 1180 1181 if (init_directories(s, dirname, heads, secs, errp)) { 1182 ret = -EIO; 1183 goto fail; 1184 } --- 1968 unchanged lines hidden --- | 1188 } 1189 1190 bs->total_sectors = cyls * heads * secs; 1191 1192 if (init_directories(s, dirname, heads, secs, errp)) { 1193 ret = -EIO; 1194 goto fail; 1195 } --- 1968 unchanged lines hidden --- |