diff options
author | Linus Torvalds <torvalds@g5.osdl.org> | 2006-03-25 12:18:27 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-03-25 12:18:27 -0500 |
commit | 53846a21c1766326bb14ce8ab6e997a0c120675d (patch) | |
tree | 37b04485e29844b4e734479181276a2f4d2447e4 /fs/namespace.c | |
parent | 2e9abdd9bad485970b37cd53a82f92702054984c (diff) | |
parent | 1ebbe2b20091d306453a5cf480a87e6cd28ae76f (diff) |
Merge git://git.linux-nfs.org/pub/linux/nfs-2.6
* git://git.linux-nfs.org/pub/linux/nfs-2.6: (103 commits)
SUNRPC,RPCSEC_GSS: spkm3--fix config dependencies
SUNRPC,RPCSEC_GSS: spkm3: import contexts using NID_cast5_cbc
LOCKD: Make nlmsvc_traverse_shares return void
LOCKD: nlmsvc_traverse_blocks return is unused
SUNRPC,RPCSEC_GSS: fix krb5 sequence numbers.
NFSv4: Dont list system.nfs4_acl for filesystems that don't support it.
SUNRPC,RPCSEC_GSS: remove unnecessary kmalloc of a checksum
SUNRPC: Ensure rpc_call_async() always calls tk_ops->rpc_release()
SUNRPC: Fix memory barriers for req->rq_received
NFS: Fix a race in nfs_sync_inode()
NFS: Clean up nfs_flush_list()
NFS: Fix a race with PG_private and nfs_release_page()
NFSv4: Ensure the callback daemon flushes signals
SUNRPC: Fix a 'Busy inodes' error in rpc_pipefs
NFS, NLM: Allow blocking locks to respect signals
NFS: Make nfs_fhget() return appropriate error values
NFSv4: Fix an oops in nfs4_fill_super
lockd: blocks should hold a reference to the nlm_file
NFSv4: SETCLIENTID_CONFIRM should handle NFS4ERR_DELAY/NFS4ERR_RESOURCE
NFSv4: Send the delegation stateid for SETATTR calls
...
Diffstat (limited to 'fs/namespace.c')
-rw-r--r-- | fs/namespace.c | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/fs/namespace.c b/fs/namespace.c index 39c81a8d6316..71e75bcf4d28 100644 --- a/fs/namespace.c +++ b/fs/namespace.c | |||
@@ -399,6 +399,44 @@ struct seq_operations mounts_op = { | |||
399 | .show = show_vfsmnt | 399 | .show = show_vfsmnt |
400 | }; | 400 | }; |
401 | 401 | ||
402 | static int show_vfsstat(struct seq_file *m, void *v) | ||
403 | { | ||
404 | struct vfsmount *mnt = v; | ||
405 | int err = 0; | ||
406 | |||
407 | /* device */ | ||
408 | if (mnt->mnt_devname) { | ||
409 | seq_puts(m, "device "); | ||
410 | mangle(m, mnt->mnt_devname); | ||
411 | } else | ||
412 | seq_puts(m, "no device"); | ||
413 | |||
414 | /* mount point */ | ||
415 | seq_puts(m, " mounted on "); | ||
416 | seq_path(m, mnt, mnt->mnt_root, " \t\n\\"); | ||
417 | seq_putc(m, ' '); | ||
418 | |||
419 | /* file system type */ | ||
420 | seq_puts(m, "with fstype "); | ||
421 | mangle(m, mnt->mnt_sb->s_type->name); | ||
422 | |||
423 | /* optional statistics */ | ||
424 | if (mnt->mnt_sb->s_op->show_stats) { | ||
425 | seq_putc(m, ' '); | ||
426 | err = mnt->mnt_sb->s_op->show_stats(m, mnt); | ||
427 | } | ||
428 | |||
429 | seq_putc(m, '\n'); | ||
430 | return err; | ||
431 | } | ||
432 | |||
433 | struct seq_operations mountstats_op = { | ||
434 | .start = m_start, | ||
435 | .next = m_next, | ||
436 | .stop = m_stop, | ||
437 | .show = show_vfsstat, | ||
438 | }; | ||
439 | |||
402 | /** | 440 | /** |
403 | * may_umount_tree - check if a mount tree is busy | 441 | * may_umount_tree - check if a mount tree is busy |
404 | * @mnt: root of mount tree | 442 | * @mnt: root of mount tree |