On Wed, 2024-03-13 at 10:14 -0700, Isaku Yamahata wrote: > > IMO, an enum will be clearer than the two flags. > > > > enum { > > PROCESS_PRIVATE_AND_SHARED, > > PROCESS_ONLY_PRIVATE, > > PROCESS_ONLY_SHARED, > > }; > > The code will be ugly like > "if (== PRIVATE || == PRIVATE_AND_SHARED)" or > "if (== SHARED || == PRIVATE_AND_SHARED)" > > two boolean (or two flags) is less error-prone. Yes the enum would be awkward to handle. But I also thought the way this is specified in struct kvm_gfn_range is a little strange. It is ambiguous what it should mean if you set: .only_private=true; .only_shared=true; ...as happens later in the series (although it may be a mistake). Reading the original conversation, it seems Sean suggested this specifically. But it wasn't clear to me from the discussion what the intention of the "only" semantics was. Like why not? bool private; bool shared;