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 ---