On Fri, Sep 14, 2018 at 08:51:13AM -0600, Toshi Kani wrote: > Sync syscall to DAX file needs to flush processor cache, but it > currently does not flush to existing DAX files. This is because > 'ext4_da_aops' is set to address_space_operations of existing DAX > files, instead of 'ext4_dax_aops', since S_DAX flag is set after > ext4_set_aops() in the open path. > > New file > -------- > lookup_open > ext4_create > __ext4_new_inode > ext4_set_inode_flags // Set S_DAX flag > ext4_set_aops // Set aops to ext4_dax_aops > > Existing file > ------------- > lookup_open > ext4_lookup > ext4_iget > ext4_set_aops // Set aops to ext4_da_aops > ext4_set_inode_flags // Set S_DAX flag > > Change ext4_iget() to initialize i_flags before ext4_set_aops(). > > Fixes: 5f0663bb4a64 ("ext4, dax: introduce ext4_dax_aops") > Signed-off-by: Toshi Kani <toshi.kani@xxxxxxx> > Suggested-by: Jan Kara <jack@xxxxxxx> > Cc: Jan Kara <jack@xxxxxxx> > Cc: Dan Williams <dan.j.williams@xxxxxxxxx> > Cc: "Theodore Ts'o" <tytso@xxxxxxx> > Cc: Andreas Dilger <adilger.kernel@xxxxxxxxx> > Cc: <stable@xxxxxxxxxxxxxxx> Thanks, applied. - Ted