Merge branch 'master' of /home/trondmy/kernel/linux-2.6/
authorTrond Myklebust <Trond.Myklebust@netapp.com>
Tue, 13 Feb 2007 06:43:25 +0000 (22:43 -0800)
committerTrond Myklebust <Trond.Myklebust@netapp.com>
Tue, 13 Feb 2007 06:43:25 +0000 (22:43 -0800)
Conflicts:

net/sunrpc/auth_gss/gss_krb5_crypto.c
net/sunrpc/auth_gss/gss_spkm3_token.c
net/sunrpc/clnt.c

Merge with mainline and fix conflicts.

23 files changed:
1  2 
fs/nfs/client.c
fs/nfs/dir.c
fs/nfs/nfs4_fs.h
fs/nfs/nfs4proc.c
fs/nfs/super.c
include/linux/nfs_fs.h
include/linux/nfs_xdr.h
net/sunrpc/auth.c
net/sunrpc/auth_gss/auth_gss.c
net/sunrpc/auth_gss/gss_krb5_crypto.c
net/sunrpc/auth_gss/gss_krb5_seqnum.c
net/sunrpc/auth_gss/gss_mech_switch.c
net/sunrpc/auth_gss/gss_spkm3_token.c
net/sunrpc/auth_gss/gss_spkm3_unseal.c
net/sunrpc/auth_gss/svcauth_gss.c
net/sunrpc/cache.c
net/sunrpc/clnt.c
net/sunrpc/pmap_clnt.c
net/sunrpc/rpc_pipe.c
net/sunrpc/sched.c
net/sunrpc/stats.c
net/sunrpc/svc.c
net/sunrpc/xprt.c

diff --combined fs/nfs/client.c
index c46e94fed9eb3f131eb48646ce7ada34f7cf531e,ae9f36e393cf0a857064bdff9809d13226eb4905..2190e6c2792e6f7ed1383f49b1e2f96c6565ef3d
@@@ -394,8 -394,7 +394,8 @@@ static void nfs_init_timeout_values(str
  static int nfs_create_rpc_client(struct nfs_client *clp, int proto,
                                                unsigned int timeo,
                                                unsigned int retrans,
 -                                              rpc_authflavor_t flavor)
 +                                              rpc_authflavor_t flavor,
 +                                              int flags)
  {
        struct rpc_timeout      timeparms;
        struct rpc_clnt         *clnt = NULL;
                .program        = &nfs_program,
                .version        = clp->rpc_ops->version,
                .authflavor     = flavor,
 +              .flags          = flags,
        };
  
        if (!IS_ERR(clp->cl_rpcclient))
@@@ -550,7 -548,7 +550,7 @@@ static int nfs_init_client(struct nfs_c
         * - RFC 2623, sec 2.3.2
         */
        error = nfs_create_rpc_client(clp, proto, data->timeo, data->retrans,
 -                      RPC_AUTH_UNIX);
 +                                      RPC_AUTH_UNIX, 0);
        if (error < 0)
                goto error;
        nfs_mark_client_ready(clp, NFS_CS_READY);
@@@ -870,8 -868,7 +870,8 @@@ static int nfs4_init_client(struct nfs_
        /* Check NFS protocol revision and initialize RPC op vector */
        clp->rpc_ops = &nfs_v4_clientops;
  
 -      error = nfs_create_rpc_client(clp, proto, timeo, retrans, authflavour);
 +      error = nfs_create_rpc_client(clp, proto, timeo, retrans, authflavour,
 +                                      RPC_CLNT_CREATE_DISCRTRY);
        if (error < 0)
                goto error;
        memcpy(clp->cl_ipaddr, ip_addr, sizeof(clp->cl_ipaddr));
@@@ -1033,7 -1030,7 +1033,7 @@@ error
   * Create an NFS4 referral server record
   */
  struct nfs_server *nfs4_create_referral_server(struct nfs_clone_mount *data,
 -                                             struct nfs_fh *fh)
 +                                             struct nfs_fh *mntfh)
  {
        struct nfs_client *parent_client;
        struct nfs_server *server, *parent_server;
        BUG_ON(!server->nfs_client->rpc_ops);
        BUG_ON(!server->nfs_client->rpc_ops->file_inode_ops);
  
 +      /* Probe the root fh to retrieve its FSID and filehandle */
 +      error = nfs4_path_walk(server, mntfh, data->mnt_path);
 +      if (error < 0)
 +              goto error;
 +
        /* probe the filesystem info for this server filesystem */
 -      error = nfs_probe_fsinfo(server, fh, &fattr);
 +      error = nfs_probe_fsinfo(server, mntfh, &fattr);
        if (error < 0)
                goto error;
  
@@@ -1181,7 -1173,7 +1181,7 @@@ static struct seq_operations nfs_server
        .show   = nfs_server_list_show,
  };
  
