]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - fs/ncpfs/inode.c
xen64: deal with extra words Xen pushes onto exception frames
[linux-2.6-omap-h63xx.git] / fs / ncpfs / inode.c
index eff1f18d034f1b2510aa6ef54c71427bda284ba1..2e5ab1204dece88feb8f1709cf37323ff459658c 100644 (file)
@@ -28,6 +28,8 @@
 #include <linux/init.h>
 #include <linux/smp_lock.h>
 #include <linux/vfs.h>
+#include <linux/mount.h>
+#include <linux/seq_file.h>
 
 #include <linux/ncp_fs.h>
 
 #include "ncplib_kernel.h"
 #include "getopt.h"
 
+#define NCP_DEFAULT_FILE_MODE 0600
+#define NCP_DEFAULT_DIR_MODE 0700
+#define NCP_DEFAULT_TIME_OUT 10
+#define NCP_DEFAULT_RETRY_COUNT 20
+
 static void ncp_delete_inode(struct inode *);
 static void ncp_put_super(struct super_block *);
 static int  ncp_statfs(struct dentry *, struct kstatfs *);
+static int  ncp_show_options(struct seq_file *, struct vfsmount *);
 
 static struct kmem_cache * ncp_inode_cachep;
 
@@ -96,14 +104,9 @@ static const struct super_operations ncp_sops =
        .put_super      = ncp_put_super,
        .statfs         = ncp_statfs,
        .remount_fs     = ncp_remount,
+       .show_options   = ncp_show_options,
 };
 
-extern struct dentry_operations ncp_root_dentry_operations;
-#if defined(CONFIG_NCPFS_EXTRAS) || defined(CONFIG_NCPFS_NFS_NS)
-extern const struct address_space_operations ncp_symlink_aops;
-extern int ncp_symlink(struct inode*, struct dentry*, const char*);
-#endif
-
 /*
  * Fill in the ncpfs-specific information in the inode.
  */
@@ -304,6 +307,37 @@ static void ncp_stop_tasks(struct ncp_server *server) {
        flush_scheduled_work();
 }
 
+static int  ncp_show_options(struct seq_file *seq, struct vfsmount *mnt)
+{
+       struct ncp_server *server = NCP_SBP(mnt->mnt_sb);
+       unsigned int tmp;
+
+       if (server->m.uid != 0)
+               seq_printf(seq, ",uid=%u", server->m.uid);
+       if (server->m.gid != 0)
+               seq_printf(seq, ",gid=%u", server->m.gid);
+       if (server->m.mounted_uid != 0)
+               seq_printf(seq, ",owner=%u", server->m.mounted_uid);
+       tmp = server->m.file_mode & S_IALLUGO;
+       if (tmp != NCP_DEFAULT_FILE_MODE)
+               seq_printf(seq, ",mode=0%o", tmp);
+       tmp = server->m.dir_mode & S_IALLUGO;
+       if (tmp != NCP_DEFAULT_DIR_MODE)
+               seq_printf(seq, ",dirmode=0%o", tmp);
+       if (server->m.time_out != NCP_DEFAULT_TIME_OUT * HZ / 100) {
+               tmp = server->m.time_out * 100 / HZ;
+               seq_printf(seq, ",timeout=%u", tmp);
+       }
+       if (server->m.retry_count != NCP_DEFAULT_RETRY_COUNT)
+               seq_printf(seq, ",retry=%u", server->m.retry_count);
+       if (server->m.flags != 0)
+               seq_printf(seq, ",flags=%lu", server->m.flags);
+       if (server->m.wdog_pid != NULL)
+               seq_printf(seq, ",wdogpid=%u", pid_vnr(server->m.wdog_pid));
+
+       return 0;
+}
+
 static const struct ncp_option ncp_opts[] = {
        { "uid",        OPT_INT,        'u' },
        { "gid",        OPT_INT,        'g' },
@@ -331,12 +365,12 @@ static int ncp_parse_options(struct ncp_mount_data_kernel *data, char *options)
        data->mounted_uid = 0;
        data->wdog_pid = NULL;
        data->ncp_fd = ~0;
-       data->time_out = 10;
-       data->retry_count = 20;
+       data->time_out = NCP_DEFAULT_TIME_OUT;
+       data->retry_count = NCP_DEFAULT_RETRY_COUNT;
        data->uid = 0;
        data->gid = 0;
-       data->file_mode = 0600;
-       data->dir_mode = 0700;
+       data->file_mode = NCP_DEFAULT_FILE_MODE;
+       data->dir_mode = NCP_DEFAULT_DIR_MODE;
        data->info_fd = -1;
        data->mounted_vol[0] = 0;
        
@@ -982,6 +1016,7 @@ static struct file_system_type ncp_fs_type = {
        .name           = "ncpfs",
        .get_sb         = ncp_get_sb,
        .kill_sb        = kill_anon_super,
+       .fs_flags       = FS_BINARY_MOUNTDATA,
 };
 
 static int __init init_ncp_fs(void)