For the create_temp_bpf_file part I'm not 100% convinced by the explanation. Although fsync will not make things worse, it should not be necessary unless the infra is broken (but then we'd see other problems; and note that if we started to call fsync we also need to call it on directory etc.). Another possibility is write call getting interrupted before all data is written. Can you share an example of failed job? Can we add more error handling and logging, like check return value from close (also fsyncs if we add them)? Can we use stdio calls instead of libc ones BTW, they will handle partial writes at least, on top of being more portable?
Can ack the port part. P.S. Did not worth its own patch, but since you are working on it can you also do s/sizeof(struct rte_mbuf)/RTE_MBUF_DEFAULT_BUF_SIZE/g ? I overlooked it last time.

