diff options
Diffstat (limited to 'module/zfs/zpl_super.c')
-rw-r--r-- | module/zfs/zpl_super.c | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/module/zfs/zpl_super.c b/module/zfs/zpl_super.c index fd4f691e1..d4d4e1b67 100644 --- a/module/zfs/zpl_super.c +++ b/module/zfs/zpl_super.c @@ -49,6 +49,25 @@ zpl_inode_destroy(struct inode *ip) } /* + * Called from __mark_inode_dirty() to reflect that something in the + * inode has changed. We use it to ensure the znode system attributes + * are always strictly update to date with respect to the inode. + */ +#ifdef HAVE_DIRTY_INODE_WITH_FLAGS +static void +zpl_dirty_inode(struct inode *ip, int flags) +{ + zfs_dirty_inode(ip, flags); +} +#else +static void +zpl_dirty_inode(struct inode *ip) +{ + zfs_dirty_inode(ip, 0); +} +#endif /* HAVE_DIRTY_INODE_WITH_FLAGS */ + +/* * When ->drop_inode() is called its return value indicates if the * inode should be evicted from the inode cache. If the inode is * unhashed and has no links the default policy is to evict it @@ -306,7 +325,7 @@ zpl_free_cached_objects(struct super_block *sb, int nr_to_scan) const struct super_operations zpl_super_operations = { .alloc_inode = zpl_inode_alloc, .destroy_inode = zpl_inode_destroy, - .dirty_inode = NULL, + .dirty_inode = zpl_dirty_inode, .write_inode = NULL, .drop_inode = NULL, #ifdef HAVE_EVICT_INODE |