seeteena <s1see...@linux.vnet.ibm.com> writes: > On 12/22/2017 01:07 PM, Markus Armbruster wrote: >> Eric Blake <ebl...@redhat.com> writes: >> >>> On 12/19/2017 08:20 AM, Max Reitz wrote: >>> >>>> So there are three things: >>>> >>>> (1) We probably should not allow snapshot names that could be IDs. >>>> Easiest way to solve this: Names have to start with a non-digit. >>> Yes, that would be a nice change. It is not strictly backwards >>> compatible (so we'd still have to cope with images that didn't follow >>> the rule, whether created by older qemu or by non-qemu implementations >>> of qcow2), but would alleviate a lot of confusion. >> I recommend to restrict ID strings to letters, digits, '-', '.', '_', >> starting with a letter. Use id_wellformed() to check. > char *id_generate(IdSubSystems id) autogenates ID in the format eg- > "#block146" with starting with '#' always. > restricting ID strings to use id_wellformed() means we need to force > ID to start with letter. > > #define ID_SPECIAL_CHAR '#' needs to change to (some letter) > #define ID_SPECIAL_CHAR 'A'
Ensuring auto-generated IDs cannot clash with IDs chosen by the user is a good idea. We generally fail to do that in QEMU. An obvious way to do it is to require the user's IDs to start with a letter, and auto-generated IDs to start with another suitable character. In theory, starting with '#' is problematic, because it needs to be quoted in shell at the beginning of words. Only matters if auto-generated IDs make sense in command lines, which I guess they currently don't. I'd prefer a 'shell-safe' character all the same. >> If backward compatibility is an issue, deprecate offending IDs (with a >> suitable warning), and kill them off after the customary grace period. >> >> IDs embedded in image files and such you may have to keep working >> somehow indefinitely.