Linux NFS development
 help / color / mirror / Atom feed
From: Chuck Lever <chuck.lever@oracle.com>
To: Trond Myklebust <trond.myklebust@fys.uio.no>
Cc: nfs@lists.sourceforge.net
Subject: Re: [PATCH 02/10] NFS: Use C99 struct initializers in nfs4proc.c
Date: Thu, 31 May 2007 11:14:55 -0400	[thread overview]
Message-ID: <465EE66F.8080909@oracle.com> (raw)
In-Reply-To: <1180555947.6770.53.camel@heimdal.trondhjem.org>

[-- Attachment #1: Type: text/plain, Size: 15834 bytes --]

Sorry for the delay in responding.  See below.

Trond Myklebust wrote:
> On Tue, 2007-05-29 at 10:10 -0400, Chuck Lever wrote:
>> Trond Myklebust wrote:
>>> On Fri, 2007-05-25 at 17:41 -0400, Chuck Lever wrote:
>>>> Follow kernel coding conventions.
>>>>
>>>> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
>>>> ---
>>>>
>>>>  fs/nfs/nfs4_fs.h  |    5 ++++
>>>>  fs/nfs/nfs4proc.c |   70 ++++++++++++++++++++++++++++-------------------------
>>>>  2 files changed, 42 insertions(+), 33 deletions(-)
>>>>
>>>> diff --git a/fs/nfs/nfs4_fs.h b/fs/nfs/nfs4_fs.h
>>>> index cf3a17e..1a526c4 100644
>>>> --- a/fs/nfs/nfs4_fs.h
>>>> +++ b/fs/nfs/nfs4_fs.h
>>>> @@ -145,6 +145,11 @@ struct nfs4_exception {
>>>>  	int retry;
>>>>  };
>>>>  
>>>> +#define DECLARE_NFS4_EXCEPTION(name)				\
>>>> +	struct nfs4_exception name = {				\
>>>> +		.timeout	= 0,				\
>>>> +	}
>>> Why would we want this? The existing code uses bog standard C99
>>> initialisers. There is no need to explicitly set .timeout to zero.
>> Using
>>
>>    struct nfs4_exception name = { };
>>
>> causes compiler complaints.  One correct way to fix this is to set at 
>> least one field in the structure, and setting that field to zero clears 
>> the other one by default.
> 
> I can't find anything in Harbison & Steele stating that name = {} is
> illegal. All they say is that "if there are fewer initializers than
> there are structure components, the remaining components are initialized
> to their default initial values.".

The exact compiler warning is this:

/home/cel/src/linux/main/fs/nfs/nfs4proc.c: In function 
‘nfs4_do_open_reclaim’:
/home/cel/src/linux/main/fs/nfs/nfs4proc.c:496: warning: missing initializer
/home/cel/src/linux/main/fs/nfs/nfs4proc.c:496: warning: (near 
initialization for ‘exception.timeout’)

> Anyhow, if you really do have to set one component, then a much less
> verbose form would be to write "name = {0}" There is no need for the
> macro.

Yes, that is less verbose.  But it doesn't eliminate the warning, which 
becomes this:

/home/cel/src/linux/main/fs/nfs/nfs4proc.c: In function 
‘nfs4_do_open_reclaim’:
/home/cel/src/linux/main/fs/nfs/nfs4proc.c:496: warning: missing initializer
/home/cel/src/linux/main/fs/nfs/nfs4proc.c:496: warning: (near 
initialization for ‘exception.retry’)

So a complete structure initializer is necessary to eliminate both warnings.

>>>>  struct nfs4_state_recovery_ops {
>>>>  	int (*recover_open)(struct nfs4_state_owner *, struct nfs4_state *);
>>>>  	int (*recover_lock)(struct nfs4_state *, struct file_lock *);
>>>> diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
>>>> index 648e0ac..b220c09 100644
>>>> --- a/fs/nfs/nfs4proc.c
>>>> +++ b/fs/nfs/nfs4proc.c
>>>> @@ -493,7 +493,7 @@ static int _nfs4_do_open_reclaim(struct nfs4_state_owner *sp, struct nfs4_state
>>>>  static int nfs4_do_open_reclaim(struct nfs4_state_owner *sp, struct nfs4_state *state, struct dentry *dentry)
>>>>  {
>>>>  	struct nfs_server *server = NFS_SERVER(state->inode);
>>>> -	struct nfs4_exception exception = { };
>>>> +	DECLARE_NFS4_EXCEPTION(exception);
>>>>  	int err;
>>>>  	do {
>>>>  		err = _nfs4_do_open_reclaim(sp, state, dentry);
>>>> @@ -538,8 +538,8 @@ static int _nfs4_open_delegation_recall(struct dentry *dentry, struct nfs4_state
>>>>  
>>>>  int nfs4_open_delegation_recall(struct dentry *dentry, struct nfs4_state *state)
>>>>  {
>>>> -	struct nfs4_exception exception = { };
>>>>  	struct nfs_server *server = NFS_SERVER(dentry->d_inode);
>>>> +	DECLARE_NFS4_EXCEPTION(exception);
>>>>  	int err;
>>>>  	do {
>>>>  		err = _nfs4_open_delegation_recall(dentry, state);
>>>> @@ -843,7 +843,7 @@ static int _nfs4_open_expired(struct nfs4_state_owner *sp, struct nfs4_state *st
>>>>  static inline int nfs4_do_open_expired(struct nfs4_state_owner *sp, struct nfs4_state *state, struct dentry *dentry)
>>>>  {
>>>>  	struct nfs_server *server = NFS_SERVER(dentry->d_inode);
>>>> -	struct nfs4_exception exception = { };
>>>> +	DECLARE_NFS4_EXCEPTION(exception);
>>>>  	int err;
>>>>  
>>>>  	do {
>>>> @@ -938,8 +938,8 @@ out_put_state_owner:
>>>>  
>>>>  static struct nfs4_state *nfs4_open_delegated(struct inode *inode, int flags, struct rpc_cred *cred)
>>>>  {
>>>> -	struct nfs4_exception exception = { };
>>>>  	struct nfs4_state *res = ERR_PTR(-EIO);
>>>> +	DECLARE_NFS4_EXCEPTION(exception);
>>>>  	int err;
>>>>  
>>>>  	do {
>>>> @@ -1008,7 +1008,7 @@ out_err:
>>>>  
>>>>  static struct nfs4_state *nfs4_do_open(struct inode *dir, struct dentry *dentry, int flags, struct iattr *sattr, struct rpc_cred *cred)
>>>>  {
>>>> -	struct nfs4_exception exception = { };
>>>> +	DECLARE_NFS4_EXCEPTION(exception);
>>>>  	struct nfs4_state *res;
>>>>  	int status;
>>>>  
>>>> @@ -1090,7 +1090,7 @@ static int nfs4_do_setattr(struct inode *inode, struct nfs_fattr *fattr,
>>>>                  struct iattr *sattr, struct nfs4_state *state)
>>>>  {
>>>>  	struct nfs_server *server = NFS_SERVER(inode);
>>>> -	struct nfs4_exception exception = { };
>>>> +	DECLARE_NFS4_EXCEPTION(exception);
>>>>  	int err;
>>>>  	do {
>>>>  		err = nfs4_handle_exception(server,
>>>> @@ -1330,7 +1330,9 @@ out_drop:
>>>>  
>>>>  static int _nfs4_server_capabilities(struct nfs_server *server, struct nfs_fh *fhandle)
>>>>  {
>>>> -	struct nfs4_server_caps_res res = {};
>>>> +	struct nfs4_server_caps_res res = {
>>>> +		.acl_bitmask = 0,
>>>> +	};
>>>>  	struct rpc_message msg = {
>>>>  		.rpc_proc = &nfs4_procedures[NFSPROC4_CLNT_SERVER_CAPS],
>>>>  		.rpc_argp = fhandle,
>>>> @@ -1354,7 +1356,7 @@ static int _nfs4_server_capabilities(struct nfs_server *server, struct nfs_fh *f
>>>>  
>>>>  int nfs4_server_capabilities(struct nfs_server *server, struct nfs_fh *fhandle)
>>>>  {
>>>> -	struct nfs4_exception exception = { };
>>>> +	DECLARE_NFS4_EXCEPTION(exception);
>>>>  	int err;
>>>>  	do {
>>>>  		err = nfs4_handle_exception(server,
>>>> @@ -1387,7 +1389,7 @@ static int _nfs4_lookup_root(struct nfs_server *server, struct nfs_fh *fhandle,
>>>>  static int nfs4_lookup_root(struct nfs_server *server, struct nfs_fh *fhandle,
>>>>  		struct nfs_fsinfo *info)
>>>>  {
>>>> -	struct nfs4_exception exception = { };
>>>> +	DECLARE_NFS4_EXCEPTION(exception);
>>>>  	int err;
>>>>  	do {
>>>>  		err = nfs4_handle_exception(server,
>>>> @@ -1476,7 +1478,7 @@ static int _nfs4_proc_getattr(struct nfs_server *server, struct nfs_fh *fhandle,
>>>>  
>>>>  static int nfs4_proc_getattr(struct nfs_server *server, struct nfs_fh *fhandle, struct nfs_fattr *fattr)
>>>>  {
>>>> -	struct nfs4_exception exception = { };
>>>> +	DECLARE_NFS4_EXCEPTION(exception);
>>>>  	int err;
>>>>  	do {
>>>>  		err = nfs4_handle_exception(server,
>>>> @@ -1568,7 +1570,7 @@ static int nfs4_proc_lookupfh(struct nfs_server *server, struct nfs_fh *dirfh,
>>>>  			      struct qstr *name, struct nfs_fh *fhandle,
>>>>  			      struct nfs_fattr *fattr)
>>>>  {
>>>> -	struct nfs4_exception exception = { };
>>>> +	DECLARE_NFS4_EXCEPTION(exception);
>>>>  	int err;
>>>>  	do {
>>>>  		err = nfs4_handle_exception(server,
>>>> @@ -1612,7 +1614,7 @@ static int _nfs4_proc_lookup(struct inode *dir, struct qstr *name,
>>>>  
>>>>  static int nfs4_proc_lookup(struct inode *dir, struct qstr *name, struct nfs_fh *fhandle, struct nfs_fattr *fattr)
>>>>  {
>>>> -	struct nfs4_exception exception = { };
>>>> +	DECLARE_NFS4_EXCEPTION(exception);
>>>>  	int err;
>>>>  	do {
>>>>  		err = nfs4_handle_exception(NFS_SERVER(dir),
>>>> @@ -1627,7 +1629,9 @@ static int _nfs4_proc_access(struct inode *inode, struct nfs_access_entry *entry
>>>>  	struct nfs4_accessargs args = {
>>>>  		.fh = NFS_FH(inode),
>>>>  	};
>>>> -	struct nfs4_accessres res = { 0 };
>>>> +	struct nfs4_accessres res = {
>>>> +		.access = 0,
>>>> +	};
>>>>  	struct rpc_message msg = {
>>>>  		.rpc_proc = &nfs4_procedures[NFSPROC4_CLNT_ACCESS],
>>>>  		.rpc_argp = &args,
>>>> @@ -1668,7 +1672,7 @@ static int _nfs4_proc_access(struct inode *inode, struct nfs_access_entry *entry
>>>>  
>>>>  static int nfs4_proc_access(struct inode *inode, struct nfs_access_entry *entry)
>>>>  {
>>>> -	struct nfs4_exception exception = { };
>>>> +	DECLARE_NFS4_EXCEPTION(exception);
>>>>  	int err;
>>>>  	do {
>>>>  		err = nfs4_handle_exception(NFS_SERVER(inode),
>>>> @@ -1723,7 +1727,7 @@ static int _nfs4_proc_readlink(struct inode *inode, struct page *page,
>>>>  static int nfs4_proc_readlink(struct inode *inode, struct page *page,
>>>>  		unsigned int pgbase, unsigned int pglen)
>>>>  {
>>>> -	struct nfs4_exception exception = { };
>>>> +	DECLARE_NFS4_EXCEPTION(exception);
>>>>  	int err;
>>>>  	do {
>>>>  		err = nfs4_handle_exception(NFS_SERVER(inode),
>>>> @@ -1813,7 +1817,7 @@ static int _nfs4_proc_remove(struct inode *dir, struct qstr *name)
>>>>  
>>>>  static int nfs4_proc_remove(struct inode *dir, struct qstr *name)
>>>>  {
>>>> -	struct nfs4_exception exception = { };
>>>> +	DECLARE_NFS4_EXCEPTION(exception);
>>>>  	int err;
>>>>  	do {
>>>>  		err = nfs4_handle_exception(NFS_SERVER(dir),
>>>> @@ -1907,7 +1911,7 @@ static int _nfs4_proc_rename(struct inode *old_dir, struct qstr *old_name,
>>>>  static int nfs4_proc_rename(struct inode *old_dir, struct qstr *old_name,
>>>>  		struct inode *new_dir, struct qstr *new_name)
>>>>  {
>>>> -	struct nfs4_exception exception = { };
>>>> +	DECLARE_NFS4_EXCEPTION(exception);
>>>>  	int err;
>>>>  	do {
>>>>  		err = nfs4_handle_exception(NFS_SERVER(old_dir),
>>>> @@ -1954,7 +1958,7 @@ static int _nfs4_proc_link(struct inode *inode, struct inode *dir, struct qstr *
>>>>  
>>>>  static int nfs4_proc_link(struct inode *inode, struct inode *dir, struct qstr *name)
>>>>  {
>>>> -	struct nfs4_exception exception = { };
>>>> +	DECLARE_NFS4_EXCEPTION(exception);
>>>>  	int err;
>>>>  	do {
>>>>  		err = nfs4_handle_exception(NFS_SERVER(inode),
>>>> @@ -2011,7 +2015,7 @@ static int _nfs4_proc_symlink(struct inode *dir, struct dentry *dentry,
>>>>  static int nfs4_proc_symlink(struct inode *dir, struct dentry *dentry,
>>>>  		struct page *page, unsigned int len, struct iattr *sattr)
>>>>  {
>>>> -	struct nfs4_exception exception = { };
>>>> +	DECLARE_NFS4_EXCEPTION(exception);
>>>>  	int err;
>>>>  	do {
>>>>  		err = nfs4_handle_exception(NFS_SERVER(dir),
>>>> @@ -2064,7 +2068,7 @@ static int _nfs4_proc_mkdir(struct inode *dir, struct dentry *dentry,
>>>>  static int nfs4_proc_mkdir(struct inode *dir, struct dentry *dentry,
>>>>  		struct iattr *sattr)
>>>>  {
>>>> -	struct nfs4_exception exception = { };
>>>> +	DECLARE_NFS4_EXCEPTION(exception);
>>>>  	int err;
>>>>  	do {
>>>>  		err = nfs4_handle_exception(NFS_SERVER(dir),
>>>> @@ -2110,7 +2114,7 @@ static int _nfs4_proc_readdir(struct dentry *dentry, struct rpc_cred *cred,
>>>>  static int nfs4_proc_readdir(struct dentry *dentry, struct rpc_cred *cred,
>>>>                    u64 cookie, struct page *page, unsigned int count, int plus)
>>>>  {
>>>> -	struct nfs4_exception exception = { };
>>>> +	DECLARE_NFS4_EXCEPTION(exception);
>>>>  	int err;
>>>>  	do {
>>>>  		err = nfs4_handle_exception(NFS_SERVER(dentry->d_inode),
>>>> @@ -2180,7 +2184,7 @@ static int _nfs4_proc_mknod(struct inode *dir, struct dentry *dentry,
>>>>  static int nfs4_proc_mknod(struct inode *dir, struct dentry *dentry,
>>>>  		struct iattr *sattr, dev_t rdev)
>>>>  {
>>>> -	struct nfs4_exception exception = { };
>>>> +	DECLARE_NFS4_EXCEPTION(exception);
>>>>  	int err;
>>>>  	do {
>>>>  		err = nfs4_handle_exception(NFS_SERVER(dir),
>>>> @@ -2209,7 +2213,7 @@ static int _nfs4_proc_statfs(struct nfs_server *server, struct nfs_fh *fhandle,
>>>>  
>>>>  static int nfs4_proc_statfs(struct nfs_server *server, struct nfs_fh *fhandle, struct nfs_fsstat *fsstat)
>>>>  {
>>>> -	struct nfs4_exception exception = { };
>>>> +	DECLARE_NFS4_EXCEPTION(exception);
>>>>  	int err;
>>>>  	do {
>>>>  		err = nfs4_handle_exception(server,
>>>> @@ -2237,7 +2241,7 @@ static int _nfs4_do_fsinfo(struct nfs_server *server, struct nfs_fh *fhandle,
>>>>  
>>>>  static int nfs4_do_fsinfo(struct nfs_server *server, struct nfs_fh *fhandle, struct nfs_fsinfo *fsinfo)
>>>>  {
>>>> -	struct nfs4_exception exception = { };
>>>> +	DECLARE_NFS4_EXCEPTION(exception);
>>>>  	int err;
>>>>  
>>>>  	do {
>>>> @@ -2280,7 +2284,7 @@ static int _nfs4_proc_pathconf(struct nfs_server *server, struct nfs_fh *fhandle
>>>>  static int nfs4_proc_pathconf(struct nfs_server *server, struct nfs_fh *fhandle,
>>>>  		struct nfs_pathconf *pathconf)
>>>>  {
>>>> -	struct nfs4_exception exception = { };
>>>> +	DECLARE_NFS4_EXCEPTION(exception);
>>>>  	int err;
>>>>  
>>>>  	do {
>>>> @@ -2599,7 +2603,7 @@ out_free:
>>>>  
>>>>  static ssize_t nfs4_get_acl_uncached(struct inode *inode, void *buf, size_t buflen)
>>>>  {
>>>> -	struct nfs4_exception exception = { };
>>>> +	DECLARE_NFS4_EXCEPTION(exception);
>>>>  	ssize_t ret;
>>>>  	do {
>>>>  		ret = __nfs4_get_acl_uncached(inode, buf, buflen);
>>>> @@ -2653,7 +2657,7 @@ static int __nfs4_proc_set_acl(struct inode *inode, const void *buf, size_t bufl
>>>>  
>>>>  static int nfs4_proc_set_acl(struct inode *inode, const void *buf, size_t buflen)
>>>>  {
>>>> -	struct nfs4_exception exception = { };
>>>> +	DECLARE_NFS4_EXCEPTION(exception);
>>>>  	int err;
>>>>  	do {
>>>>  		err = nfs4_handle_exception(NFS_SERVER(inode),
>>>> @@ -2950,7 +2954,7 @@ static int _nfs4_proc_delegreturn(struct inode *inode, struct rpc_cred *cred, co
>>>>  int nfs4_proc_delegreturn(struct inode *inode, struct rpc_cred *cred, const nfs4_stateid *stateid)
>>>>  {
>>>>  	struct nfs_server *server = NFS_SERVER(inode);
>>>> -	struct nfs4_exception exception = { };
>>>> +	DECLARE_NFS4_EXCEPTION(exception);
>>>>  	int err;
>>>>  	do {
>>>>  		err = _nfs4_proc_delegreturn(inode, cred, stateid);
>>>> @@ -3025,7 +3029,7 @@ out:
>>>>  
>>>>  static int nfs4_proc_getlk(struct nfs4_state *state, int cmd, struct file_lock *request)
>>>>  {
>>>> -	struct nfs4_exception exception = { };
>>>> +	DECLARE_NFS4_EXCEPTION(exception);
>>>>  	int err;
>>>>  
>>>>  	do {
>>>> @@ -3354,7 +3358,7 @@ static int _nfs4_do_setlk(struct nfs4_state *state, int cmd, struct file_lock *f
>>>>  static int nfs4_lock_reclaim(struct nfs4_state *state, struct file_lock *request)
>>>>  {
>>>>  	struct nfs_server *server = NFS_SERVER(state->inode);
>>>> -	struct nfs4_exception exception = { };
>>>> +	DECLARE_NFS4_EXCEPTION(exception);
>>>>  	int err;
>>>>  
>>>>  	do {
>>>> @@ -3372,7 +3376,7 @@ static int nfs4_lock_reclaim(struct nfs4_state *state, struct file_lock *request
>>>>  static int nfs4_lock_expired(struct nfs4_state *state, struct file_lock *request)
>>>>  {
>>>>  	struct nfs_server *server = NFS_SERVER(state->inode);
>>>> -	struct nfs4_exception exception = { };
>>>> +	DECLARE_NFS4_EXCEPTION(exception);
>>>>  	int err;
>>>>  
>>>>  	err = nfs4_set_lock_state(state, request);
>>>> @@ -3433,7 +3437,7 @@ out:
>>>>  
>>>>  static int nfs4_proc_setlk(struct nfs4_state *state, int cmd, struct file_lock *request)
>>>>  {
>>>> -	struct nfs4_exception exception = { };
>>>> +	DECLARE_NFS4_EXCEPTION(exception);
>>>>  	int err;
>>>>  
>>>>  	do {
>>>> @@ -3483,7 +3487,7 @@ nfs4_proc_lock(struct file *filp, int cmd, struct file_lock *request)
>>>>  int nfs4_lock_delegation_recall(struct nfs4_state *state, struct file_lock *fl)
>>>>  {
>>>>  	struct nfs_server *server = NFS_SERVER(state->inode);
>>>> -	struct nfs4_exception exception = { };
>>>> +	DECLARE_NFS4_EXCEPTION(exception);
>>>>  	int err;
>>>>  
>>>>  	err = nfs4_set_lock_state(state, fl);
>>>>
> 


[-- Attachment #2: chuck.lever.vcf --]
[-- Type: text/x-vcard, Size: 291 bytes --]

begin:vcard
fn:Chuck Lever
n:Lever;Chuck
org:Oracle Corporation;Corporate Architecture: Linux Projects Group
adr:;;1015 Granger Avenue;Ann Arbor;MI;48104;USA
title:Principal Member of Staff
tel;work:+1 248 614 5091
x-mozilla-html:FALSE
url:http://oss.oracle.com/~cel/
version:2.1
end:vcard


[-- Attachment #3: Type: text/plain, Size: 286 bytes --]

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/

[-- Attachment #4: Type: text/plain, Size: 140 bytes --]

_______________________________________________
NFS maillist  -  NFS@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nfs

  parent reply	other threads:[~2007-05-31 15:16 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-05-25 21:41 [PATCH 02/10] NFS: Use C99 struct initializers in nfs4proc.c Chuck Lever
2007-05-26 18:01 ` Trond Myklebust
2007-05-29 14:10   ` Chuck Lever
2007-05-30 20:12     ` Trond Myklebust
2007-05-31  8:18       ` Frank van Maarseveen
2007-05-31 12:18         ` Trond Myklebust
2007-05-31 12:19           ` Frank van Maarseveen
2007-05-31 15:14       ` Chuck Lever [this message]
2007-05-31 16:18         ` Trond Myklebust
2007-05-31 17:11           ` Chuck Lever

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=465EE66F.8080909@oracle.com \
    --to=chuck.lever@oracle.com \
    --cc=nfs@lists.sourceforge.net \
    --cc=trond.myklebust@fys.uio.no \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox