All of lore.kernel.org
 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.