Message ID | 20201015214632.41951-3-satyat@google.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | add support for inline encryption to device mapper | expand |
On Thu, Oct 15, 2020 at 09:46:30PM +0000, Satya Tangirala wrote: > Add a (void *) pointer to struct keyslot_manager that the owner of the > struct can use for any purpose it wants. > > Right now, the struct keyslot_manager is expected to be embedded directly > into other structs (and the owner of the keyslot_manager would use > container_of() to access any other data the owner needs). However, this > might take up more space than is acceptable, and it would be better to be > able to add only a pointer to a struct keyslot_manager into other structs > rather than embed the entire struct directly. But container_of() can't be > used when only the pointer to the keyslot_manager is embded. The primary > motivation of this patch is to get around that issue. No, please don't bloat the structure. If some weird caller doesn't like the embedding it can create a container structure with the blk_keyslot_manager structure and a backpointer.
On Fri, Oct 16, 2020 at 08:19:41AM +0100, Christoph Hellwig wrote: > On Thu, Oct 15, 2020 at 09:46:30PM +0000, Satya Tangirala wrote: > > Add a (void *) pointer to struct keyslot_manager that the owner of the > > struct can use for any purpose it wants. > > > > Right now, the struct keyslot_manager is expected to be embedded directly > > into other structs (and the owner of the keyslot_manager would use > > container_of() to access any other data the owner needs). However, this > > might take up more space than is acceptable, and it would be better to be > > able to add only a pointer to a struct keyslot_manager into other structs > > rather than embed the entire struct directly. But container_of() can't be > > used when only the pointer to the keyslot_manager is embded. The primary > > motivation of this patch is to get around that issue. > > No, please don't bloat the structure. If some weird caller doesn't > like the embedding it can create a container structure with the > blk_keyslot_manager structure and a backpointer. Ah, ok. Thanks!
diff --git a/include/linux/keyslot-manager.h b/include/linux/keyslot-manager.h index 323e15dd6fa7..37f1022b256f 100644 --- a/include/linux/keyslot-manager.h +++ b/include/linux/keyslot-manager.h @@ -59,6 +59,9 @@ struct blk_keyslot_manager { /* Device for runtime power management (NULL if none) */ struct device *dev; + /* Private data for owner */ + void *priv; + /* Here onwards are *private* fields for internal keyslot manager use */ unsigned int num_slots;
Add a (void *) pointer to struct keyslot_manager that the owner of the struct can use for any purpose it wants. Right now, the struct keyslot_manager is expected to be embedded directly into other structs (and the owner of the keyslot_manager would use container_of() to access any other data the owner needs). However, this might take up more space than is acceptable, and it would be better to be able to add only a pointer to a struct keyslot_manager into other structs rather than embed the entire struct directly. But container_of() can't be used when only the pointer to the keyslot_manager is embded. The primary motivation of this patch is to get around that issue. Signed-off-by: Satya Tangirala <satyat@google.com> --- include/linux/keyslot-manager.h | 3 +++ 1 file changed, 3 insertions(+)