X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=fs%2Fxfs%2Flinux-2.6%2Fxfs_vfs.h;h=aab70136c4e89cec72988d5626d79eafe0434869;hb=c7b5ebbddf7bcd3651947760f423e3783bbe6573;hp=3c7ca84681ebeae3c7bb7c2171e1513787579963;hpb=a2c21200f1c81b08cb55e417b68150bba439b646;p=linux-2.6.git diff --git a/fs/xfs/linux-2.6/xfs_vfs.h b/fs/xfs/linux-2.6/xfs_vfs.h index 3c7ca8468..aab70136c 100644 --- a/fs/xfs/linux-2.6/xfs_vfs.h +++ b/fs/xfs/linux-2.6/xfs_vfs.h @@ -36,6 +36,7 @@ #include "xfs_fs.h" struct fid; +struct vfs; struct cred; struct vnode; struct kstatfs; @@ -45,14 +46,24 @@ struct xfs_mount_args; typedef struct kstatfs xfs_statfs_t; +typedef struct vfs_sync_work { + struct list_head w_list; + struct vfs *w_vfs; + void *w_data; /* syncer routine argument */ + void (*w_syncer)(struct vfs *, void *); +} vfs_sync_work_t; + typedef struct vfs { u_int vfs_flag; /* flags */ xfs_fsid_t vfs_fsid; /* file system ID */ xfs_fsid_t *vfs_altfsid; /* An ID fixed for life of FS */ bhv_head_t vfs_bh; /* head of vfs behavior chain */ - struct super_block *vfs_super; /* Linux superblock structure */ - struct task_struct *vfs_sync_task; /* xfssyncd process */ - int vfs_sync_seq; /* xfssyncd generation number */ + struct super_block *vfs_super; /* generic superblock pointer */ + struct task_struct *vfs_sync_task; /* generalised sync thread */ + vfs_sync_work_t vfs_sync_work; /* work item for VFS_SYNC */ + struct list_head vfs_sync_list; /* sync thread work item list */ + spinlock_t vfs_sync_lock; /* work item list lock */ + int vfs_sync_seq; /* sync thread generation no. */ wait_queue_head_t vfs_wait_single_sync_task; wait_queue_head_t vfs_wait_sync_task; } vfs_t; @@ -205,4 +216,8 @@ extern void bhv_insert_all_vfsops(struct vfs *); extern void bhv_remove_all_vfsops(struct vfs *, int); extern void bhv_remove_vfsops(struct vfs *, int); +#define fs_frozen(vfsp) ((vfsp)->vfs_super->s_frozen) +#define fs_check_frozen(vfsp, level) \ + vfs_check_frozen(vfsp->vfs_super, level); + #endif /* __XFS_VFS_H__ */