as far as I understand an inode has an in-memory representation (for instance sys/ufs/ufs/inode.h) that contains a pointer to an on-disk representation. The two are different because on disk things must be really right aligned, right?
With regard to UFS, the DIP_SET macro sets flags on the on-disk copy of the in-memory inode pointer. I'm curious to understand when and how changes are effectively written back to disk and thru which flow. I mean, the dinode_u field of the inode struct where is flushed?