diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-03-06 14:31:38 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-03-06 14:31:38 -0500 |
commit | 05c5cb31ec47cacf38db56d9efaa37ca9d473132 (patch) | |
tree | 03f900679819abd8700d5ea93c22e3a59d3af7ca /fs/xfs | |
parent | 4582a30c2fdca5d2b40f63a20ea082b93230ff2b (diff) | |
parent | 4ea41e2de5bba756858bb40f964e3490b6d1a25c (diff) |
Merge branch 'for-2.6.34' of git://linux-nfs.org/~bfields/linux
* 'for-2.6.34' of git://linux-nfs.org/~bfields/linux: (22 commits)
nfsd4: fix minor memory leak
svcrpc: treat uid's as unsigned
nfsd: ensure sockets are closed on error
Revert "sunrpc: move the close processing after do recvfrom method"
Revert "sunrpc: fix peername failed on closed listener"
sunrpc: remove unnecessary svc_xprt_put
NFSD: NFSv4 callback client should use RPC_TASK_SOFTCONN
xfs_export_operations.commit_metadata
commit_metadata export operation replacing nfsd_sync_dir
lockd: don't clear sm_monitored on nsm_reboot_lookup
lockd: release reference to nsm_handle in nlm_host_rebooted
nfsd: Use vfs_fsync_range() in nfsd_commit
NFSD: Create PF_INET6 listener in write_ports
SUNRPC: NFS kernel APIs shouldn't return ENOENT for "transport not found"
SUNRPC: Bury "#ifdef IPV6" in svc_create_xprt()
NFSD: Support AF_INET6 in svc_addsock() function
SUNRPC: Use rpc_pton() in ip_map_parse()
nfsd: 4.1 has an rfc number
nfsd41: Create the recovery entry for the NFSv4.1 client
nfsd: use vfs_fsync for non-directories
...
Diffstat (limited to 'fs/xfs')
-rw-r--r-- | fs/xfs/linux-2.6/xfs_export.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/fs/xfs/linux-2.6/xfs_export.c b/fs/xfs/linux-2.6/xfs_export.c index 87b8cbd23d4b..846b75aeb2ab 100644 --- a/fs/xfs/linux-2.6/xfs_export.c +++ b/fs/xfs/linux-2.6/xfs_export.c | |||
@@ -29,6 +29,7 @@ | |||
29 | #include "xfs_vnodeops.h" | 29 | #include "xfs_vnodeops.h" |
30 | #include "xfs_bmap_btree.h" | 30 | #include "xfs_bmap_btree.h" |
31 | #include "xfs_inode.h" | 31 | #include "xfs_inode.h" |
32 | #include "xfs_inode_item.h" | ||
32 | 33 | ||
33 | /* | 34 | /* |
34 | * Note that we only accept fileids which are long enough rather than allow | 35 | * Note that we only accept fileids which are long enough rather than allow |
@@ -215,9 +216,28 @@ xfs_fs_get_parent( | |||
215 | return d_obtain_alias(VFS_I(cip)); | 216 | return d_obtain_alias(VFS_I(cip)); |
216 | } | 217 | } |
217 | 218 | ||
219 | STATIC int | ||
220 | xfs_fs_nfs_commit_metadata( | ||
221 | struct inode *inode) | ||
222 | { | ||
223 | struct xfs_inode *ip = XFS_I(inode); | ||
224 | struct xfs_mount *mp = ip->i_mount; | ||
225 | int error = 0; | ||
226 | |||
227 | xfs_ilock(ip, XFS_ILOCK_SHARED); | ||
228 | if (xfs_ipincount(ip)) { | ||
229 | error = _xfs_log_force_lsn(mp, ip->i_itemp->ili_last_lsn, | ||
230 | XFS_LOG_SYNC, NULL); | ||
231 | } | ||
232 | xfs_iunlock(ip, XFS_ILOCK_SHARED); | ||
233 | |||
234 | return error; | ||
235 | } | ||
236 | |||
218 | const struct export_operations xfs_export_operations = { | 237 | const struct export_operations xfs_export_operations = { |
219 | .encode_fh = xfs_fs_encode_fh, | 238 | .encode_fh = xfs_fs_encode_fh, |
220 | .fh_to_dentry = xfs_fs_fh_to_dentry, | 239 | .fh_to_dentry = xfs_fs_fh_to_dentry, |
221 | .fh_to_parent = xfs_fs_fh_to_parent, | 240 | .fh_to_parent = xfs_fs_fh_to_parent, |
222 | .get_parent = xfs_fs_get_parent, | 241 | .get_parent = xfs_fs_get_parent, |
242 | .commit_metadata = xfs_fs_nfs_commit_metadata, | ||
223 | }; | 243 | }; |