diff options
Diffstat (limited to 'fs/aufs/dir.h')
-rw-r--r-- | fs/aufs/dir.h | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/fs/aufs/dir.h b/fs/aufs/dir.h index b0a79d722..4f3945ab8 100644 --- a/fs/aufs/dir.h +++ b/fs/aufs/dir.h @@ -29,7 +29,10 @@ struct au_vdir_destr { struct au_vdir_dehstr { struct hlist_node hash; - struct au_vdir_destr *str; + union { + struct au_vdir_destr *str; + struct llist_node lnode; /* delayed free */ + }; } ____cacheline_aligned_in_smp; struct au_vdir_de { @@ -67,7 +70,10 @@ struct au_vdir { unsigned long vd_version; unsigned int vd_deblk_sz; - unsigned long vd_jiffy; + union { + unsigned long vd_jiffy; + struct llist_node vd_lnode; /* delayed free */ + }; } ____cacheline_aligned_in_smp; /* ---------------------------------------------------------------------- */ @@ -91,7 +97,7 @@ int au_nhash_test_known_wh(struct au_nhash *whlist, char *name, int nlen); int au_nhash_append_wh(struct au_nhash *whlist, char *name, int nlen, ino_t ino, unsigned int d_type, aufs_bindex_t bindex, unsigned char shwh); -void au_vdir_free(struct au_vdir *vdir); +void au_vdir_free(struct au_vdir *vdir, int atonce); int au_vdir_init(struct file *file); int au_vdir_fill_de(struct file *file, struct dir_context *ctx); |