mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-29 10:01:25 +00:00
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>
This commit is contained in:
parent
7e469af97e
commit
f501912a35
3 changed files with 58 additions and 57 deletions
|
@ -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,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue