Hi Matt, >> I say we should support writev() on efivarfs. Not supporting it seems >> odd especially since that is not documented anywhere. So yes, I am for >> adding .write_iter() support and be done with that. > > Well, as Al has explained it's not that writev() isn't supported, it's > that having an iovec vector containing only the 4-byte variable > attribute isn't currently supported. > > Since writev() calls are intended to be atomic, and even though efivarfs > gets fed the variable data in chunks we can process it in one go, I > think allowing the scenario you describe is fine. meaning only writev() with a single vector is supported. >> Also please note that even write(,4) and write(,n) does not work >> either. You can not write partial entries as it seems. Maybe you are >> able to append, but it seems the initial creation of the variable has >> to be done with a single write() call. Anything else ends up in a file >> with 0 length. > > Yes, that's by design. I guess it's to prohibit people from creating > bogus EFI variables or accidentally deleting variables (a SetVariable() > call with length 0 is a delete). I have no problems with these semantics, but it means you need to add support for .write_iter since otherwise multiple vectors will not work. And really think that is better than forcing userspace to work around this limitation. As I mentioned earlier, for me it was really obvious to use a vectored write for EFI variables. That just made sense to me. So seeing it not working caused confusion. Regards Marcel -- To unsubscribe from this list: send the line "unsubscribe linux-efi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html