diff options
Diffstat (limited to 'include/linux/fs.h')
| -rw-r--r-- | include/linux/fs.h | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/include/linux/fs.h b/include/linux/fs.h index f83d997c5582..6d6226732c93 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
| @@ -574,7 +574,14 @@ struct file_ra_state { | |||
| 574 | #define RA_FLAG_INCACHE 0x02 /* file is already in cache */ | 574 | #define RA_FLAG_INCACHE 0x02 /* file is already in cache */ |
| 575 | 575 | ||
| 576 | struct file { | 576 | struct file { |
| 577 | struct list_head f_list; | 577 | /* |
| 578 | * fu_list becomes invalid after file_free is called and queued via | ||
| 579 | * fu_rcuhead for RCU freeing | ||
| 580 | */ | ||
| 581 | union { | ||
| 582 | struct list_head fu_list; | ||
| 583 | struct rcu_head fu_rcuhead; | ||
| 584 | } f_u; | ||
| 578 | struct dentry *f_dentry; | 585 | struct dentry *f_dentry; |
| 579 | struct vfsmount *f_vfsmnt; | 586 | struct vfsmount *f_vfsmnt; |
| 580 | struct file_operations *f_op; | 587 | struct file_operations *f_op; |
| @@ -598,7 +605,6 @@ struct file { | |||
| 598 | spinlock_t f_ep_lock; | 605 | spinlock_t f_ep_lock; |
| 599 | #endif /* #ifdef CONFIG_EPOLL */ | 606 | #endif /* #ifdef CONFIG_EPOLL */ |
| 600 | struct address_space *f_mapping; | 607 | struct address_space *f_mapping; |
| 601 | struct rcu_head f_rcuhead; | ||
| 602 | }; | 608 | }; |
| 603 | extern spinlock_t files_lock; | 609 | extern spinlock_t files_lock; |
| 604 | #define file_list_lock() spin_lock(&files_lock); | 610 | #define file_list_lock() spin_lock(&files_lock); |