- static struct file_operations nfs_server_list_fops = {
+ static const struct file_operations nfs_server_list_fops = {
        .open           = nfs_server_list_open,
        .read           = seq_read,
        .llseek         = seq_lseek,
@@@ -1201,7 -1193,7 +1201,7 @@@ static struct seq_operations nfs_volume
        .show   = nfs_volume_list_show,
  };
  
- static struct file_operations nfs_volume_list_fops = {
+ static const struct file_operations nfs_volume_list_fops = {
        .open           = nfs_volume_list_open,
        .read           = seq_read,
        .llseek         = seq_lseek,
diff --combined fs/nfs/dir.c
index 37c1dd642184cdda41da7929afde3a9275ed30ce,f03a770bacb06da6d5404e927e8f714f9d0ba6bf..92d8ec859e224170a20cc24c728b3af582b4c60e
@@@ -65,7 -65,7 +65,7 @@@ const struct file_operations nfs_dir_op
        .fsync          = nfs_fsync_dir,
  };
  
- struct inode_operations nfs_dir_inode_operations = {
const struct inode_operations nfs_dir_inode_operations = {
        .create         = nfs_create,
        .lookup         = nfs_lookup,
        .link           = nfs_link,
@@@ -81,7 -81,7 +81,7 @@@
  };
  
  #ifdef CONFIG_NFS_V3
- struct inode_operations nfs3_dir_inode_operations = {
const struct inode_operations nfs3_dir_inode_operations = {
        .create         = nfs_create,
        .lookup         = nfs_lookup,
        .link           = nfs_link,
  #ifdef CONFIG_NFS_V4
  
  static struct dentry *nfs_atomic_lookup(struct inode *, struct dentry *, struct nameidata *);
- struct inode_operations nfs4_dir_inode_operations = {
const struct inode_operations nfs4_dir_inode_operations = {
        .create         = nfs_create,
        .lookup         = nfs_atomic_lookup,
        .link           = nfs_link,
@@@ -637,7 -637,7 +637,7 @@@ int nfs_fsync_dir(struct file *filp, st
   * In the case it has, we assume that the dentries are untrustworthy
   * and may need to be looked up again.
   */
 -static inline int nfs_check_verifier(struct inode *dir, struct dentry *dentry)
 +static int nfs_check_verifier(struct inode *dir, struct dentry *dentry)
  {
        if (IS_ROOT(dentry))
                return 1;
@@@ -652,12 -652,6 +652,12 @@@ static inline void nfs_set_verifier(str
        dentry->d_fsdata = (void *)verf;
  }
  
 +static void nfs_refresh_verifier(struct dentry * dentry, unsigned long verf)
 +{
 +      if (time_after(verf, (unsigned long)dentry->d_fsdata))
 +              nfs_set_verifier(dentry, verf);
 +}
 +
  /*
   * Whenever an NFS operation succeeds, we know that the dentry
   * is valid, so we update the revalidation timestamp.
@@@ -791,7 -785,7 +791,7 @@@ static int nfs_lookup_revalidate(struc
                goto out_bad;
  
        nfs_renew_times(dentry);
 -      nfs_set_verifier(dentry, verifier);
 +      nfs_refresh_verifier(dentry, verifier);
   out_valid:
        unlock_kernel();
        dput(parent);
@@@ -1091,7 -1085,7 +1091,7 @@@ static int nfs_open_revalidate(struct d
        verifier = nfs_save_change_attribute(dir);
        ret = nfs4_open_revalidate(dir, dentry, openflags, nd);
        if (!ret)
 -              nfs_set_verifier(dentry, verifier);
 +              nfs_refresh_verifier(dentry, verifier);
        unlock_kernel();
  out:
        dput(parent);
@@@ -1129,21 -1123,8 +1129,21 @@@ static struct dentry *nfs_readdir_looku
        }
        name.hash = full_name_hash(name.name, name.len);
        dentry = d_lookup(parent, &name);
 -      if (dentry != NULL)
 -              return dentry;
 +      if (dentry != NULL) {
 +              /* Is this a positive dentry that matches the readdir info? */
 +              if (dentry->d_inode != NULL &&
 +                              (NFS_FILEID(dentry->d_inode) == entry->ino ||
 +                              d_mountpoint(dentry))) {
 +                      if (!desc->plus || entry->fh->size == 0)
 +                              return dentry;
 +                      if (nfs_compare_fh(NFS_FH(dentry->d_inode),
 +                                              entry->fh) == 0)
 +                              goto out_renew;
 +              }
 +              /* No, so d_drop to allow one to be created */
 +              d_drop(dentry);
 +              dput(dentry);
 +      }
        if (!desc->plus || !(entry->fattr->valid & NFS_ATTR_FATTR))
                return NULL;
        /* Note: caller is already holding the dir->i_mutex! */
        nfs_renew_times(dentry);
        nfs_set_verifier(dentry, nfs_save_change_attribute(dir));
        return dentry;
 +out_renew:
 +      nfs_renew_times(dentry);
 +      nfs_refresh_verifier(dentry, nfs_save_change_attribute(dir));
 +      return dentry;
  }
  
  /*
@@@ -1466,8 -1443,6 +1466,8 @@@ static int nfs_unlink(struct inode *dir
        if (atomic_read(&dentry->d_count) > 1) {
                spin_unlock(&dentry->d_lock);
                spin_unlock(&dcache_lock);
 +              /* Start asynchronous writeout of the inode */
 +              write_inode_now(dentry->d_inode, 0);
                error = nfs_sillyrename(dir, dentry);
                unlock_kernel();
                return error;
@@@ -1709,7 -1684,7 +1709,7 @@@ out
        if (!error) {
                d_move(old_dentry, new_dentry);
                nfs_renew_times(new_dentry);
 -              nfs_set_verifier(new_dentry, nfs_save_change_attribute(new_dir));
 +              nfs_refresh_verifier(new_dentry, nfs_save_change_attribute(new_dir));
        }
  
        /* new dentry created? */
diff --combined fs/nfs/nfs4_fs.h
index f2c88ffe41e0a95390492ca3d4383152718cee6b,e2341766c4f04b4cc388086b8f5dd6ea25fa3cc0..cf3a17eb5c09e0ec5e88e97fd078ab872b092457
@@@ -151,7 -151,7 +151,7 @@@ struct nfs4_state_recovery_ops 
  };
  
  extern struct dentry_operations nfs4_dentry_operations;
- extern struct inode_operations nfs4_dir_inode_operations;
+ extern const struct inode_operations nfs4_dir_inode_operations;
  
  /* inode.c */
  extern ssize_t nfs4_getxattr(struct dentry *, const char *, void *, size_t);
@@@ -169,7 -169,7 +169,7 @@@ extern int nfs4_do_close(struct inode *
  extern struct dentry *nfs4_atomic_open(struct inode *, struct dentry *, struct nameidata *);
  extern int nfs4_open_revalidate(struct inode *, struct dentry *, int, struct nameidata *);
  extern int nfs4_server_capabilities(struct nfs_server *server, struct nfs_fh *fhandle);
 -extern int nfs4_proc_fs_locations(struct inode *dir, struct dentry *dentry,
 +extern int nfs4_proc_fs_locations(struct inode *dir, struct qstr *name,
                struct nfs4_fs_locations *fs_locations, struct page *page);
  
  extern struct nfs4_state_recovery_ops nfs4_reboot_recovery_ops;
diff --combined fs/nfs/nfs4proc.c
index 1712d0360ee6fbaf44d98c73fc5634cafab5b45f,1daee65b517e86d66f771aba7badb94517cb575e..f52cf5c33c6c83adcde94ed37202adaf3a0d969f
@@@ -1140,6 -1140,7 +1140,6 @@@ static void nfs4_close_done(struct rpc_
                        break;
                case -NFS4ERR_STALE_STATEID:
                case -NFS4ERR_EXPIRED:
 -                      nfs4_schedule_state_recovery(server->nfs_client);
                        break;
                default:
                        if (nfs4_async_handle_error(task, server) == -EAGAIN) {
@@@ -1423,6 -1424,7 +1423,6 @@@ static int nfs4_get_referral(struct ino
        int status = -ENOMEM;
        struct page *page = NULL;
        struct nfs4_fs_locations *locations = NULL;
 -      struct dentry dentry = {};
  
        page = alloc_page(GFP_KERNEL);
        if (page == NULL)
        if (locations == NULL)
                goto out;
  
 -      dentry.d_name.name = name->name;
 -      dentry.d_name.len = name->len;
 -      status = nfs4_proc_fs_locations(dir, &dentry, locations, page);
 +      status = nfs4_proc_fs_locations(dir, name, locations, page);
        if (status != 0)
                goto out;
        /* Make sure server returned a different fsid for the referral */
@@@ -1733,6 -1737,44 +1733,6 @@@ static int nfs4_proc_readlink(struct in
        return err;
  }
  
 -static int _nfs4_proc_read(struct nfs_read_data *rdata)
 -{
 -      int flags = rdata->flags;
 -      struct inode *inode = rdata->inode;
 -      struct nfs_fattr *fattr = rdata->res.fattr;
 -      struct nfs_server *server = NFS_SERVER(inode);
 -      struct rpc_message msg = {
 -              .rpc_proc       = &nfs4_procedures[NFSPROC4_CLNT_READ],
 -              .rpc_argp       = &rdata->args,
 -              .rpc_resp       = &rdata->res,
 -              .rpc_cred       = rdata->cred,
 -      };
 -      unsigned long timestamp = jiffies;
 -      int status;
 -
 -      dprintk("NFS call  read %d @ %Ld\n", rdata->args.count,
 -                      (long long) rdata->args.offset);
 -
 -      nfs_fattr_init(fattr);
 -      status = rpc_call_sync(server->client, &msg, flags);
 -      if (!status)
 -              renew_lease(server, timestamp);
 -      dprintk("NFS reply read: %d\n", status);
 -      return status;
 -}
 -
 -static int nfs4_proc_read(struct nfs_read_data *rdata)
 -{
 -      struct nfs4_exception exception = { };
 -      int err;
 -      do {
 -              err = nfs4_handle_exception(NFS_SERVER(rdata->inode),
 -                              _nfs4_proc_read(rdata),
 -                              &exception);
 -      } while (exception.retry);
 -      return err;
 -}
 -
  /*
   * Got race?
   * We will need to arrange for the VFS layer to provide an atomic open.
@@@ -2711,15 -2753,11 +2711,15 @@@ static int nfs4_wait_clnt_recover(struc
  
        might_sleep();
  
 +      rwsem_acquire(&clp->cl_sem.dep_map, 0, 0, _RET_IP_);
 +
        rpc_clnt_sigmask(clnt, &oldset);
        res = wait_on_bit(&clp->cl_state, NFS4CLNT_STATE_RECOVER,
                        nfs4_wait_bit_interruptible,
                        TASK_INTERRUPTIBLE);
        rpc_clnt_sigunmask(clnt, &oldset);
 +
 +      rwsem_release(&clp->cl_sem.dep_map, 1, _RET_IP_);
        return res;
  }
  
@@@ -2958,6 -2996,7 +2958,6 @@@ int nfs4_proc_delegreturn(struct inode 
                switch (err) {
                        case -NFS4ERR_STALE_STATEID:
                        case -NFS4ERR_EXPIRED:
 -                              nfs4_schedule_state_recovery(server->nfs_client);
                        case 0:
                                return 0;
                }
@@@ -3111,10 -3150,12 +3111,10 @@@ static void nfs4_locku_done(struct rpc_
                        break;
                case -NFS4ERR_STALE_STATEID:
                case -NFS4ERR_EXPIRED:
 -                      nfs4_schedule_state_recovery(calldata->server->nfs_client);
                        break;
                default:
 -                      if (nfs4_async_handle_error(task, calldata->server) == -EAGAIN) {
 +                      if (nfs4_async_handle_error(task, calldata->server) == -EAGAIN)
                                rpc_restart_call(task);
 -                      }
        }
  }
  
@@@ -3544,7 -3585,7 +3544,7 @@@ ssize_t nfs4_listxattr(struct dentry *d
        return len;
  }
  
 -int nfs4_proc_fs_locations(struct inode *dir, struct dentry *dentry,
 +int nfs4_proc_fs_locations(struct inode *dir, struct qstr *name,
                struct nfs4_fs_locations *fs_locations, struct page *page)
  {
        struct nfs_server *server = NFS_SERVER(dir);
        };
        struct nfs4_fs_locations_arg args = {
                .dir_fh = NFS_FH(dir),
 -              .name = &dentry->d_name,
 +              .name = name,
                .page = page,
                .bitmask = bitmask,
        };
        int status;
  
        dprintk("%s: start\n", __FUNCTION__);
 -      fs_locations->fattr.valid = 0;
 +      nfs_fattr_init(&fs_locations->fattr);
        fs_locations->server = server;
        fs_locations->nlocations = 0;
        status = rpc_call_sync(server->client, &msg, 0);
@@@ -3584,7 -3625,7 +3584,7 @@@ struct nfs4_state_recovery_ops nfs4_net
        .recover_lock   = nfs4_lock_expired,
  };
  
- static struct inode_operations nfs4_file_inode_operations = {
+ static const struct inode_operations nfs4_file_inode_operations = {
        .permission     = nfs_permission,
        .getattr        = nfs_getattr,
        .setattr        = nfs_setattr,
@@@ -3605,6 -3646,7 +3605,6 @@@ const struct nfs_rpc_ops nfs_v4_cliento
        .lookup         = nfs4_proc_lookup,
        .access         = nfs4_proc_access,
        .readlink       = nfs4_proc_readlink,
 -      .read           = nfs4_proc_read,
        .create         = nfs4_proc_create,
        .remove         = nfs4_proc_remove,
        .unlink_setup   = nfs4_proc_unlink_setup,
diff --combined fs/nfs/super.c
index 89da0a38c12c6b8a608fb12579b6e71f859faec0,baa28860ad274cd95517e911cd0d1c51da2262ce..bb516a2cfbafa4f50446b4ca5e99e1d8c6303831
@@@ -44,6 -44,7 +44,7 @@@
  #include <linux/vfs.h>
  #include <linux/inet.h>
  #include <linux/nfs_xdr.h>
+ #include <linux/magic.h>
  
  #include <asm/system.h>
  #include <asm/uaccess.h>
@@@ -81,7 -82,7 +82,7 @@@ struct file_system_type nfs_xdev_fs_typ
        .fs_flags       = FS_RENAME_DOES_D_MOVE|FS_REVAL_DOT|FS_BINARY_MOUNTDATA,
  };
  
- static struct super_operations nfs_sops = {
+ static const struct super_operations nfs_sops = {
        .alloc_inode    = nfs_alloc_inode,
        .destroy_inode  = nfs_destroy_inode,
        .write_inode    = nfs_write_inode,
@@@ -125,7 -126,7 +126,7 @@@ struct file_system_type nfs4_referral_f
        .fs_flags       = FS_RENAME_DOES_D_MOVE|FS_REVAL_DOT|FS_BINARY_MOUNTDATA,
  };
  
- static struct super_operations nfs4_sops = {
+ static const struct super_operations nfs4_sops = {
        .alloc_inode    = nfs_alloc_inode,
        .destroy_inode  = nfs_destroy_inode,
        .write_inode    = nfs_write_inode,
@@@ -1044,7 -1045,7 +1045,7 @@@ static int nfs4_referral_get_sb(struct 
                nfs4_fill_super(s);
        }
  
 -      mntroot = nfs4_get_root(s, data->fh);
 +      mntroot = nfs4_get_root(s, &mntfh);
        if (IS_ERR(mntroot)) {
                error = PTR_ERR(mntroot);
                goto error_splat_super;
diff --combined include/linux/nfs_fs.h
index c0d03767b8c449c2638e706446e7a74e84d06e0f,ed0f2eac8f5028fa3a9dc274a164cb51329d2dd3..47aaa2c66738c5d574b96d9048964e7822227a00
  
  #include <linux/magic.h>
  
 -/*
 - * Enable debugging support for nfs client.
 - * Requires RPC_DEBUG.
 - */
 -#ifdef RPC_DEBUG
 -# define NFS_DEBUG
 -#endif
 -
  /* Default timeout values */
  #define NFS_MAX_UDP_TIMEOUT   (60*HZ)
  #define NFS_MAX_TCP_TIMEOUT   (600*HZ)
@@@ -323,9 -331,9 +323,9 @@@ static inline void nfs_fattr_init(struc
  /*
   * linux/fs/nfs/file.c
   */
- extern struct inode_operations nfs_file_inode_operations;
+ extern const struct inode_operations nfs_file_inode_operations;
  #ifdef CONFIG_NFS_V3
- extern struct inode_operations nfs3_file_inode_operations;
+ extern const struct inode_operations nfs3_file_inode_operations;
  #endif /* CONFIG_NFS_V3 */
  extern const struct file_operations nfs_file_operations;
  extern const struct address_space_operations nfs_file_aops;
@@@ -372,9 -380,9 +372,9 @@@ extern ssize_t nfs_file_direct_write(st
  /*
   * linux/fs/nfs/dir.c
   */
- extern struct inode_operations nfs_dir_inode_operations;
+ extern const struct inode_operations nfs_dir_inode_operations;
  #ifdef CONFIG_NFS_V3
- extern struct inode_operations nfs3_dir_inode_operations;
+ extern const struct inode_operations nfs3_dir_inode_operations;
  #endif /* CONFIG_NFS_V3 */
  extern const struct file_operations nfs_dir_operations;
  extern struct dentry_operations nfs_dentry_operations;
@@@ -384,7 -392,7 +384,7 @@@ extern int nfs_instantiate(struct dentr
  /*
   * linux/fs/nfs/symlink.c
   */
- extern struct inode_operations nfs_symlink_inode_operations;
+ extern const struct inode_operations nfs_symlink_inode_operations;
  
  /*
   * linux/fs/nfs/sysctl.c
@@@ -401,8 -409,8 +401,8 @@@ extern void nfs_unregister_sysctl(void)
   * linux/fs/nfs/namespace.c
   */
  extern struct list_head nfs_automount_list;
- extern struct inode_operations nfs_mountpoint_inode_operations;
- extern struct inode_operations nfs_referral_inode_operations;
+ extern const struct inode_operations nfs_mountpoint_inode_operations;
+ extern const struct inode_operations nfs_referral_inode_operations;
  extern int nfs_mountpoint_expiry_timeout;
  extern void nfs_release_automount_timer(void);
  
@@@ -559,15 -567,6 +559,15 @@@ extern void * nfs_root_data(void)
  #define NFSDBG_ALL            0xFFFF
  
  #ifdef __KERNEL__
 +
 +/*
 + * Enable debugging support for nfs client.
 + * Requires RPC_DEBUG.
 + */
 +#ifdef RPC_DEBUG
 +# define NFS_DEBUG
 +#endif
 +
  # undef ifdebug
  # ifdef NFS_DEBUG
  #  define ifdebug(fac)                if (unlikely(nfs_debug & NFSDBG_##fac))
diff --combined include/linux/nfs_xdr.h
index 115c8120ff13c6abc29b4ba97577aa4469dbb109,30d7116d601e8eb985dd34b478c6838d48e1b568..10c26ed0db7129831d42b109f2aa2bbc222f0286
@@@ -767,8 -767,8 +767,8 @@@ struct nfs_access_entry
  struct nfs_rpc_ops {
        int     version;                /* Protocol version */
        struct dentry_operations *dentry_ops;
-       struct inode_operations *dir_inode_ops;
-       struct inode_operations *file_inode_ops;
+       const struct inode_operations *dir_inode_ops;
+       const struct inode_operations *file_inode_ops;
  
        int     (*getroot) (struct nfs_server *, struct nfs_fh *,
                            struct nfs_fsinfo *);
        int     (*access)  (struct inode *, struct nfs_access_entry *);
        int     (*readlink)(struct inode *, struct page *, unsigned int,
                            unsigned int);
 -      int     (*read)    (struct nfs_read_data *);
        int     (*create)  (struct inode *, struct dentry *,
                            struct iattr *, int, struct nameidata *);
        int     (*remove)  (struct inode *, struct qstr *);
diff --combined net/sunrpc/auth.c
index 5752f294751f50a25f6895dab672f200baf7eaf0,76f7eac4082d4fe17a5b0f3f452fedc1feef85ce..9527f2bb17449ea6808f4fffd5f73feace80442f
@@@ -181,7 -181,7 +181,7 @@@ rpcauth_gc_credcache(struct rpc_auth *a
        struct rpc_cred *cred;
        int             i;
  
 -      dprintk("RPC: gc'ing RPC credentials for auth %p\n", auth);
 +      dprintk("RPC:       gc'ing RPC credentials for auth %p\n", auth);
        for (i = 0; i < RPC_CREDCACHE_NR; i++) {
                hlist_for_each_safe(pos, next, &cache->hashtable[i]) {
                        cred = hlist_entry(pos, struct rpc_cred, cr_hash);
@@@ -213,7 -213,7 +213,7 @@@ retry
                rpcauth_gc_credcache(auth, &free);
        hlist_for_each_safe(pos, next, &cache->hashtable[nr]) {
                struct rpc_cred *entry;
-               entry = hlist_entry(pos, struct rpc_cred, cr_hash);
+               entry = hlist_entry(pos, struct rpc_cred, cr_hash);
                if (entry->cr_ops->crmatch(acred, entry, flags)) {
                        hlist_del(&entry->cr_hash);
                        cred = entry;
@@@ -267,7 -267,7 +267,7 @@@ rpcauth_lookupcred(struct rpc_auth *aut
        };
        struct rpc_cred *ret;
  
 -      dprintk("RPC:     looking up %s cred\n",
 +      dprintk("RPC:       looking up %s cred\n",
                auth->au_ops->au_name);
        get_group_info(acred.group_info);
        ret = auth->au_ops->lookup_cred(auth, &acred, flags);
@@@ -287,7 -287,7 +287,7 @@@ rpcauth_bindcred(struct rpc_task *task
        struct rpc_cred *ret;
        int flags = 0;
  
 -      dprintk("RPC: %4d looking up %s cred\n",
 +      dprintk("RPC: %5u looking up %s cred\n",
                task->tk_pid, task->tk_auth->au_ops->au_name);
        get_group_info(acred.group_info);
        if (task->tk_flags & RPC_TASK_ROOTCREDS)
  void
  rpcauth_holdcred(struct rpc_task *task)
  {
 -      dprintk("RPC: %4d holding %s cred %p\n",
 -              task->tk_pid, task->tk_auth->au_ops->au_name, task->tk_msg.rpc_cred);
 +      dprintk("RPC: %5u holding %s cred %p\n",
 +              task->tk_pid, task->tk_auth->au_ops->au_name,
 +              task->tk_msg.rpc_cred);
        if (task->tk_msg.rpc_cred)
                get_rpccred(task->tk_msg.rpc_cred);
  }
@@@ -325,7 -324,7 +325,7 @@@ rpcauth_unbindcred(struct rpc_task *tas
  {
        struct rpc_cred *cred = task->tk_msg.rpc_cred;
  
 -      dprintk("RPC: %4d releasing %s cred %p\n",
 +      dprintk("RPC: %5u releasing %s cred %p\n",
                task->tk_pid, task->tk_auth->au_ops->au_name, cred);
  
        put_rpccred(cred);
@@@ -337,7 -336,7 +337,7 @@@ rpcauth_marshcred(struct rpc_task *task
  {
        struct rpc_cred *cred = task->tk_msg.rpc_cred;
  
 -      dprintk("RPC: %4d marshaling %s cred %p\n",
 +      dprintk("RPC: %5u marshaling %s cred %p\n",
                task->tk_pid, task->tk_auth->au_ops->au_name, cred);
  
        return cred->cr_ops->crmarshal(task, p);
@@@ -348,7 -347,7 +348,7 @@@ rpcauth_checkverf(struct rpc_task *task
  {
        struct rpc_cred *cred = task->tk_msg.rpc_cred;
  
 -      dprintk("RPC: %4d validating %s cred %p\n",
 +      dprintk("RPC: %5u validating %s cred %p\n",
                task->tk_pid, task->tk_auth->au_ops->au_name, cred);
  
        return cred->cr_ops->crvalidate(task, p);
@@@ -360,7 -359,7 +360,7 @@@ rpcauth_wrap_req(struct rpc_task *task
  {
        struct rpc_cred *cred = task->tk_msg.rpc_cred;
  
 -      dprintk("RPC: %4d using %s cred %p to wrap rpc data\n",
 +      dprintk("RPC: %5u using %s cred %p to wrap rpc data\n",
                        task->tk_pid, cred->cr_ops->cr_name, cred);
        if (cred->cr_ops->crwrap_req)
                return cred->cr_ops->crwrap_req(task, encode, rqstp, data, obj);
@@@ -374,7 -373,7 +374,7 @@@ rpcauth_unwrap_resp(struct rpc_task *ta
  {
        struct rpc_cred *cred = task->tk_msg.rpc_cred;
  
 -      dprintk("RPC: %4d using %s cred %p to unwrap rpc data\n",
 +      dprintk("RPC: %5u using %s cred %p to unwrap rpc data\n",
                        task->tk_pid, cred->cr_ops->cr_name, cred);
        if (cred->cr_ops->crunwrap_resp)
                return cred->cr_ops->crunwrap_resp(task, decode, rqstp,
@@@ -389,7 -388,7 +389,7 @@@ rpcauth_refreshcred(struct rpc_task *ta
        struct rpc_cred *cred = task->tk_msg.rpc_cred;
        int err;
  
 -      dprintk("RPC: %4d refreshing %s cred %p\n",
 +      dprintk("RPC: %5u refreshing %s cred %p\n",
                task->tk_pid, task->tk_auth->au_ops->au_name, cred);
  
        err = cred->cr_ops->crrefresh(task);
  void
  rpcauth_invalcred(struct rpc_task *task)
  {
 -      dprintk("RPC: %4d invalidating %s cred %p\n",
 +      dprintk("RPC: %5u invalidating %s cred %p\n",
                task->tk_pid, task->tk_auth->au_ops->au_name, task->tk_msg.rpc_cred);
        spin_lock(&rpc_credcache_lock);
        if (task->tk_msg.rpc_cred)
index 2fe8e91f5bc16de2671203c0e1a5f52e81aa9070,718fb94ad0f7025af40e6612771970f65e11da6b..4e4ccc5b6fea905131bab2cc6d1a7dd39fd14b97
@@@ -2,7 -2,7 +2,7 @@@
   * linux/net/sunrpc/auth_gss/auth_gss.c
   *
   * RPCSEC_GSS client authentication.
-  * 
+  *
   *  Copyright (c) 2000 The Regents of the University of Michigan.
   *  All rights reserved.
   *
@@@ -74,7 -74,7 +74,7 @@@ static struct rpc_credops gss_credops
  * as it is passed to gssd to signal the use of
  * machine creds should be part of the shared rpc interface */
  
- #define CA_RUN_AS_MACHINE  0x00000200 
+ #define CA_RUN_AS_MACHINE  0x00000200
  
  /* dump the buffer in `emacs-hexl' style */
  #define isprint(c)      ((c > 0x1f) && (c < 0x7f))
@@@ -241,7 -241,7 +241,7 @@@ gss_fill_context(const void *p, const v
        }
        return q;
  err:
 -      dprintk("RPC:      gss_fill_context returning %ld\n", -PTR_ERR(p));
 +      dprintk("RPC:       gss_fill_context returning %ld\n", -PTR_ERR(p));
        return p;
  }
  
@@@ -276,10 -276,10 +276,10 @@@ __gss_find_upcall(struct gss_auth *gss_
                if (pos->uid != uid)
                        continue;
                atomic_inc(&pos->count);
 -              dprintk("RPC:      gss_find_upcall found msg %p\n", pos);
 +              dprintk("RPC:       gss_find_upcall found msg %p\n", pos);
                return pos;
        }
 -      dprintk("RPC:      gss_find_upcall found nothing\n");
 +      dprintk("RPC:       gss_find_upcall found nothing\n");
        return NULL;
  }
  
@@@ -393,8 -393,7 +393,8 @@@ gss_refresh_upcall(struct rpc_task *tas
        struct gss_upcall_msg *gss_msg;
        int err = 0;
  
 -      dprintk("RPC: %4u gss_refresh_upcall for uid %u\n", task->tk_pid, cred->cr_uid);
 +      dprintk("RPC: %5u gss_refresh_upcall for uid %u\n", task->tk_pid,
 +                                                              cred->cr_uid);
        gss_msg = gss_setup_upcall(task->tk_client, gss_auth, cred);
        if (IS_ERR(gss_msg)) {
                err = PTR_ERR(gss_msg);
        spin_unlock(&gss_auth->lock);
        gss_release_msg(gss_msg);
  out:
 -      dprintk("RPC: %4u gss_refresh_upcall for uid %u result %d\n", task->tk_pid,
 -                      cred->cr_uid, err);
 +      dprintk("RPC: %5u gss_refresh_upcall for uid %u result %d\n",
 +                      task->tk_pid, cred->cr_uid, err);
        return err;
  }
  
@@@ -427,7 -426,7 +427,7 @@@ gss_create_upcall(struct gss_auth *gss_
        DEFINE_WAIT(wait);
        int err = 0;
  
 -      dprintk("RPC: gss_upcall for uid %u\n", cred->cr_uid);
 +      dprintk("RPC:       gss_upcall for uid %u\n", cred->cr_uid);
        gss_msg = gss_setup_upcall(gss_auth->client, gss_auth, cred);
        if (IS_ERR(gss_msg)) {
                err = PTR_ERR(gss_msg);
@@@ -455,8 -454,7 +455,8 @@@ out_intr
        finish_wait(&gss_msg->waitqueue, &wait);
        gss_release_msg(gss_msg);
  out:
 -      dprintk("RPC: gss_create_upcall for uid %u result %d\n", cred->cr_uid, err);
 +      dprintk("RPC:       gss_create_upcall for uid %u result %d\n",
 +                      cred->cr_uid, err);
        return err;
  }
  
@@@ -548,14 -546,14 +548,14 @@@ gss_pipe_downcall(struct file *filp, co
        }
        gss_put_ctx(ctx);
        kfree(buf);
 -      dprintk("RPC:      gss_pipe_downcall returning length %Zu\n", mlen);
 +      dprintk("RPC:       gss_pipe_downcall returning length %Zu\n", mlen);
        return mlen;
  err_put_ctx:
        gss_put_ctx(ctx);
  err:
        kfree(buf);
  out:
 -      dprintk("RPC:      gss_pipe_downcall returning %d\n", err);
 +      dprintk("RPC:       gss_pipe_downcall returning %d\n", err);
        return err;
  }
  
@@@ -593,7 -591,7 +593,7 @@@ gss_pipe_destroy_msg(struct rpc_pipe_ms
        static unsigned long ratelimit;
  
        if (msg->errno < 0) {
 -              dprintk("RPC:      gss_pipe_destroy_msg releasing msg %p\n",
 +              dprintk("RPC:       gss_pipe_destroy_msg releasing msg %p\n",
                                gss_msg);
                atomic_inc(&gss_msg->count);
                gss_unhash_msg(gss_msg);
        }
  }
  
- /* 
-  * NOTE: we have the opportunity to use different 
+ /*
+  * NOTE: we have the opportunity to use different
   * parameters based on the input flavor (which must be a pseudoflavor)
   */
  static struct rpc_auth *
@@@ -620,7 -618,7 +620,7 @@@ gss_create(struct rpc_clnt *clnt, rpc_a
        struct rpc_auth * auth;
        int err = -ENOMEM; /* XXX? */
  
 -      dprintk("RPC:      creating GSS authenticator for client %p\n",clnt);
 +      dprintk("RPC:       creating GSS authenticator for client %p\n", clnt);
  
        if (!try_module_get(THIS_MODULE))
                return ERR_PTR(err);
@@@ -672,8 -670,8 +672,8 @@@ gss_destroy(struct rpc_auth *auth
  {
        struct gss_auth *gss_auth;
  
 -      dprintk("RPC:      destroying GSS authenticator %p flavor %d\n",
 -              auth, auth->au_flavor);
 +      dprintk("RPC:       destroying GSS authenticator %p flavor %d\n",
 +                      auth, auth->au_flavor);
  
        gss_auth = container_of(auth, struct gss_auth, rpc_auth);
        rpc_unlink(gss_auth->dentry);
  static void
  gss_destroy_ctx(struct gss_cl_ctx *ctx)
  {
 -      dprintk("RPC:      gss_destroy_ctx\n");
 +      dprintk("RPC:       gss_destroy_ctx\n");
  
        if (ctx->gc_gss_ctx)
                gss_delete_sec_context(&ctx->gc_gss_ctx);
@@@ -705,7 -703,7 +705,7 @@@ gss_destroy_cred(struct rpc_cred *rc
  {
        struct gss_cred *cred = container_of(rc, struct gss_cred, gc_base);
  
 -      dprintk("RPC:      gss_destroy_cred \n");
 +      dprintk("RPC:       gss_destroy_cred \n");
  
        if (cred->gc_ctx)
                gss_put_ctx(cred->gc_ctx);
@@@ -728,7 -726,7 +728,7 @@@ gss_create_cred(struct rpc_auth *auth, 
        struct gss_cred *cred = NULL;
        int err = -ENOMEM;
  
 -      dprintk("RPC:      gss_create_cred for uid %d, flavor %d\n",
 +      dprintk("RPC:       gss_create_cred for uid %d, flavor %d\n",
                acred->uid, auth->au_flavor);
  
        if (!(cred = kzalloc(sizeof(*cred), GFP_KERNEL)))
        return &cred->gc_base;
  
  out_err:
 -      dprintk("RPC:      gss_create_cred failed with error %d\n", err);
 +      dprintk("RPC:       gss_create_cred failed with error %d\n", err);
        return ERR_PTR(err);
  }
  
@@@ -801,7 -799,7 +801,7 @@@ gss_marshal(struct rpc_task *task, __be
        struct kvec     iov;
        struct xdr_buf  verf_buf;
  
 -      dprintk("RPC: %4u gss_marshal\n", task->tk_pid);
 +      dprintk("RPC: %5u gss_marshal\n", task->tk_pid);
  
        *p++ = htonl(RPC_AUTH_GSS);
        cred_len = p++;
@@@ -867,11 -865,11 +867,11 @@@ gss_validate(struct rpc_task *task, __b
        u32             flav,len;
        u32             maj_stat;
  
 -      dprintk("RPC: %4u gss_validate\n", task->tk_pid);
 +      dprintk("RPC: %5u gss_validate\n", task->tk_pid);
  
        flav = ntohl(*p++);
        if ((len = ntohl(*p++)) > RPC_MAX_AUTH_SIZE)
-                 goto out_bad;
+               goto out_bad;
        if (flav != RPC_AUTH_GSS)
                goto out_bad;
        seq = htonl(task->tk_rqstp->rq_seqno);
         * calculate the length of the verifier: */
        task->tk_auth->au_verfsize = XDR_QUADLEN(len) + 2;
        gss_put_ctx(ctx);
 -      dprintk("RPC: %4u GSS gss_validate: gss_verify_mic succeeded.\n",
 +      dprintk("RPC: %5u gss_validate: gss_verify_mic succeeded.\n",
                        task->tk_pid);
        return p + XDR_QUADLEN(len);
  out_bad:
        gss_put_ctx(ctx);
 -      dprintk("RPC: %4u gss_validate failed.\n", task->tk_pid);
 +      dprintk("RPC: %5u gss_validate failed.\n", task->tk_pid);
        return NULL;
  }
  
@@@ -927,7 -925,7 +927,7 @@@ gss_wrap_req_integ(struct rpc_cred *cre
        *integ_len = htonl(integ_buf.len);
  
        /* guess whether we're in the head or the tail: */
-       if (snd_buf->page_len || snd_buf->tail[0].iov_len) 
+       if (snd_buf->page_len || snd_buf->tail[0].iov_len)
                iov = snd_buf->tail;
        else
                iov = snd_buf->head;
@@@ -1032,7 -1030,7 +1032,7 @@@ gss_wrap_req_priv(struct rpc_cred *cred
        maj_stat = gss_wrap(ctx->gc_gss_ctx, offset, snd_buf, inpages);
        /* RPC_SLACK_SPACE should prevent this ever happening: */
        BUG_ON(snd_buf->len > snd_buf->buflen);
-         status = -EIO;
+       status = -EIO;
        /* We're assuming that when GSS_S_CONTEXT_EXPIRED, the encryption was
         * done anyway, so it's safe to put the request on the wire: */
        if (maj_stat == GSS_S_CONTEXT_EXPIRED)
@@@ -1065,7 -1063,7 +1065,7 @@@ gss_wrap_req(struct rpc_task *task
        struct gss_cl_ctx *ctx = gss_cred_get_ctx(cred);
        int             status = -EIO;
  
 -      dprintk("RPC: %4u gss_wrap_req\n", task->tk_pid);
 +      dprintk("RPC: %5u gss_wrap_req\n", task->tk_pid);
        if (ctx->gc_proc != RPC_GSS_PROC_DATA) {
                /* The spec seems a little ambiguous here, but I think that not
                 * wrapping context destruction requests makes the most sense.
                        status = gss_wrap_req_integ(cred, ctx, encode,
                                                                rqstp, p, obj);
                        break;
-                       case RPC_GSS_SVC_PRIVACY:
+               case RPC_GSS_SVC_PRIVACY:
                        status = gss_wrap_req_priv(cred, ctx, encode,
                                        rqstp, p, obj);
                        break;
        }
  out:
        gss_put_ctx(ctx);
 -      dprintk("RPC: %4u gss_wrap_req returning %d\n", task->tk_pid, status);
 +      dprintk("RPC: %5u gss_wrap_req returning %d\n", task->tk_pid, status);
        return status;
  }
  
@@@ -1181,7 -1179,7 +1181,7 @@@ gss_unwrap_resp(struct rpc_task *task
                        if (status)
                                goto out;
                        break;
-                       case RPC_GSS_SVC_PRIVACY:
+               case RPC_GSS_SVC_PRIVACY:
                        status = gss_unwrap_resp_priv(cred, ctx, rqstp, &p);
                        if (status)
                                goto out;
@@@ -1194,11 -1192,11 +1194,11 @@@ out_decode
        status = decode(rqstp, p, obj);
  out:
        gss_put_ctx(ctx);
 -      dprintk("RPC: %4u gss_unwrap_resp returning %d\n", task->tk_pid,
 +      dprintk("RPC: %5u gss_unwrap_resp returning %d\n", task->tk_pid,
                        status);
        return status;
  }
-   
  static struct rpc_authops authgss_ops = {
        .owner          = THIS_MODULE,
        .au_flavor      = RPC_AUTH_GSS,
index cd64efd5921e3f08531e75355d52d72944f996dc,0a9948de0992f584d5e4c2a7f9ee8341a4cc9d08..f441aa0b26dcebb879daea6b2c3e42eccd0584bb
@@@ -58,7 -58,7 +58,7 @@@ krb5_encrypt
        int length)
  {
        u32 ret = -EINVAL;
-         struct scatterlist sg[1];
+       struct scatterlist sg[1];
        u8 local_iv[16] = {0};
        struct blkcipher_desc desc = { .tfm = tfm, .info = local_iv };
  
@@@ -66,8 -66,8 +66,8 @@@
                goto out;
  
        if (crypto_blkcipher_ivsize(tfm) > 16) {
 -              dprintk("RPC:      gss_k5encrypt: tfm iv size to large %d\n",
 -                       crypto_blkcipher_ivsize(tfm));
 +              dprintk("RPC:       gss_k5encrypt: tfm iv size to large %d\n",
 +                       crypto_blkcipher_ivsize(tfm));
                goto out;
        }
  
@@@ -79,7 -79,7 +79,7 @@@
  
        ret = crypto_blkcipher_encrypt_iv(&desc, sg, sg, length);
  out:
 -      dprintk("RPC:      krb5_encrypt returns %d\n",ret);
 +      dprintk("RPC:       krb5_encrypt returns %d\n", ret);
        return ret;
  }
  
@@@ -102,7 -102,7 +102,7 @@@ krb5_decrypt
                goto out;
  
        if (crypto_blkcipher_ivsize(tfm) > 16) {
 -              dprintk("RPC:      gss_k5decrypt: tfm iv size to large %d\n",
 +              dprintk("RPC:       gss_k5decrypt: tfm iv size to large %d\n",
                        crypto_blkcipher_ivsize(tfm));
                goto out;
        }
  
        ret = crypto_blkcipher_decrypt_iv(&desc, sg, sg, length);
  out:
 -      dprintk("RPC:      gss_k5decrypt returns %d\n",ret);
 +      dprintk("RPC:       gss_k5decrypt returns %d\n",ret);
        return ret;
  }
  
index 2f0b1125701681cedd46453db0a5e60fc44d7f69,3e315a68efaa4f9c137836ece35e5f6c500016f7..43f3421f1e6a829f640fe4b4ba7874638c86f9bd
@@@ -11,7 -11,7 +11,7 @@@
  
  /*
   * Copyright 1993 by OpenVision Technologies, Inc.
-  * 
+  *
   * Permission to use, copy, modify, distribute, and sell this software
   * and its documentation for any purpose is hereby granted without fee,
   * provided that the above copyright notice appears in all copies and
@@@ -21,7 -21,7 +21,7 @@@
   * without specific, written prior permission. OpenVision makes no
   * representations about the suitability of this software for any
   * purpose.  It is provided "as is" without express or implied warranty.
-  * 
+  *
   * OPENVISION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
   * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
   * EVENT SHALL OPENVISION BE LIABLE FOR ANY SPECIAL, INDIRECT OR
@@@ -70,7 -70,7 +70,7 @@@ krb5_get_seq_num(struct crypto_blkciphe
        s32 code;
        unsigned char plain[8];
  
 -      dprintk("RPC:      krb5_get_seq_num:\n");
 +      dprintk("RPC:       krb5_get_seq_num:\n");
  
        if ((code = krb5_decrypt(key, cksum, buf, plain, 8)))
                return code;
index c7681db96fb7172d8b1889081ad294c097d7cc55,3423890e4a30718eed9f00780f5752188d0186f1..26872517ccf3c4efc861d190841bcb49d10eb99e
@@@ -6,14 -6,14 +6,14 @@@
   *
   *  J. Bruce Fields   <bfields@umich.edu>
   *
-  *  Redistribution and use in source and binary forms, with or without 
+  *  Redistribution and use in source and binary forms, with or without
   *  modification, are permitted provided that the following conditions
   *  are met:
   *
   *  1. Redistributions of source code must retain the above copyright
   *     notice, this list of conditions and the following disclaimer.
   *  2. Redistributions in binary form must reproduce the above copyright
-  *     notice, this list of conditions and the following disclaimer in the 
+  *     notice, this list of conditions and the following disclaimer in the
   *     documentation and/or other materials provided with the distribution.
   *  3. Neither the name of the University nor the names of its
   *     contributors may be used to endorse or promote products derived
@@@ -113,7 -113,7 +113,7 @@@ gss_mech_register(struct gss_api_mech *
        spin_lock(&registered_mechs_lock);
        list_add(&gm->gm_list, &registered_mechs);
        spin_unlock(&registered_mechs_lock);
 -      dprintk("RPC:      registered gss mechanism %s\n", gm->gm_name);
 +      dprintk("RPC:       registered gss mechanism %s\n", gm->gm_name);
        return 0;
  }
  
@@@ -125,7 -125,7 +125,7 @@@ gss_mech_unregister(struct gss_api_mec
        spin_lock(&registered_mechs_lock);
        list_del(&gm->gm_list);
        spin_unlock(&registered_mechs_lock);
 -      dprintk("RPC:      unregistered gss mechanism %s\n", gm->gm_name);
 +      dprintk("RPC:       unregistered gss mechanism %s\n", gm->gm_name);
        gss_mech_free(gm);
  }
  
@@@ -298,7 -298,7 +298,7 @@@ gss_unwrap(struct gss_ctx  *ctx_id
  u32
  gss_delete_sec_context(struct gss_ctx **context_handle)
  {
 -      dprintk("RPC:      gss_delete_sec_context deleting %p\n",
 +      dprintk("RPC:       gss_delete_sec_context deleting %p\n",
                        *context_handle);
  
        if (!*context_handle)
index 156413ae6cafc675fa30b99488ba4424689c19a5,8400b621971e2466a14e8339b9559a8241912226..6cdd241ad267f7631f8a349aece2f91686fc230e
@@@ -59,7 -59,7 +59,7 @@@ asn1_bitstring_len(struct xdr_netobj *i
  
        /* count trailing 0's */
        for(i = in->len; i > 0; i--) {
-               if (*ptr == 0) { 
+               if (*ptr == 0) {
                        ptr--;
                        elen--;
                } else
@@@ -82,7 -82,7 +82,7 @@@
  
  /*
   * decode_asn1_bitstring()
-  * 
+  *
   * decode a bitstring into a buffer of the expected length.
   * enclen = bit string length
   * explen = expected length (define in rfc)
@@@ -97,9 -97,9 +97,9 @@@ decode_asn1_bitstring(struct xdr_netob
        return 1;
  }
  
- /* 
+ /*
   * SPKMInnerContextToken choice SPKM_MIC asn1 token layout
-  * 
+  *
   * contextid is always 16 bytes plain data. max asn1 bitstring len = 17.
   *
   * tokenlen = pos[0] to end of token (max pos[45] with MD5 cksum)
   * pos  value
   * ----------
   * [0]        a4  SPKM-MIC tag
-  * [1]        ??  innertoken length  (max 44) 
-  * 
-  * 
-  * tok_hdr piece of checksum data starts here 
+  * [1]        ??  innertoken length  (max 44)
+  *
+  *
+  * tok_hdr piece of checksum data starts here
   *
-  * the maximum mic-header len = 9 + 17 = 26 
+  * the maximum mic-header len = 9 + 17 = 26
   *    mic-header
   *    ----------
-  * [2]        30      SEQUENCE tag  
-  * [3]        ??      mic-header length: (max 23) = TokenID + ContextID 
+  * [2]        30      SEQUENCE tag
+  * [3]        ??      mic-header length: (max 23) = TokenID + ContextID
   *
   *            TokenID  - all fields constant and can be hardcoded
   *            -------
   * [4]          02    Type 2
-  * [5]          02    Length 2 
+  * [5]          02    Length 2
   * [6][7] 01 01       TokenID (SPKM_MIC_TOK)
   *
   *            ContextID  - encoded length not constant, calculated
   * [10]       ??      ctxzbit
   * [11]               contextid
   *
-  * mic_header piece of checksum data ends here. 
+  * mic_header piece of checksum data ends here.
   *
   *    int-cksum - encoded length not constant, calculated
   *    ---------
   * [??]       03      Type 3
-  * [??]       ??      encoded length 
-  * [??]       ??      md5zbit         
+  * [??]       ??      encoded length
+  * [??]       ??      md5zbit
   * [??]               int-cksum (NID_md5 = 16)
   *
-  * maximum SPKM-MIC innercontext token length = 
-  *     10 + encoded contextid_size(17 max) + 2 + encoded  
+  * maximum SPKM-MIC innercontext token length =
+  *     10 + encoded contextid_size(17 max) + 2 + encoded
   *       cksum_size (17 maxfor NID_md5) = 46
   */
  
@@@ -178,8 -178,8 +178,8 @@@ spkm3_mic_header(unsigned char **hdrbuf
  /*
   * spkm3_mic_innercontext_token()
   *
-  * *tokp points to the beginning of the SPKM_MIC token  described 
-  * in rfc 2025, section 3.2.1: 
+  * *tokp points to the beginning of the SPKM_MIC token  described
+  * in rfc 2025, section 3.2.1:
   *
   * toklen is the inner token length
   */
@@@ -209,7 -209,7 +209,7 @@@ spkm3_verify_mic_token(unsigned char **
  
        /* spkm3 innercontext token preamble */
        if ((ptr[0] != 0xa4) || (ptr[2] != 0x30)) {
 -              dprintk("RPC: BAD SPKM ictoken preamble\n");
 +              dprintk("RPC:       BAD SPKM ictoken preamble\n");
                goto out;
        }
  
  
        /* token type */
        if ((ptr[4] != 0x02) || (ptr[5] != 0x02)) {
 -              dprintk("RPC: BAD asn1 SPKM3 token type\n");
 +              dprintk("RPC:       BAD asn1 SPKM3 token type\n");
                goto out;
        }
  
        /* only support SPKM_MIC_TOK */
        if((ptr[6] != 0x01) || (ptr[7] != 0x01)) {
 -              dprintk("RPC: ERROR unsupported SPKM3 token \n");
 +              dprintk("RPC:       ERROR unsupported SPKM3 token \n");
                goto out;
        }
  
        /* contextid */
        if (ptr[8] != 0x03) {
 -              dprintk("RPC: BAD SPKM3 asn1 context-id type\n");
 +              dprintk("RPC:       BAD SPKM3 asn1 context-id type\n");
                goto out;
        }
  
        ctxelen = ptr[9];
        if (ctxelen > 17) {  /* length includes asn1 zbit octet */
 -              dprintk("RPC: BAD SPKM3 contextid len %d\n", ctxelen);
 +              dprintk("RPC:       BAD SPKM3 contextid len %d\n", ctxelen);
                goto out;
        }
  
                goto out;
  
        /*
-       * in the current implementation: the optional int-alg is not present 
-       * so the default int-alg (md5) is used the optional snd-seq field is 
-       * also not present 
+       * in the current implementation: the optional int-alg is not present
+       * so the default int-alg (md5) is used the optional snd-seq field is
+       * also not present
        */
  
        if (*mic_hdrlen != 6 + ctxelen) {
 -              dprintk("RPC: BAD SPKM_ MIC_TOK header len %d: we only support default int-alg (should be absent) and do not support snd-seq\n", *mic_hdrlen);
 +              dprintk("RPC:       BAD SPKM_ MIC_TOK header len %d: we only "
 +                              "support default int-alg (should be absent) "
 +                              "and do not support snd-seq\n", *mic_hdrlen);
                goto out;
        }
        /* checksum */
-         *cksum = (&ptr[10] + ctxelen); /* ctxelen includes ptr[10] */
+       *cksum = (&ptr[10] + ctxelen); /* ctxelen includes ptr[10] */
  
        ret = GSS_S_COMPLETE;
  out:
index ac1ad6b1dc4a7da250594c99e01d34d13c83da35,35a1b34c4a1dd9662dbdb71af26e7ebf66099007..cc21ee860bb67005958c3f3f9af62067d6eaad3f
@@@ -45,7 -45,7 +45,7 @@@
  
  /*
   * spkm3_read_token()
-  * 
+  *
   * only SPKM_MIC_TOK with md5 intg-alg is supported
   */
  u32
@@@ -72,7 -72,7 +72,7 @@@ spkm3_read_token(struct spkm3_ctx *ctx
        /* decode the token */
  
        if (toktype != SPKM_MIC_TOK) {
 -              dprintk("RPC: BAD SPKM3 token type: %d\n", toktype);
 +              dprintk("RPC:       BAD SPKM3 token type: %d\n", toktype);
                goto out;
        }
  
@@@ -80,7 -80,7 +80,7 @@@
                goto out;
  
        if (*cksum++ != 0x03) {
 -              dprintk("RPC: spkm3_read_token BAD checksum type\n");
 +              dprintk("RPC:       spkm3_read_token BAD checksum type\n");
                goto out;
        }
        md5elen = *cksum++;
@@@ -97,8 -97,7 +97,8 @@@
         */
        ret = GSS_S_DEFECTIVE_TOKEN;
        if (!g_OID_equal(&ctx->intg_alg, &hmac_md5_oid)) {
 -              dprintk("RPC: gss_spkm3_seal: unsupported I-ALG algorithm\n");
 +              dprintk("RPC:       gss_spkm3_seal: unsupported I-ALG "
 +                              "algorithm\n");
                goto out;
        }
  
        ret = GSS_S_BAD_SIG;
        code = memcmp(md5cksum.data, wire_cksum.data, wire_cksum.len);
        if (code) {
 -              dprintk("RPC: bad MIC checksum\n");
 +              dprintk("RPC:       bad MIC checksum\n");
                goto out;
        }
  
index 8944cabcde5652efc95cbb4e81328e7f589df1bc,8fde38ecaf211e9e4217007609aa34901eaed25d..db298b501c817d1c0a90825aa526068293c59565
@@@ -172,8 -172,8 +172,8 @@@ static struct cache_head *rsi_alloc(voi
  }
  
  static void rsi_request(struct cache_detail *cd,
-                        struct cache_head *h,
-                        char **bpp, int *blen)
+                      struct cache_head *h,
+                      char **bpp, int *blen)
  {
        struct rsi *rsii = container_of(h, struct rsi, h);
  
  
  
  static int rsi_parse(struct cache_detail *cd,
-                     char *mesg, int mlen)
+                   char *mesg, int mlen)
  {
        /* context token expiry major minor context token */
        char *buf = mesg;
@@@ -669,14 -669,14 +669,14 @@@ gss_verify_header(struct svc_rqst *rqst
        }
  
        if (gc->gc_seq > MAXSEQ) {
 -              dprintk("RPC:      svcauth_gss: discarding request with large sequence number %d\n",
 -                              gc->gc_seq);
 +              dprintk("RPC:       svcauth_gss: discarding request with "
 +                              "large sequence number %d\n", gc->gc_seq);
                *authp = rpcsec_gsserr_ctxproblem;
                return SVC_DENIED;
        }
        if (!gss_check_seq_num(rsci, gc->gc_seq)) {
 -              dprintk("RPC:      svcauth_gss: discarding request with old sequence number %d\n",
 -                              gc->gc_seq);
 +              dprintk("RPC:       svcauth_gss: discarding request with "
 +                              "old sequence number %d\n", gc->gc_seq);
                return SVC_DROP;
        }
        return SVC_OK;
@@@ -958,8 -958,7 +958,8 @@@ svcauth_gss_accept(struct svc_rqst *rqs
        __be32          *reject_stat = resv->iov_base + resv->iov_len;
        int             ret;
  
 -      dprintk("RPC:      svcauth_gss: argv->iov_len = %zd\n",argv->iov_len);
 +      dprintk("RPC:       svcauth_gss: argv->iov_len = %zd\n",
 +                      argv->iov_len);
  
        *authp = rpc_autherr_badcred;
        if (!svcdata)
diff --combined net/sunrpc/cache.c
index 9e72223487fabf9eefe239d2ff3b90956ec2a34b,8612044b918930d67a389e9c4cdb4cd26f03cc31..f02f24ae946877516d2fd8050c40aebb8ba7f43c
@@@ -215,8 -215,7 +215,8 @@@ int cache_check(struct cache_detail *de
                if (rv == -EAGAIN)
                        rv = -ENOENT;
        } else if (rv == -EAGAIN || age > refresh_age/2) {
 -              dprintk("Want update, refage=%ld, age=%ld\n", refresh_age, age);
 +              dprintk("RPC:       Want update, refage=%ld, age=%ld\n",
 +                              refresh_age, age);
                if (!test_and_set_bit(CACHE_PENDING, &h->flags)) {
                        switch (cache_make_upcall(detail, h)) {
                        case -EINVAL:
   *
   * A table is then only scanned if the current time is at least
   * the nextcheck time.
-  * 
+  *
   */
  
  static LIST_HEAD(cache_list);
@@@ -283,9 -282,9 +283,9 @@@ static DEFINE_SPINLOCK(cache_list_lock)
  static struct cache_detail *current_detail;
  static int current_index;
  
- static struct file_operations cache_file_operations;
- static struct file_operations content_file_operations;
- static struct file_operations cache_flush_operations;
+ static const struct file_operations cache_file_operations;
+ static const struct file_operations content_file_operations;
+ static const struct file_operations cache_flush_operations;
  
  static void do_cache_clean(struct work_struct *work);
  static DECLARE_DELAYED_WORK(cache_cleaner, do_cache_clean);
@@@ -297,16 -296,16 +297,16 @@@ void cache_register(struct cache_detai
                struct proc_dir_entry *p;
                cd->proc_ent->owner = cd->owner;
                cd->channel_ent = cd->content_ent = NULL;
-               
-               p = create_proc_entry("flush", S_IFREG|S_IRUSR|S_IWUSR,
-                                     cd->proc_ent);
+               p = create_proc_entry("flush", S_IFREG|S_IRUSR|S_IWUSR,
+                                     cd->proc_ent);
                cd->flush_ent =  p;
-               if (p) {
-                       p->proc_fops = &cache_flush_operations;
-                       p->owner = cd->owner;
-                       p->data = cd;
-               }
-  
+               if (p) {
+                       p->proc_fops = &cache_flush_operations;
+                       p->owner = cd->owner;
+                       p->data = cd;
+               }
                if (cd->cache_request || cd->cache_parse) {
                        p = create_proc_entry("channel", S_IFREG|S_IRUSR|S_IWUSR,
                                              cd->proc_ent);
                                p->data = cd;
                        }
                }
-               if (cd->cache_show) {
-                       p = create_proc_entry("content", S_IFREG|S_IRUSR|S_IWUSR,
-                                             cd->proc_ent);
+               if (cd->cache_show) {
+                       p = create_proc_entry("content", S_IFREG|S_IRUSR|S_IWUSR,
+                                             cd->proc_ent);
                        cd->content_ent = p;
-                       if (p) {
-                               p->proc_fops = &content_file_operations;
-                               p->owner = cd->owner;
-                               p->data = cd;
-                       }
-               }
+                       if (p) {
+                               p->proc_fops = &content_file_operations;
+                               p->owner = cd->owner;
+                               p->data = cd;
+                       }
+               }
        }
        rwlock_init(&cd->hash_lock);
        INIT_LIST_HEAD(&cd->queue);
@@@ -418,15 -417,15 +418,15 @@@ static int cache_clean(void
                current_index++;
  
        /* find a cleanable entry in the bucket and clean it, or set to next bucket */
-       
        if (current_detail && current_index < current_detail->hash_size) {
                struct cache_head *ch, **cp;
                struct cache_detail *d;
-               
                write_lock(&current_detail->hash_lock);
  
                /* Ok, now to clean this strand */
-                       
                cp = & current_detail->hash_table[current_index];
                ch = *cp;
                for (; ch; cp= & ch->next, ch= *cp) {
@@@ -478,9 -477,9 +478,9 @@@ static void do_cache_clean(struct work_
  }
  
  
- /* 
+ /*
   * Clean all caches promptly.  This just calls cache_clean
-  * repeatedly until we are sure that every cache has had a chance to 
+  * repeatedly until we are sure that every cache has had a chance to
   * be fully cleaned
   */
  void cache_flush(void)
@@@ -509,7 -508,7 +509,7 @@@ void cache_purge(struct cache_detail *d
   * All deferred requests are stored in a hash table,
   * indexed by "struct cache_head *".
   * As it may be wasteful to store a whole request
-  * structure, we allow the request to provide a 
+  * structure, we allow the request to provide a
   * deferred form, which must contain a
   * 'struct cache_deferred_req'
   * This cache_deferred_req contains a method to allow
@@@ -585,7 -584,7 +585,7 @@@ static void cache_revisit_request(struc
  
        INIT_LIST_HEAD(&pending);
        spin_lock(&cache_defer_lock);
-       
        lp = cache_defer_hash[hash].next;
        if (lp) {
                while (lp != &cache_defer_hash[hash]) {
@@@ -615,7 -614,7 +615,7 @@@ void cache_clean_deferred(void *owner
  
        INIT_LIST_HEAD(&pending);
        spin_lock(&cache_defer_lock);
-       
        list_for_each_entry_safe(dreq, tmp, &cache_defer_list, recent) {
                if (dreq->owner == owner) {
                        list_del(&dreq->hash);
   * On write, an update request is processed
   * Poll works if anything to read, and always allows write
   *
-  * Implemented by linked list of requests.  Each open file has 
+  * Implemented by linked list of requests.  Each open file has
   * a ->private that also exists in this list.  New request are added
   * to the end and may wakeup and preceding readers.
   * New readers are added to the head.  If, on read, an item is found with
@@@ -888,7 -887,7 +888,7 @@@ cache_release(struct inode *inode, stru
  
  
  
- static struct file_operations cache_file_operations = {
+ static const struct file_operations cache_file_operations = {
        .owner          = THIS_MODULE,
        .llseek         = no_llseek,
        .read           = cache_read,
@@@ -1060,10 -1059,10 +1060,10 @@@ static int cache_make_upcall(struct cac
   * Messages are, like requests, separated into fields by
   * spaces and dequotes as \xHEXSTRING or embedded \nnn octal
   *
-  * Message is 
+  * Message is
   *   reply cachename expiry key ... content....
   *
-  * key and content are both parsed by cache 
+  * key and content are both parsed by cache
   */
  
  #define isodigit(c) (isdigit(c) && c <= '7')
@@@ -1133,7 -1132,7 +1133,7 @@@ static void *c_start(struct seq_file *m
        unsigned hash, entry;
        struct cache_head *ch;
        struct cache_detail *cd = ((struct handle*)m->private)->cd;
-       
  
        read_lock(&cd->hash_lock);
        if (!n--)
        do {
                hash++;
                n += 1LL<<32;
-       } while(hash < cd->hash_size && 
+       } while(hash < cd->hash_size &&
                cd->hash_table[hash]==NULL);
        if (hash >= cd->hash_size)
                return NULL;
@@@ -1246,7 -1245,7 +1246,7 @@@ static int content_release(struct inod
        return seq_release(inode, file);
  }
  
- static struct file_operations content_file_operations = {
+ static const struct file_operations content_file_operations = {
        .open           = content_open,
        .read           = seq_read,
        .llseek         = seq_lseek,
@@@ -1298,7 -1297,7 +1298,7 @@@ static ssize_t write_flush(struct file 
        return count;
  }
  
- static struct file_operations cache_flush_operations = {
+ static const struct file_operations cache_flush_operations = {
        .open           = nonseekable_open,
        .read           = read_flush,
        .write          = write_flush,
diff --combined net/sunrpc/clnt.c
index c21aa0a7f7702f1e15ab94787459c126a4f5ff96,c95a61736d1c58da98186f69ce740061e56d75af..6d7221fe990a593824245cf1bfac7b817df7dd64
  # define RPCDBG_FACILITY      RPCDBG_CALL
  #endif
  
 +#define dprint_status(t)                                      \
 +      dprintk("RPC: %5u %s (status %d)\n", t->tk_pid,         \
 +                      __FUNCTION__, t->tk_status)
 +
  static DECLARE_WAIT_QUEUE_HEAD(destroy_wait);
  
  
@@@ -110,8 -106,8 +110,8 @@@ static struct rpc_clnt * rpc_new_client
        int err;
        int len;
  
 -      dprintk("RPC: creating %s client for %s (xprt %p)\n",
 -              program->name, servname, xprt);
 +      dprintk("RPC:       creating %s client for %s (xprt %p)\n",
 +                      program->name, servname, xprt);
  
        err = -EINVAL;
        if (!xprt)
@@@ -224,7 -220,7 +224,7 @@@ struct rpc_clnt *rpc_create(struct rpc_
                xprt->resvport = 0;
  
        dprintk("RPC:       creating %s client for %s (xprt %p)\n",
 -              args->program->name, args->servername, xprt);
 +                      args->program->name, args->servername, xprt);
  
        clnt = rpc_new_client(xprt, args->servername, args->program,
                                args->version, args->authflavor);
                clnt->cl_autobind = 1;
        if (args->flags & RPC_CLNT_CREATE_ONESHOT)
                clnt->cl_oneshot = 1;
 +      if (args->flags & RPC_CLNT_CREATE_DISCRTRY)
 +              clnt->cl_discrtry = 1;
  
        return clnt;
  }
@@@ -294,7 -288,7 +294,7 @@@ out_no_path
  out_no_stats:
        kfree(new);
  out_no_clnt:
 -      dprintk("RPC: %s returned error %d\n", __FUNCTION__, err);
 +      dprintk("RPC:       %s: returned error %d\n", __FUNCTION__, err);
        return ERR_PTR(err);
  }
  
  int
  rpc_shutdown_client(struct rpc_clnt *clnt)
  {
 -      dprintk("RPC: shutting down %s client for %s, tasks=%d\n",
 +      dprintk("RPC:       shutting down %s client for %s, tasks=%d\n",
                        clnt->cl_protname, clnt->cl_server,
                        atomic_read(&clnt->cl_users));
  
@@@ -342,7 -336,7 +342,7 @@@ rpc_destroy_client(struct rpc_clnt *cln
                return 1;
        BUG_ON(atomic_read(&clnt->cl_users) != 0);
  
 -      dprintk("RPC: destroying %s client for %s\n",
 +      dprintk("RPC:       destroying %s client for %s\n",
                        clnt->cl_protname, clnt->cl_server);
        if (clnt->cl_auth) {
                rpcauth_destroy(clnt->cl_auth);
@@@ -372,8 -366,8 +372,8 @@@ out_free
  void
  rpc_release_client(struct rpc_clnt *clnt)
  {
 -      dprintk("RPC:      rpc_release_client(%p, %d)\n",
 -                              clnt, atomic_read(&clnt->cl_users));
 +      dprintk("RPC:       rpc_release_client(%p, %d)\n",
 +                      clnt, atomic_read(&clnt->cl_users));
  
        if (!atomic_dec_and_test(&clnt->cl_users))
                return;
@@@ -416,7 -410,7 +416,7 @@@ struct rpc_clnt *rpc_bind_new_program(s
                rpc_shutdown_client(clnt);
                clnt = ERR_PTR(err);
        }
- out:  
+ out:
        return clnt;
  }
  
@@@ -437,7 -431,7 +437,7 @@@ static const struct rpc_call_ops rpc_de
   *    sleeps on RPC calls
   */
  #define RPC_INTR_SIGNALS (sigmask(SIGHUP) | sigmask(SIGINT) | sigmask(SIGQUIT) | sigmask(SIGTERM))
-  
  static void rpc_save_sigmask(sigset_t *oldset, int intr)
  {
        unsigned long   sigallow = sigmask(SIGKILL);
@@@ -480,7 -474,7 +480,7 @@@ int rpc_call_sync(struct rpc_clnt *clnt
        int             status;
  
        /* If this client is slain all further I/O fails */
-       if (clnt->cl_dead) 
+       if (clnt->cl_dead)
                return -EIO;
  
        BUG_ON(flags & RPC_TASK_ASYNC);
        /* Mask signals on RPC calls _and_ GSS_AUTH upcalls */
        rpc_task_sigmask(task, &oldset);
  
 -      rpc_call_setup(task, msg, 0);
 -
        /* Set up the call info struct and execute the task */
 +      rpc_call_setup(task, msg, 0);
 +      if (task->tk_status == 0) {
 +              atomic_inc(&task->tk_count);
 +              rpc_execute(task);
 +      }
        status = task->tk_status;
 -      if (status != 0)
 -              goto out;
 -      atomic_inc(&task->tk_count);
 -      status = rpc_execute(task);
 -      if (status == 0)
 -              status = task->tk_status;
 -out:
        rpc_put_task(task);
        rpc_restore_sigmask(&oldset);
        return status;
@@@ -517,7 -515,7 +517,7 @@@ rpc_call_async(struct rpc_clnt *clnt, s
  
        /* If this client is slain all further I/O fails */
        status = -EIO;
-       if (clnt->cl_dead) 
+       if (clnt->cl_dead)
                goto out_release;
  
        flags |= RPC_TASK_ASYNC;
                goto out_release;
  
        /* Mask signals on GSS_AUTH upcalls */
-       rpc_task_sigmask(task, &oldset);                
+       rpc_task_sigmask(task, &oldset);
  
        rpc_call_setup(task, msg, 0);
  
        else
                rpc_put_task(task);
  
-       rpc_restore_sigmask(&oldset);           
+       rpc_restore_sigmask(&oldset);
        return status;
  out_release:
        rpc_release_calldata(tk_ops, data);
@@@ -660,10 -658,9 +660,10 @@@ call_start(struct rpc_task *task
  {
        struct rpc_clnt *clnt = task->tk_client;
  
 -      dprintk("RPC: %4d call_start %s%d proc %d (%s)\n", task->tk_pid,
 -              clnt->cl_protname, clnt->cl_vers, task->tk_msg.rpc_proc->p_proc,
 -              (RPC_IS_ASYNC(task) ? "async" : "sync"));
 +      dprintk("RPC: %5u call_start %s%d proc %d (%s)\n", task->tk_pid,
 +                      clnt->cl_protname, clnt->cl_vers,
 +                      task->tk_msg.rpc_proc->p_proc,
 +                      (RPC_IS_ASYNC(task) ? "async" : "sync"));
  
        /* Increment call count */
        task->tk_msg.rpc_proc->p_count++;
  static void
  call_reserve(struct rpc_task *task)
  {
 -      dprintk("RPC: %4d call_reserve\n", task->tk_pid);
 +      dprint_status(task);
  
        if (!rpcauth_uptodatecred(task)) {
                task->tk_action = call_refresh;
@@@ -697,7 -694,8 +697,7 @@@ call_reserveresult(struct rpc_task *tas
  {
        int status = task->tk_status;
  
 -      dprintk("RPC: %4d call_reserveresult (status %d)\n",
 -                              task->tk_pid, task->tk_status);
 +      dprint_status(task);
  
        /*
         * After a call to xprt_reserve(), we must have either
@@@ -751,8 -749,8 +751,8 @@@ call_allocate(struct rpc_task *task
        struct rpc_xprt *xprt = task->tk_xprt;
        unsigned int    bufsiz;
  
 -      dprintk("RPC: %4d call_allocate (status %d)\n",
 -                              task->tk_pid, task->tk_status);
 +      dprint_status(task);
 +
        task->tk_action = call_bind;
        if (req->rq_buffer)
                return;
  
        if (xprt->ops->buf_alloc(task, bufsiz << 1) != NULL)
                return;
 -      printk(KERN_INFO "RPC: buffer allocation failed for task %p\n", task);
 +
 +      dprintk("RPC: %5u rpc_buffer allocation failed\n", task->tk_pid);
  
        if (RPC_IS_ASYNC(task) || !signalled()) {
                xprt_release(task);
@@@ -801,7 -798,8 +801,7 @@@ call_encode(struct rpc_task *task
        kxdrproc_t      encode;
        __be32          *p;
  
 -      dprintk("RPC: %4d call_encode (status %d)\n",
 -                              task->tk_pid, task->tk_status);
 +      dprint_status(task);
  
        /* Default buffer setup */
        bufsiz = req->rq_bufsize >> 1;
@@@ -847,7 -845,8 +847,7 @@@ call_bind(struct rpc_task *task
  {
        struct rpc_xprt *xprt = task->tk_xprt;
  
 -      dprintk("RPC: %4d call_bind (status %d)\n",
 -                              task->tk_pid, task->tk_status);
 +      dprint_status(task);
  
        task->tk_action = call_connect;
        if (!xprt_bound(xprt)) {
@@@ -866,7 -865,8 +866,7 @@@ call_bind_status(struct rpc_task *task
        int status = -EACCES;
  
        if (task->tk_status >= 0) {
 -              dprintk("RPC: %4d call_bind_status (status %d)\n",
 -                                      task->tk_pid, task->tk_status);
 +              dprint_status(task);
                task->tk_status = 0;
                task->tk_action = call_connect;
                return;
  
        switch (task->tk_status) {
        case -EACCES:
 -              dprintk("RPC: %4d remote rpcbind: RPC program/version unavailable\n",
 -                              task->tk_pid);
 +              dprintk("RPC: %5u remote rpcbind: RPC program/version "
 +                              "unavailable\n", task->tk_pid);
                rpc_delay(task, 3*HZ);
                goto retry_timeout;
        case -ETIMEDOUT:
 -              dprintk("RPC: %4d rpcbind request timed out\n",
 +              dprintk("RPC: %5u rpcbind request timed out\n",
                                task->tk_pid);
                goto retry_timeout;
        case -EPFNOSUPPORT:
 -              dprintk("RPC: %4d remote rpcbind service unavailable\n",
 +              dprintk("RPC: %5u remote rpcbind service unavailable\n",
                                task->tk_pid);
                break;
        case -EPROTONOSUPPORT:
 -              dprintk("RPC: %4d remote rpcbind version 2 unavailable\n",
 +              dprintk("RPC: %5u remote rpcbind version 2 unavailable\n",
                                task->tk_pid);
                break;
        default:
 -              dprintk("RPC: %4d unrecognized rpcbind error (%d)\n",
 +              dprintk("RPC: %5u unrecognized rpcbind error (%d)\n",
                                task->tk_pid, -task->tk_status);
                status = -EIO;
        }
@@@ -911,7 -911,7 +911,7 @@@ call_connect(struct rpc_task *task
  {
        struct rpc_xprt *xprt = task->tk_xprt;
  
 -      dprintk("RPC: %4d call_connect xprt %p %s connected\n",
 +      dprintk("RPC: %5u call_connect xprt %p %s connected\n",
                        task->tk_pid, xprt,
                        (xprt_connected(xprt) ? "is" : "is not"));
  
@@@ -933,7 -933,8 +933,7 @@@ call_connect_status(struct rpc_task *ta
        struct rpc_clnt *clnt = task->tk_client;
        int status = task->tk_status;
  
 -      dprintk("RPC: %5u call_connect_status (status %d)\n",
 -                              task->tk_pid, task->tk_status);
 +      dprint_status(task);
  
        task->tk_status = 0;
        if (status >= 0) {
  static void
  call_transmit(struct rpc_task *task)
  {
 -      dprintk("RPC: %4d call_transmit (status %d)\n",
 -                              task->tk_pid, task->tk_status);
 +      dprint_status(task);
  
        task->tk_action = call_status;
        if (task->tk_status < 0)
@@@ -1026,7 -1028,8 +1026,7 @@@ call_status(struct rpc_task *task
        if (req->rq_received > 0 && !req->rq_bytes_sent)
                task->tk_status = req->rq_received;
  
 -      dprintk("RPC: %4d call_status (status %d)\n",
 -                              task->tk_pid, task->tk_status);
 +      dprint_status(task);
  
        status = task->tk_status;
        if (status >= 0) {
@@@ -1077,11 -1080,11 +1077,11 @@@ call_timeout(struct rpc_task *task
        struct rpc_clnt *clnt = task->tk_client;
  
        if (xprt_adjust_timeout(task->tk_rqstp) == 0) {
 -              dprintk("RPC: %4d call_timeout (minor)\n", task->tk_pid);
 +              dprintk("RPC: %5u call_timeout (minor)\n", task->tk_pid);
                goto retry;
        }
  
 -      dprintk("RPC: %4d call_timeout (major)\n", task->tk_pid);
 +      dprintk("RPC: %5u call_timeout (major)\n", task->tk_pid);
        task->tk_timeouts++;
  
        if (RPC_IS_SOFT(task)) {
@@@ -1115,8 -1118,8 +1115,8 @@@ call_decode(struct rpc_task *task
        kxdrproc_t      decode = task->tk_msg.rpc_proc->p_decode;
        __be32          *p;
  
 -      dprintk("RPC: %4d call_decode (status %d)\n",
 -                              task->tk_pid, task->tk_status);
 +      dprintk("RPC: %5u call_decode (status %d)\n",
 +                      task->tk_pid, task->tk_status);
  
        if (task->tk_flags & RPC_CALL_MAJORSEEN) {
                printk(KERN_NOTICE "%s: server %s OK\n",
                        clnt->cl_stats->rpcretrans++;
                        goto out_retry;
                }
 -              dprintk("%s: too small RPC reply size (%d bytes)\n",
 -                      clnt->cl_protname, task->tk_status);
 +              dprintk("RPC:       %s: too small RPC reply size (%d bytes)\n",
 +                              clnt->cl_protname, task->tk_status);
                task->tk_action = call_timeout;
                goto out_retry;
        }
                                                      task->tk_msg.rpc_resp);
                unlock_kernel();
        }
 -      dprintk("RPC: %4d call_decode result %d\n", task->tk_pid,
 -                                      task->tk_status);
 +      dprintk("RPC: %5u call_decode result %d\n", task->tk_pid,
 +                      task->tk_status);
        return;
  out_retry:
        req->rq_received = req->rq_private_buf.len = 0;
  static void
  call_refresh(struct rpc_task *task)
  {
 -      dprintk("RPC: %4d call_refresh\n", task->tk_pid);
 +      dprint_status(task);
  
        xprt_release(task);     /* Must do to obtain new XID */
        task->tk_action = call_refreshresult;
@@@ -1193,8 -1196,8 +1193,8 @@@ static voi
  call_refreshresult(struct rpc_task *task)
  {
        int status = task->tk_status;
 -      dprintk("RPC: %4d call_refreshresult (status %d)\n",
 -                              task->tk_pid, task->tk_status);
 +
 +      dprint_status(task);
  
        task->tk_status = 0;
        task->tk_action = call_reserve;
@@@ -1272,15 -1275,11 +1272,15 @@@ call_verify(struct rpc_task *task
                        case RPC_AUTH_ERROR:
                                break;
                        case RPC_MISMATCH:
 -                              dprintk("%s: RPC call version mismatch!\n", __FUNCTION__);
 +                              dprintk("RPC: %5u %s: RPC call version "
 +                                              "mismatch!\n",
 +                                              task->tk_pid, __FUNCTION__);
                                error = -EPROTONOSUPPORT;
                                goto out_err;
                        default:
 -                              dprintk("%s: RPC call rejected, unknown error: %x\n", __FUNCTION__, n);
 +                              dprintk("RPC: %5u %s: RPC call rejected, "
 +                                              "unknown error: %x\n",
 +                                              task->tk_pid, __FUNCTION__, n);
                                goto out_eio;
                }
                if (--len < 0)
                        if (!task->tk_cred_retry)
                                break;
                        task->tk_cred_retry--;
 -                      dprintk("RPC: %4d call_verify: retry stale creds\n",
 -                                                      task->tk_pid);
 +                      dprintk("RPC: %5u %s: retry stale creds\n",
 +                                      task->tk_pid, __FUNCTION__);
                        rpcauth_invalcred(task);
                        task->tk_action = call_refresh;
                        goto out_retry;
                        if (!task->tk_garb_retry)
                                break;
                        task->tk_garb_retry--;
 -                      dprintk("RPC: %4d call_verify: retry garbled creds\n",
 -                                                      task->tk_pid);
 +                      dprintk("RPC: %5u %s: retry garbled creds\n",
 +                                      task->tk_pid, __FUNCTION__);
                        task->tk_action = call_bind;
                        goto out_retry;
                case RPC_AUTH_TOOWEAK:
                        printk(KERN_WARNING "call_verify: unknown auth error: %x\n", n);
                        error = -EIO;
                }
 -              dprintk("RPC: %4d call_verify: call rejected %d\n",
 -                                              task->tk_pid, n);
 +              dprintk("RPC: %5u %s: call rejected %d\n",
 +                              task->tk_pid, __FUNCTION__, n);
                goto out_err;
        }
        if (!(p = rpcauth_checkverf(task, p))) {
        case RPC_SUCCESS:
                return p;
        case RPC_PROG_UNAVAIL:
 -              dprintk("RPC: call_verify: program %u is unsupported by server %s\n",
 +              dprintk("RPC: %5u %s: program %u is unsupported by server %s\n",
 +                              task->tk_pid, __FUNCTION__,
                                (unsigned int)task->tk_client->cl_prog,
                                task->tk_client->cl_server);
                error = -EPFNOSUPPORT;
                goto out_err;
        case RPC_PROG_MISMATCH:
 -              dprintk("RPC: call_verify: program %u, version %u unsupported by server %s\n",
 +              dprintk("RPC: %5u %s: program %u, version %u unsupported by "
 +                              "server %s\n", task->tk_pid, __FUNCTION__,
                                (unsigned int)task->tk_client->cl_prog,
                                (unsigned int)task->tk_client->cl_vers,
                                task->tk_client->cl_server);
                error = -EPROTONOSUPPORT;
                goto out_err;
        case RPC_PROC_UNAVAIL:
 -              dprintk("RPC: call_verify: proc %p unsupported by program %u, version %u on server %s\n",
 +              dprintk("RPC: %5u %s: proc %p unsupported by program %u, "
 +                              "version %u on server %s\n",
 +                              task->tk_pid, __FUNCTION__,
                                task->tk_msg.rpc_proc,
                                task->tk_client->cl_prog,
                                task->tk_client->cl_vers,
                error = -EOPNOTSUPP;
                goto out_err;
        case RPC_GARBAGE_ARGS:
 -              dprintk("RPC: %4d %s: server saw garbage\n", task->tk_pid, __FUNCTION__);
 +              dprintk("RPC: %5u %s: server saw garbage\n",
 +                              task->tk_pid, __FUNCTION__);
                break;                  /* retry */
        default:
                printk(KERN_WARNING "call_verify: server accept status: %x\n", n);
@@@ -1368,8 -1362,7 +1368,8 @@@ out_garbage
        task->tk_client->cl_stats->rpcgarbage++;
        if (task->tk_garb_retry) {
                task->tk_garb_retry--;
 -              dprintk("RPC %s: retrying %4d\n", __FUNCTION__, task->tk_pid);
 +              dprintk("RPC: %5u %s: retrying\n",
 +                              task->tk_pid, __FUNCTION__);
                task->tk_action = call_bind;
  out_retry:
                return ERR_PTR(-EAGAIN);
diff --combined net/sunrpc/pmap_clnt.c
index 12ab4ec5fc79b069afd78e9aca5081c0160f7964,f4e1357bc186e63796592244e497b80a80b25ef3..d9f765344589e5e87b53443c3787b355d440305c
@@@ -62,10 -62,7 +62,10 @@@ static inline void pmap_map_free(struc
  
  static void pmap_map_release(void *data)
  {
 -      pmap_map_free(data);
 +      struct portmap_args *map = data;
 +
 +      xprt_put(map->pm_xprt);
 +      pmap_map_free(map);
  }
  
  static const struct rpc_call_ops pmap_getport_ops = {
@@@ -97,7 -94,7 +97,7 @@@ void rpc_getport(struct rpc_task *task
        struct rpc_task *child;
        int status;
  
 -      dprintk("RPC: %4d rpc_getport(%s, %u, %u, %d)\n",
 +      dprintk("RPC: %5u rpc_getport(%s, %u, %u, %d)\n",
                        task->tk_pid, clnt->cl_server,
                        clnt->cl_prog, clnt->cl_vers, xprt->prot);
  
        status = -EIO;
        child = rpc_run_task(pmap_clnt, RPC_TASK_ASYNC, &pmap_getport_ops, map);
        if (IS_ERR(child))
 -              goto bailout;
 +              goto bailout_nofree;
        rpc_put_task(child);
  
        task->tk_xprt->stat.bind_count++;
@@@ -178,7 -175,7 +178,7 @@@ int rpc_getport_external(struct sockadd
        char            hostname[32];
        int             status;
  
 -      dprintk("RPC:      rpc_getport_external(%u.%u.%u.%u, %u, %u, %d)\n",
 +      dprintk("RPC:       rpc_getport_external(%u.%u.%u.%u, %u, %u, %d)\n",
                        NIPQUAD(sin->sin_addr.s_addr), prog, vers, prot);
  
        sprintf(hostname, "%u.%u.%u.%u", NIPQUAD(sin->sin_addr.s_addr));
@@@ -221,10 -218,11 +221,10 @@@ static void pmap_getport_done(struct rp
                status = 0;
        }
  
 -      dprintk("RPC: %4d pmap_getport_done(status %d, port %u)\n",
 +      dprintk("RPC: %5u pmap_getport_done(status %d, port %u)\n",
                        child->tk_pid, status, map->pm_port);
  
        pmap_wake_portmap_waiters(xprt, status);
 -      xprt_put(xprt);
  }
  
  /**
@@@ -257,14 -255,13 +257,14 @@@ int rpc_register(u32 prog, u32 vers, in
        struct rpc_clnt         *pmap_clnt;
        int error = 0;
  
 -      dprintk("RPC: registering (%u, %u, %d, %u) with portmapper.\n",
 +      dprintk("RPC:       registering (%u, %u, %d, %u) with portmapper.\n",
                        prog, vers, prot, port);
  
        pmap_clnt = pmap_create("localhost", &sin, IPPROTO_UDP, 1);
        if (IS_ERR(pmap_clnt)) {
                error = PTR_ERR(pmap_clnt);
 -              dprintk("RPC: couldn't create pmap client. Error = %d\n", error);
 +              dprintk("RPC:       couldn't create pmap client. Error = %d\n",
 +                              error);
                return error;
        }
  
                        "RPC: failed to contact portmap (errno %d).\n",
                        error);
        }
 -      dprintk("RPC: registration status %d/%d\n", error, *okay);
 +      dprintk("RPC:       registration status %d/%d\n", error, *okay);
  
        /* Client deleted automatically because cl_oneshot == 1 */
        return error;
@@@ -306,9 -303,8 +306,9 @@@ static struct rpc_clnt *pmap_create(cha
   */
  static int xdr_encode_mapping(struct rpc_rqst *req, __be32 *p, struct portmap_args *map)
  {
 -      dprintk("RPC: xdr_encode_mapping(%u, %u, %u, %u)\n",
 -              map->pm_prog, map->pm_vers, map->pm_prot, map->pm_port);
 +      dprintk("RPC:       xdr_encode_mapping(%u, %u, %u, %u)\n",
 +                      map->pm_prog, map->pm_vers,
 +                      map->pm_prot, map->pm_port);
        *p++ = htonl(map->pm_prog);
        *p++ = htonl(map->pm_vers);
        *p++ = htonl(map->pm_prot);
@@@ -333,7 -329,7 +333,7 @@@ static int xdr_decode_bool(struct rpc_r
  static struct rpc_procinfo    pmap_procedures[] = {
  [PMAP_SET] = {
          .p_proc               = PMAP_SET,
-         .p_encode             = (kxdrproc_t) xdr_encode_mapping,      
+         .p_encode             = (kxdrproc_t) xdr_encode_mapping,
          .p_decode             = (kxdrproc_t) xdr_decode_bool,
          .p_bufsiz             = 4,
          .p_count              = 1,
        },
  [PMAP_UNSET] = {
          .p_proc               = PMAP_UNSET,
-         .p_encode             = (kxdrproc_t) xdr_encode_mapping,      
+         .p_encode             = (kxdrproc_t) xdr_encode_mapping,
          .p_decode             = (kxdrproc_t) xdr_decode_bool,
          .p_bufsiz             = 4,
          .p_count              = 1,
diff --combined net/sunrpc/rpc_pipe.c
index 0812828781525488c5f3593f8402aa89b0e030a6,e1fad77a2257bf47fc83e36ded07abd79737edf7..9b9ea5045569196947565d700f62672763b146f1
@@@ -309,7 -309,7 +309,7 @@@ rpc_pipe_ioctl(struct inode *ino, struc
        }
  }
  
- static struct file_operations rpc_pipe_fops = {
+ static const struct file_operations rpc_pipe_fops = {
        .owner          = THIS_MODULE,
        .llseek         = no_llseek,
        .read           = rpc_pipe_read,
@@@ -366,7 -366,7 +366,7 @@@ rpc_info_release(struct inode *inode, s
        return single_release(inode, file);
  }
  
- static struct file_operations rpc_info_operations = {
+ static const struct file_operations rpc_info_operations = {
        .owner          = THIS_MODULE,
        .open           = rpc_info_open,
        .read           = seq_read,
@@@ -589,7 -589,7 +589,7 @@@ __rpc_mkdir(struct inode *dir, struct d
  {
        struct inode *inode;
  
 -      inode = rpc_get_inode(dir->i_sb, S_IFDIR | S_IRUSR | S_IXUSR);
 +      inode = rpc_get_inode(dir->i_sb, S_IFDIR | S_IRUGO | S_IXUGO);
        if (!inode)
                goto out_err;
        inode->i_ino = iunique(dir->i_sb, 100);
diff --combined net/sunrpc/sched.c
index ca56b8e9b64958f25f2087b0521d87168158d953,54a6b92525ea803d3dbd9d81a9f2ccb5cd28b3b9..6d87320074b1556f98280dde419157f6288a2cb7
@@@ -4,7 -4,7 +4,7 @@@
   * Scheduling for synchronous and asynchronous RPC requests.
   *
   * Copyright (C) 1996 Olaf Kirch, <okir@monad.swb.de>
-  * 
+  *
   * TCP NFS related read + write fixes
   * (C) 1999 Dave Airlie, University of Limerick, Ireland <airlied@linux.ie>
   */
@@@ -74,7 -74,7 +74,7 @@@ static DEFINE_SPINLOCK(rpc_sched_lock)
  static inline void
  __rpc_disable_timer(struct rpc_task *task)
  {
 -      dprintk("RPC: %4d disabling timer\n", task->tk_pid);
 +      dprintk("RPC: %5u disabling timer\n", task->tk_pid);
        task->tk_timeout_fn = NULL;
        task->tk_timeout = 0;
  }
@@@ -93,7 -93,7 +93,7 @@@ static void rpc_run_timer(struct rpc_ta
        callback = task->tk_timeout_fn;
        task->tk_timeout_fn = NULL;
        if (callback && RPC_IS_QUEUED(task)) {
 -              dprintk("RPC: %4d running timer\n", task->tk_pid);
 +              dprintk("RPC: %5u running timer\n", task->tk_pid);
                callback(task);
        }
        smp_mb__before_clear_bit();
@@@ -110,7 -110,7 +110,7 @@@ __rpc_add_timer(struct rpc_task *task, 
        if (!task->tk_timeout)
                return;
  
 -      dprintk("RPC: %4d setting alarm for %lu ms\n",
 +      dprintk("RPC: %5u setting alarm for %lu ms\n",
                        task->tk_pid, task->tk_timeout * 1000 / HZ);
  
        if (timer)
@@@ -132,7 -132,7 +132,7 @@@ rpc_delete_timer(struct rpc_task *task
                return;
        if (test_and_clear_bit(RPC_TASK_HAS_TIMER, &task->tk_runstate)) {
                del_singleshot_timer_sync(&task->tk_timer);
 -              dprintk("RPC: %4d deleting timer\n", task->tk_pid);
 +              dprintk("RPC: %5u deleting timer\n", task->tk_pid);
        }
  }
  
@@@ -179,8 -179,8 +179,8 @@@ static void __rpc_add_wait_queue(struc
        queue->qlen++;
        rpc_set_queued(task);
  
 -      dprintk("RPC: %4d added to queue %p \"%s\"\n",
 -                              task->tk_pid, queue, rpc_qname(queue));
 +      dprintk("RPC: %5u added to queue %p \"%s\"\n",
 +                      task->tk_pid, queue, rpc_qname(queue));
  }
  
  /*
@@@ -212,8 -212,8 +212,8 @@@ static void __rpc_remove_wait_queue(str
        else
                list_del(&task->u.tk_wait.list);
        queue->qlen--;
 -      dprintk("RPC: %4d removed from queue %p \"%s\"\n",
 -                              task->tk_pid, queue, rpc_qname(queue));
 +      dprintk("RPC: %5u removed from queue %p \"%s\"\n",
 +                      task->tk_pid, queue, rpc_qname(queue));
  }
  
  static inline void rpc_set_waitqueue_priority(struct rpc_wait_queue *queue, int priority)
@@@ -307,7 -307,7 +307,7 @@@ EXPORT_SYMBOL(__rpc_wait_for_completion
  /*
   * Make an RPC task runnable.
   *
-  * Note: If the task is ASYNC, this must be called with 
+  * Note: If the task is ASYNC, this must be called with
   * the spinlock held to protect the wait queue operation.
   */
  static void rpc_make_runnable(struct rpc_task *task)
  static void __rpc_sleep_on(struct rpc_wait_queue *q, struct rpc_task *task,
                        rpc_action action, rpc_action timer)
  {
 -      dprintk("RPC: %4d sleep_on(queue \"%s\" time %ld)\n", task->tk_pid,
 -                              rpc_qname(q), jiffies);
 +      dprintk("RPC: %5u sleep_on(queue \"%s\" time %lu)\n",
 +                      task->tk_pid, rpc_qname(q), jiffies);
  
        if (!RPC_IS_ASYNC(task) && !RPC_IS_ACTIVATED(task)) {
                printk(KERN_ERR "RPC: Inactive synchronous task put to sleep!\n");
@@@ -381,8 -381,7 +381,8 @@@ void rpc_sleep_on(struct rpc_wait_queu
   */
  static void __rpc_do_wake_up_task(struct rpc_task *task)
  {
 -      dprintk("RPC: %4d __rpc_wake_up_task (now %ld)\n", task->tk_pid, jiffies);
 +      dprintk("RPC: %5u __rpc_wake_up_task (now %lu)\n",
 +                      task->tk_pid, jiffies);
  
  #ifdef RPC_DEBUG
        BUG_ON(task->tk_magic != RPC_TASK_MAGIC_ID);
  
        rpc_make_runnable(task);
  
 -      dprintk("RPC:      __rpc_wake_up_task done\n");
 +      dprintk("RPC:       __rpc_wake_up_task done\n");
  }
  
  /*
@@@ -419,7 -418,7 +419,7 @@@ static void __rpc_wake_up_task(struct r
  static void
  __rpc_default_timer(struct rpc_task *task)
  {
 -      dprintk("RPC: %d timeout (default timer)\n", task->tk_pid);
 +      dprintk("RPC: %5u timeout (default timer)\n", task->tk_pid);
        task->tk_status = -ETIMEDOUT;
        rpc_wake_up_task(task);
  }
@@@ -503,8 -502,7 +503,8 @@@ struct rpc_task * rpc_wake_up_next(stru
  {
        struct rpc_task *task = NULL;
  
 -      dprintk("RPC:      wake_up_next(%p \"%s\")\n", queue, rpc_qname(queue));
 +      dprintk("RPC:       wake_up_next(%p \"%s\")\n",
 +                      queue, rpc_qname(queue));
        rcu_read_lock_bh();
        spin_lock(&queue->lock);
        if (RPC_IS_PRIORITY(queue))
@@@ -627,12 -625,12 +627,12 @@@ void rpc_release_calldata(const struct 
  /*
   * This is the RPC `scheduler' (or rather, the finite state machine).
   */
 -static int __rpc_execute(struct rpc_task *task)
 +static void __rpc_execute(struct rpc_task *task)
  {
        int             status = 0;
  
 -      dprintk("RPC: %4d rpc_execute flgs %x\n",
 -                              task->tk_pid, task->tk_flags);
 +      dprintk("RPC: %5u __rpc_execute flags=0x%x\n",
 +                      task->tk_pid, task->tk_flags);
  
        BUG_ON(RPC_IS_QUEUED(task));
  
                if (RPC_DO_CALLBACK(task)) {
                        /* Define a callback save pointer */
                        void (*save_callback)(struct rpc_task *);
-       
-                       /* 
+                       /*
                         * If a callback exists, save it, reset it,
                         * call it.
                         * The save is needed to stop from resetting
                if (RPC_IS_ASYNC(task)) {
                        /* Careful! we may have raced... */
                        if (RPC_IS_QUEUED(task))
 -                              return 0;
 +                              return;
                        if (rpc_test_and_set_running(task))
 -                              return 0;
 +                              return;
                        continue;
                }
  
                /* sync task: sleep here */
 -              dprintk("RPC: %4d sync task going to sleep\n", task->tk_pid);
 +              dprintk("RPC: %5u sync task going to sleep\n", task->tk_pid);
                /* Note: Caller should be using rpc_clnt_sigmask() */
                status = out_of_line_wait_on_bit(&task->tk_runstate,
                                RPC_TASK_QUEUED, rpc_wait_bit_interruptible,
                         * clean up after sleeping on some queue, we don't
                         * break the loop here, but go around once more.
                         */
 -                      dprintk("RPC: %4d got signal\n", task->tk_pid);
 +                      dprintk("RPC: %5u got signal\n", task->tk_pid);
                        task->tk_flags |= RPC_TASK_KILLED;
                        rpc_exit(task, -ERESTARTSYS);
                        rpc_wake_up_task(task);
                }
                rpc_set_running(task);
 -              dprintk("RPC: %4d sync task resuming\n", task->tk_pid);
 +              dprintk("RPC: %5u sync task resuming\n", task->tk_pid);
        }
  
 -      dprintk("RPC: %4d, return %d, status %d\n", task->tk_pid, status, task->tk_status);
 +      dprintk("RPC: %5u return %d, status %d\n", task->tk_pid, status,
 +                      task->tk_status);
        /* Release all resources associated with the task */
        rpc_release_task(task);
 -      return status;
  }
  
  /*
   *     released. In particular note that tk_release() will have
   *     been called, so your task memory may have been freed.
   */
 -int
 -rpc_execute(struct rpc_task *task)
 +void rpc_execute(struct rpc_task *task)
  {
        rpc_set_active(task);
        rpc_set_running(task);
 -      return __rpc_execute(task);
 +      __rpc_execute(task);
  }
  
  static void rpc_async_schedule(struct work_struct *work)
@@@ -827,7 -826,7 +827,7 @@@ void rpc_init_task(struct rpc_task *tas
        /* starting timestamp */
        task->tk_start = jiffies;
  
 -      dprintk("RPC: %4d new task procpid %d\n", task->tk_pid,
 +      dprintk("RPC:       new task initialized, procpid %u\n",
                                current->pid);
  }
  
@@@ -840,7 -839,7 +840,7 @@@ rpc_alloc_task(void
  static void rpc_free_task(struct rcu_head *rcu)
  {
        struct rpc_task *task = container_of(rcu, struct rpc_task, u.tk_rcu);
 -      dprintk("RPC: %4d freeing task\n", task->tk_pid);
 +      dprintk("RPC: %5u freeing task\n", task->tk_pid);
        mempool_free(task, rpc_task_mempool);
  }
  
@@@ -859,7 -858,7 +859,7 @@@ struct rpc_task *rpc_new_task(struct rp
  
        rpc_init_task(task, clnt, flags, tk_ops, calldata);
  
 -      dprintk("RPC: %4d allocated task\n", task->tk_pid);
 +      dprintk("RPC:       allocated task %p\n", task);
        task->tk_flags |= RPC_TASK_DYNAMIC;
  out:
        return task;
@@@ -903,7 -902,7 +903,7 @@@ static void rpc_release_task(struct rpc
  #ifdef RPC_DEBUG
        BUG_ON(task->tk_magic != RPC_TASK_MAGIC_ID);
  #endif
 -      dprintk("RPC: %4d release task\n", task->tk_pid);
 +      dprintk("RPC: %5u release task\n", task->tk_pid);
  
        /* Remove from global task list */
        spin_lock(&rpc_sched_lock);
@@@ -956,7 -955,7 +956,7 @@@ void rpc_killall_tasks(struct rpc_clnt 
        struct rpc_task *rovr;
        struct list_head *le;
  
 -      dprintk("RPC:      killing all tasks for client %p\n", clnt);
 +      dprintk("RPC:       killing all tasks for client %p\n", clnt);
  
        /*
         * Spin lock all_tasks to prevent changes...
@@@ -985,8 -984,7 +985,8 @@@ static void rpciod_killall(void
                rpc_killall_tasks(NULL);
                flush_workqueue(rpciod_workqueue);
                if (!list_empty(&all_tasks)) {
 -                      dprintk("rpciod_killall: waiting for tasks to exit\n");
 +                      dprintk("RPC:       rpciod_killall: waiting for tasks "
 +                                      "to exit\n");
                        yield();
                }
        }
@@@ -1006,7 -1004,7 +1006,7 @@@ rpciod_up(void
        int error = 0;
  
        mutex_lock(&rpciod_mutex);
 -      dprintk("rpciod_up: users %d\n", rpciod_users);
 +      dprintk("RPC:       rpciod_up: users %u\n", rpciod_users);
        rpciod_users++;
        if (rpciod_workqueue)
                goto out;
         * If there's no pid, we should be the first user.
         */
        if (rpciod_users > 1)
 -              printk(KERN_WARNING "rpciod_up: no workqueue, %d users??\n", rpciod_users);
 +              printk(KERN_WARNING "rpciod_up: no workqueue, %u users??\n", rpciod_users);
        /*
         * Create the rpciod thread and wait for it to start.
         */
@@@ -1036,7 -1034,7 +1036,7 @@@ voi
  rpciod_down(void)
  {
        mutex_lock(&rpciod_mutex);
 -      dprintk("rpciod_down sema %d\n", rpciod_users);
 +      dprintk("RPC:       rpciod_down sema %u\n", rpciod_users);
        if (rpciod_users) {
                if (--rpciod_users)
                        goto out;
                printk(KERN_WARNING "rpciod_down: no users??\n");
  
        if (!rpciod_workqueue) {
 -              dprintk("rpciod_down: Nothing to do!\n");
 +              dprintk("RPC:       rpciod_down: Nothing to do!\n");
                goto out;
        }
        rpciod_killall();
@@@ -1074,7 -1072,7 +1074,7 @@@ void rpc_show_tasks(void
                if (RPC_IS_QUEUED(t))
                        rpc_waitq = rpc_qname(t->u.tk_wait.rpc_waitq);
  
 -              printk("%05d %04d %04x %06d %8p %6d %8p %08ld %8s %8p %8p\n",
 +              printk("%5u %04d %04x %6d %8p %6d %8p %8ld %8s %8p %8p\n",
                        t->tk_pid,
                        (t->tk_msg.rpc_proc ? t->tk_msg.rpc_proc->p_proc : -1),
                        t->tk_flags, t->tk_status,
diff --combined net/sunrpc/stats.c
index d19cd9ec6e99b6f2daa20eb26634f57dbd12e613,044d9484bb8c639a90fb9a91d85335c4f520d9b9..2878e20ebd0422beb718eb197371e7c59d33f832
@@@ -66,7 -66,7 +66,7 @@@ static int rpc_proc_open(struct inode *
        return single_open(file, rpc_proc_show, PDE(inode)->data);
  }
  
- static struct file_operations rpc_proc_fops = {
+ static const struct file_operations rpc_proc_fops = {
        .owner = THIS_MODULE,
        .open = rpc_proc_open,
        .read  = seq_read,
@@@ -226,7 -226,7 +226,7 @@@ do_register(const char *name, void *dat
        struct proc_dir_entry *ent;
  
        rpc_proc_init();
 -      dprintk("RPC: registering /proc/net/rpc/%s\n", name);
 +      dprintk("RPC:       registering /proc/net/rpc/%s\n", name);
  
        ent = create_proc_entry(name, 0, proc_net_rpc);
        if (ent) {
@@@ -263,7 -263,7 +263,7 @@@ svc_proc_unregister(const char *name
  void
  rpc_proc_init(void)
  {
 -      dprintk("RPC: registering /proc/net/rpc\n");
 +      dprintk("RPC:       registering /proc/net/rpc\n");
        if (!proc_net_rpc) {
                struct proc_dir_entry *ent;
                ent = proc_mkdir("rpc", proc_net);
  void
  rpc_proc_exit(void)
  {
 -      dprintk("RPC: unregistering /proc/net/rpc\n");
 +      dprintk("RPC:       unregistering /proc/net/rpc\n");
        if (proc_net_rpc) {
                proc_net_rpc = NULL;
                remove_proc_entry("net/rpc", NULL);
diff --combined net/sunrpc/svc.c
index b0fb6406d54f15e5038c5a55463b37f0d95a0a8d,b00511d39b6526b2026220644c5b6c9eb2a6bdef..4ab137403e1ac3b0ff075b97dde73308bc843c8c
@@@ -317,7 -317,7 +317,7 @@@ __svc_create(struct svc_program *prog, 
        for (i = 0; i < serv->sv_nrpools; i++) {
                struct svc_pool *pool = &serv->sv_pools[i];
  
 -              dprintk("initialising pool %u for %s\n",
 +              dprintk("svc: initialising pool %u for %s\n",
                                i, serv->sv_name);
  
                pool->sp_id = i;
@@@ -368,7 -368,7 +368,7 @@@ svc_destroy(struct svc_serv *serv
  {
        struct svc_sock *svsk;
  
 -      dprintk("RPC: svc_destroy(%s, %d)\n",
 +      dprintk("svc: svc_destroy(%s, %d)\n",
                                serv->sv_program->pg_name,
                                serv->sv_nrthreads);
  
                svsk = list_entry(serv->sv_tempsocks.next,
                                  struct svc_sock,
                                  sk_list);
-               svc_delete_socket(svsk);
+               svc_close_socket(svsk);
        }
        if (serv->sv_shutdown)
                serv->sv_shutdown(serv);
                svsk = list_entry(serv->sv_permsocks.next,
                                  struct svc_sock,
                                  sk_list);
-               svc_delete_socket(svsk);
+               svc_close_socket(svsk);
        }
-       
        cache_clean_deferred(serv);
  
        /* Unregister service with the portmapper */
@@@ -415,7 -415,7 +415,7 @@@ svc_init_buffer(struct svc_rqst *rqstp
  {
        int pages;
        int arghi;
-       
        pages = size / PAGE_SIZE + 1; /* extra page as we hold both request and reply.
                                       * We assume one is at most one page
                                       */
@@@ -514,7 -514,7 +514,7 @@@ choose_pool(struct svc_serv *serv, stru
        if (pool != NULL)
                return pool;
  
-       return &serv->sv_pools[(*state)++ % serv->sv_nrpools];
+       return &serv->sv_pools[(*state)++ % serv->sv_nrpools];
  }
  
  /*
@@@ -530,13 -530,13 +530,13 @@@ choose_victim(struct svc_serv *serv, st
                spin_lock_bh(&pool->sp_lock);
        } else {
                /* choose a pool in round-robin fashion */
-               for (i = 0; i < serv->sv_nrpools; i++) {
-                       pool = &serv->sv_pools[--(*state) % serv->sv_nrpools];
+               for (i = 0; i < serv->sv_nrpools; i++) {
+                       pool = &serv->sv_pools[--(*state) % serv->sv_nrpools];
                        spin_lock_bh(&pool->sp_lock);
-                       if (!list_empty(&pool->sp_all_threads))
-                               goto found_pool;
+                       if (!list_empty(&pool->sp_all_threads))
+                               goto found_pool;
                        spin_unlock_bh(&pool->sp_lock);
-               }
+               }
                return NULL;
        }
  
@@@ -551,7 -551,7 +551,7 @@@ found_pool
                rqstp = list_entry(pool->sp_all_threads.next, struct svc_rqst, rq_all);
                list_del_init(&rqstp->rq_all);
                task = rqstp->rq_task;
-       }
+       }
        spin_unlock_bh(&pool->sp_lock);
  
        return task;
@@@ -636,7 -636,7 +636,7 @@@ svc_exit_thread(struct svc_rqst *rqstp
  
  /*
   * Register an RPC service with the local portmapper.
-  * To unregister a service, call this routine with 
+  * To unregister a service, call this routine with
   * proto and port == 0.
   */
  int
@@@ -654,7 -654,7 +654,7 @@@ svc_register(struct svc_serv *serv, in
                        if (progp->pg_vers[i] == NULL)
                                continue;
  
 -                      dprintk("RPC: svc_register(%s, %s, %d, %d)%s\n",
 +                      dprintk("svc: svc_register(%s, %s, %d, %d)%s\n",
                                        progp->pg_name,
                                        proto == IPPROTO_UDP?  "udp" : "tcp",
                                        port,
@@@ -709,7 -709,7 +709,7 @@@ svc_process(struct svc_rqst *rqstp
                goto err_short_len;
  
        /* setup response xdr_buf.
-        * Initially it has just one page 
+        * Initially it has just one page
         */
        rqstp->rq_resused = 1;
        resv->iov_base = page_address(rqstp->rq_respages[0]);
        memset(rqstp->rq_argp, 0, procp->pc_argsize);
        memset(rqstp->rq_resp, 0, procp->pc_ressize);
  
-       /* un-reserve some of the out-queue now that we have a 
+       /* un-reserve some of the out-queue now that we have a
         * better idea of reply size
         */
        if (procp->pc_xdrressize)
diff --combined net/sunrpc/xprt.c
index 1975139b26e7108177dd594e2fdb838cc272a549,e7c71a1ea3d46dbcee26f25a49bfeb93bda6bb57..ee6ffa01dfb18f0bc2e78ea8e8b86d7470c7b8bb
@@@ -108,7 -108,7 +108,7 @@@ int xprt_reserve_xprt(struct rpc_task *
        return 1;
  
  out_sleep:
 -      dprintk("RPC: %4d failed to lock transport %p\n",
 +      dprintk("RPC: %5u failed to lock transport %p\n",
                        task->tk_pid, xprt);
        task->tk_timeout = 0;
        task->tk_status = -EAGAIN;
@@@ -158,7 -158,7 +158,7 @@@ int xprt_reserve_xprt_cong(struct rpc_t
        }
        xprt_clear_locked(xprt);
  out_sleep:
 -      dprintk("RPC: %4d failed to lock transport %p\n", task->tk_pid, xprt);
 +      dprintk("RPC: %5u failed to lock transport %p\n", task->tk_pid, xprt);
        task->tk_timeout = 0;
        task->tk_status = -EAGAIN;
        if (req && req->rq_ntrans)
@@@ -281,7 -281,7 +281,7 @@@ __xprt_get_cong(struct rpc_xprt *xprt, 
  
        if (req->rq_cong)
                return 1;
 -      dprintk("RPC: %4d xprt_cwnd_limited cong = %ld cwnd = %ld\n",
 +      dprintk("RPC: %5u xprt_cwnd_limited cong = %lu cwnd = %lu\n",
                        task->tk_pid, xprt->cong, xprt->cwnd);
        if (RPCXPRT_CONGESTED(xprt))
                return 0;
@@@ -340,7 -340,7 +340,7 @@@ void xprt_adjust_cwnd(struct rpc_task *
                if (cwnd < RPC_CWNDSCALE)
                        cwnd = RPC_CWNDSCALE;
        }
 -      dprintk("RPC:      cong %ld, cwnd was %ld, now %ld\n",
 +      dprintk("RPC:       cong %ld, cwnd was %ld, now %ld\n",
                        xprt->cong, xprt->cwnd, cwnd);
        xprt->cwnd = cwnd;
        __xprt_put_cong(xprt, req);
@@@ -387,8 -387,8 +387,8 @@@ void xprt_write_space(struct rpc_xprt *
  
        spin_lock_bh(&xprt->transport_lock);
        if (xprt->snd_task) {
 -              dprintk("RPC:      write space: waking waiting task on xprt %p\n",
 -                              xprt);
 +              dprintk("RPC:       write space: waking waiting task on "
 +                              "xprt %p\n", xprt);
                rpc_wake_up_task(xprt->snd_task);
        }
        spin_unlock_bh(&xprt->transport_lock);
@@@ -410,7 -410,7 +410,7 @@@ void xprt_set_retrans_timeout_def(struc
  /*
   * xprt_set_retrans_timeout_rtt - set a request's retransmit timeout
   * @task: task whose timeout is to be set
-  * 
+  *
   * Set a request's retransmit timeout using the RTT estimator.
   */
  void xprt_set_retrans_timeout_rtt(struct rpc_task *task)
@@@ -494,7 -494,7 +494,7 @@@ static void xprt_autoclose(struct work_
   */
  void xprt_disconnect(struct rpc_xprt *xprt)
  {
 -      dprintk("RPC:      disconnected transport %p\n", xprt);
 +      dprintk("RPC:       disconnected transport %p\n", xprt);
        spin_lock_bh(&xprt->transport_lock);
        xprt_clear_connected(xprt);
        xprt_wake_pending_tasks(xprt, -ENOTCONN);
@@@ -530,7 -530,7 +530,7 @@@ void xprt_connect(struct rpc_task *task
  {
        struct rpc_xprt *xprt = task->tk_xprt;
  
 -      dprintk("RPC: %4d xprt_connect xprt %p %s connected\n", task->tk_pid,
 +      dprintk("RPC: %5u xprt_connect xprt %p %s connected\n", task->tk_pid,
                        xprt, (xprt_connected(xprt) ? "is" : "is not"));
  
        if (!xprt_bound(xprt)) {
@@@ -560,7 -560,7 +560,7 @@@ static void xprt_connect_status(struct 
        if (task->tk_status >= 0) {
                xprt->stat.connect_count++;
                xprt->stat.connect_time += (long)jiffies - xprt->stat.connect_start;
 -              dprintk("RPC: %4d xprt_connect_status: connection established\n",
 +              dprintk("RPC: %5u xprt_connect_status: connection established\n",
                                task->tk_pid);
                return;
        }
        switch (task->tk_status) {
        case -ECONNREFUSED:
        case -ECONNRESET:
 -              dprintk("RPC: %4d xprt_connect_status: server %s refused connection\n",
 -                              task->tk_pid, task->tk_client->cl_server);
 +              dprintk("RPC: %5u xprt_connect_status: server %s refused "
 +                              "connection\n", task->tk_pid,
 +                              task->tk_client->cl_server);
                break;
        case -ENOTCONN:
 -              dprintk("RPC: %4d xprt_connect_status: connection broken\n",
 +              dprintk("RPC: %5u xprt_connect_status: connection broken\n",
                                task->tk_pid);
                break;
        case -ETIMEDOUT:
 -              dprintk("RPC: %4d xprt_connect_status: connect attempt timed out\n",
 -                              task->tk_pid);
 +              dprintk("RPC: %5u xprt_connect_status: connect attempt timed "
 +                              "out\n", task->tk_pid);
                break;
        default:
 -              dprintk("RPC: %4d xprt_connect_status: error %d connecting to server %s\n",
 -                              task->tk_pid, -task->tk_status, task->tk_client->cl_server);
 +              dprintk("RPC: %5u xprt_connect_status: error %d connecting to "
 +                              "server %s\n", task->tk_pid, -task->tk_status,
 +                              task->tk_client->cl_server);
                xprt_release_write(xprt, task);
                task->tk_status = -EIO;
        }
@@@ -604,9 -602,6 +604,9 @@@ struct rpc_rqst *xprt_lookup_rqst(struc
                if (entry->rq_xid == xid)
                        return entry;
        }
 +
 +      dprintk("RPC:       xprt_lookup_rqst did not find xid %08x\n",
 +                      ntohl(xid));
        xprt->stat.bad_xids++;
        return NULL;
  }
@@@ -659,7 -654,7 +659,7 @@@ static void xprt_timer(struct rpc_task 
        struct rpc_rqst *req = task->tk_rqstp;
        struct rpc_xprt *xprt = req->rq_xprt;
  
 -      dprintk("RPC: %4d xprt_timer\n", task->tk_pid);
 +      dprintk("RPC: %5u xprt_timer\n", task->tk_pid);
  
        spin_lock(&xprt->transport_lock);
        if (!req->rq_received) {
@@@ -683,7 -678,7 +683,7 @@@ int xprt_prepare_transmit(struct rpc_ta
        struct rpc_xprt *xprt = req->rq_xprt;
        int err = 0;
  
 -      dprintk("RPC: %4d xprt_prepare_transmit\n", task->tk_pid);
 +      dprintk("RPC: %5u xprt_prepare_transmit\n", task->tk_pid);
  
        spin_lock_bh(&xprt->transport_lock);
        if (req->rq_received && !req->rq_bytes_sent) {
@@@ -721,7 -716,7 +721,7 @@@ void xprt_transmit(struct rpc_task *tas
        struct rpc_xprt *xprt = req->rq_xprt;
        int status;
  
 -      dprintk("RPC: %4d xprt_transmit(%u)\n", task->tk_pid, req->rq_slen);
 +      dprintk("RPC: %5u xprt_transmit(%u)\n", task->tk_pid, req->rq_slen);
  
        if (!req->rq_received) {
                if (list_empty(&req->rq_list)) {
                        xprt_reset_majortimeo(req);
                        /* Turn off autodisconnect */
                        del_singleshot_timer_sync(&xprt->timer);
 +              } else {
 +                      /* If all request bytes have been sent,
 +                       * then we must be retransmitting this one */
 +                      if (!req->rq_bytes_sent) {
 +                              if (task->tk_client->cl_discrtry) {
 +                                      xprt_disconnect(xprt);
 +                                      task->tk_status = -ENOTCONN;
 +                                      return;
 +                              }
 +                      }
                }
        } else if (!req->rq_bytes_sent)
                return;
  
        status = xprt->ops->send_request(task);
        if (status == 0) {
 -              dprintk("RPC: %4d xmit complete\n", task->tk_pid);
 +              dprintk("RPC: %5u xmit complete\n", task->tk_pid);
                spin_lock_bh(&xprt->transport_lock);
  
                xprt->ops->set_retrans_timeout(task);
@@@ -792,7 -777,7 +792,7 @@@ static inline void do_xprt_reserve(stru
                xprt_request_init(task, xprt);
                return;
        }
 -      dprintk("RPC:      waiting for request slot\n");
 +      dprintk("RPC:       waiting for request slot\n");
        task->tk_status = -EAGAIN;
        task->tk_timeout = 0;
        rpc_sleep_on(&xprt->backlog, task, NULL, NULL);
@@@ -837,7 -822,7 +837,7 @@@ static void xprt_request_init(struct rp
        req->rq_xid     = xprt_alloc_xid(xprt);
        req->rq_release_snd_buf = NULL;
        xprt_reset_majortimeo(req);
 -      dprintk("RPC: %4d reserved req %p xid %08x\n", task->tk_pid,
 +      dprintk("RPC: %5u reserved req %p xid %08x\n", task->tk_pid,
                        req, ntohl(req->rq_xid));
  }
  
@@@ -871,7 -856,7 +871,7 @@@ void xprt_release(struct rpc_task *task
                req->rq_release_snd_buf(req);
        memset(req, 0, sizeof(*req));   /* mark unused */
  
 -      dprintk("RPC: %4d release request %p\n", task->tk_pid, req);
 +      dprintk("RPC: %5u release request %p\n", task->tk_pid, req);
  
        spin_lock(&xprt->reserve_lock);
        list_add(&req->rq_list, &xprt->free);
   */
  void xprt_set_timeout(struct rpc_timeout *to, unsigned int retr, unsigned long incr)
  {
-       to->to_initval   = 
+       to->to_initval   =
        to->to_increment = incr;
        to->to_maxval    = to->to_initval + (incr * retr);
        to->to_retries   = retr;
@@@ -921,7 -906,7 +921,7 @@@ struct rpc_xprt *xprt_create_transport(
                return ERR_PTR(-EIO);
        }
        if (IS_ERR(xprt)) {
 -              dprintk("RPC:      xprt_create_transport: failed, %ld\n",
 +              dprintk("RPC:       xprt_create_transport: failed, %ld\n",
                                -PTR_ERR(xprt));
                return xprt;
        }
  
        xprt_init_xid(xprt);
  
 -      dprintk("RPC:      created transport %p with %u slots\n", xprt,
 +      dprintk("RPC:       created transport %p with %u slots\n", xprt,
                        xprt->max_reqs);
  
        return xprt;
@@@ -966,7 -951,7 +966,7 @@@ static void xprt_destroy(struct kref *k
  {
        struct rpc_xprt *xprt = container_of(kref, struct rpc_xprt, kref);
  
 -      dprintk("RPC:      destroying transport %p\n", xprt);
 +      dprintk("RPC:       destroying transport %p\n", xprt);
        xprt->shutdown = 1;
        del_timer_sync(&xprt->timer);