diff options
author | André Fabian Silva Delgado <emulatorman@parabola.nu> | 2015-12-26 16:00:37 -0300 |
---|---|---|
committer | André Fabian Silva Delgado <emulatorman@parabola.nu> | 2015-12-26 16:00:37 -0300 |
commit | 35acfa0fc609f2a2cd95cef4a6a9c3a5c38f1778 (patch) | |
tree | 281fc9db2a40c54ee94dc88fc2bf8c119cfafc15 /fs/aufs/inode.h | |
parent | f3a16ba6a1152b8966dcadc668af4cf00623c7b1 (diff) |
Add support for the exFAT file system, fix hangs on older intel hardware and update AUFSpck-4.3.3-gnu
Diffstat (limited to 'fs/aufs/inode.h')
-rw-r--r-- | fs/aufs/inode.h | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/fs/aufs/inode.h b/fs/aufs/inode.h index a3a187616..31e31f43a 100644 --- a/fs/aufs/inode.h +++ b/fs/aufs/inode.h @@ -46,12 +46,12 @@ struct au_hinode { do { (flags) &= ~AuIG_##name; } while (0) struct au_iigen { + spinlock_t ig_spin; __u32 ig_generation, ig_flags; }; struct au_vdir; struct au_iinfo { - spinlock_t ii_genspin; struct au_iigen ii_generation; struct super_block *ii_hsb1; /* no get/put */ @@ -409,17 +409,19 @@ static inline void au_icntnr_init(struct au_icntnr *c) #endif } -static inline unsigned int au_iigen(struct inode *inode, struct au_iigen *iigen) +static inline unsigned int au_iigen(struct inode *inode, struct au_iigen *iigen_arg) { unsigned int gen; struct au_iinfo *iinfo; + struct au_iigen *iigen; iinfo = au_ii(inode); - spin_lock(&iinfo->ii_genspin); - if (iigen) - *iigen = iinfo->ii_generation; - gen = iinfo->ii_generation.ig_generation; - spin_unlock(&iinfo->ii_genspin); + iigen = &iinfo->ii_generation; + spin_lock(&iigen->ig_spin); + if (iigen_arg) + *iigen_arg = *iigen; + gen = iigen->ig_generation; + spin_unlock(&iigen->ig_spin); return gen; } @@ -439,11 +441,13 @@ static inline int au_test_higen(struct inode *inode, struct inode *h_inode) static inline void au_iigen_dec(struct inode *inode) { struct au_iinfo *iinfo; + struct au_iigen *iigen; iinfo = au_ii(inode); - spin_lock(&iinfo->ii_genspin); - iinfo->ii_generation.ig_generation--; - spin_unlock(&iinfo->ii_genspin); + iigen = &iinfo->ii_generation; + spin_lock(&iigen->ig_spin); + iigen->ig_generation--; + spin_unlock(&iigen->ig_spin); } static inline int au_iigen_test(struct inode *inode, unsigned int sigen) |