From 974cec8ca0352eb5d281535b714cf194a606e98f Mon Sep 17 00:00:00 2001 From: Andy Adamson Date: Wed, 20 Oct 2010 00:18:02 -0400 Subject: NFS: client needs to maintain list of inodes with active layouts In particular, server reboot will invalidate all layouts. Note that in order to have an active layout, we must get a successful response from the server. To avoid adding that machinery, this patch just includes a stub that fakes up a successful return. Since the layout is never referenced for io, this is not a problem. Signed-off-by: Andy Adamson Signed-off-by: Benny Halevy Signed-off-by: Dean Hildebrand Signed-off-by: Fred Isaman Signed-off-by: Trond Myklebust --- fs/nfs/pnfs.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'fs/nfs/pnfs.h') diff --git a/fs/nfs/pnfs.h b/fs/nfs/pnfs.h index 4ed1b48c71b1..1c3eb02f4944 100644 --- a/fs/nfs/pnfs.h +++ b/fs/nfs/pnfs.h @@ -30,6 +30,13 @@ #ifndef FS_NFS_PNFS_H #define FS_NFS_PNFS_H +struct pnfs_layout_segment { + struct list_head fi_list; + u32 iomode; + struct kref kref; + struct pnfs_layout_hdr *layout; +}; + #ifdef CONFIG_NFS_V4_1 #define LAYOUT_NFSV4_1_MODULE_PREFIX "nfs-layouttype4" @@ -51,6 +58,8 @@ struct pnfs_layoutdriver_type { struct pnfs_layout_hdr { unsigned long refcount; + struct list_head layouts; /* other client layouts */ + struct list_head segs; /* layout segments list */ unsigned long state; struct inode *inode; }; @@ -64,6 +73,7 @@ pnfs_update_layout(struct inode *ino, struct nfs_open_context *ctx, void set_pnfs_layoutdriver(struct nfs_server *, u32 id); void unset_pnfs_layoutdriver(struct nfs_server *); void pnfs_destroy_layout(struct nfs_inode *); +void pnfs_destroy_all_layouts(struct nfs_client *); static inline int lo_fail_bit(u32 iomode) @@ -80,6 +90,10 @@ static inline int pnfs_enabled_sb(struct nfs_server *nfss) #else /* CONFIG_NFS_V4_1 */ +static inline void pnfs_destroy_all_layouts(struct nfs_client *clp) +{ +} + static inline void pnfs_destroy_layout(struct nfs_inode *nfsi) { } -- cgit v1.2.3-59-g8ed1b