X-Git-Url: https://git.camperquake.de/gitweb.cgi?a=blobdiff_plain;f=module%2Fzfs%2Fzpl_super.c;h=d4d4e1b670692e6b9cac8280dfd76e025746ffa2;hb=8780c53961e668211682d40ad36946294c3145d8;hp=fd4f691e19cd5a9a730f61b4c5c3fdc8a88ac24b;hpb=bd192c4f4831fae78f9dc3264b8c1a9b6dc85307;p=zfs.git diff --git a/module/zfs/zpl_super.c b/module/zfs/zpl_super.c index fd4f691..d4d4e1b 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