diff options
| author | Ben Myers <bpm@sgi.com> | 2010-02-17 14:05:11 -0600 | 
|---|---|---|
| committer | J. Bruce Fields <bfields@citi.umich.edu> | 2010-02-20 13:13:44 -0800 | 
| commit | f501912a35c02eadc55ca9396ece55fe36f785d0 (patch) | |
| tree | f5d6f66d2ad14910e3c2c3d6725cac9402f37c1a /include/linux/exportfs.h | |
| parent | 7e469af97eed947ba9204712601281a69ae8eb6c (diff) | |
| download | olio-linux-3.10-f501912a35c02eadc55ca9396ece55fe36f785d0.tar.xz olio-linux-3.10-f501912a35c02eadc55ca9396ece55fe36f785d0.zip  | |
commit_metadata export operation replacing nfsd_sync_dir
- Add commit_metadata export_operation to allow the underlying filesystem to
decide how to commit an inode most efficiently.
- Usage of nfsd_sync_dir and write_inode_now has been replaced with the
commit_metadata function that takes a svc_fh.
- The commit_metadata function calls the commit_metadata export_op if it's
there, or else falls back to sync_inode instead of fsync and write_inode_now
because only metadata need be synced here.
- nfsd4_sync_rec_dir now uses vfs_fsync so that commit_metadata can be static
Signed-off-by: Ben Myers <bpm@sgi.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
Diffstat (limited to 'include/linux/exportfs.h')
| -rw-r--r-- | include/linux/exportfs.h | 5 | 
1 files changed, 5 insertions, 0 deletions
diff --git a/include/linux/exportfs.h b/include/linux/exportfs.h index dc12f416a49..a9cd507f8cd 100644 --- a/include/linux/exportfs.h +++ b/include/linux/exportfs.h @@ -96,6 +96,7 @@ struct fid {   * @fh_to_parent:   find the implied object's parent and get a dentry for it   * @get_name:       find the name for a given inode in a given directory   * @get_parent:     find the parent of a given directory + * @commit_metadata: commit metadata changes to stable storage   *   * See Documentation/filesystems/nfs/Exporting for details on how to use   * this interface correctly. @@ -137,6 +138,9 @@ struct fid {   *    is also a directory.  In the event that it cannot be found, or storage   *    space cannot be allocated, a %ERR_PTR should be returned.   * + * commit_metadata: + *    @commit_metadata should commit metadata changes to stable storage. + *   * Locking rules:   *    get_parent is called with child->d_inode->i_mutex down   *    get_name is not (which is possibly inconsistent) @@ -152,6 +156,7 @@ struct export_operations {  	int (*get_name)(struct dentry *parent, char *name,  			struct dentry *child);  	struct dentry * (*get_parent)(struct dentry *child); +	int (*commit_metadata)(struct inode *inode);  };  extern int exportfs_encode_fh(struct dentry *dentry, struct fid *fid,  |