Re: [PATCH] cifs: cleanup initialization of bytes_written

Suresh Jayaraman <[email protected]>
Newsgroups gmane.linux.file-systems.cifs
Message-ID <[email protected]>
On 03/30/2010 05:12 PM, Jeff Layton wrote:
> On Tue, 30 Mar 2010 14:53:25 +0530
> Suresh Jayaraman <[email protected]> wrote:
> 
>> Initialize bytes_written at the callers uniformly so that CIFSSMBWrite2() and
>> CIFSSMBWrite() do not have to worry about it.
>>
>> Signed-off-by: Suresh Jayaraman <[email protected]>
>> ---
>>  fs/cifs/cifssmb.c |    3 ---
>>  fs/cifs/dir.c     |    2 +-
>>  fs/cifs/file.c    |    2 +-
>>  fs/cifs/inode.c   |    4 ++--
>>  4 files changed, 4 insertions(+), 7 deletions(-)
>>
>> diff --git a/fs/cifs/cifssmb.c b/fs/cifs/cifssmb.c
>> index 7cc7f83..bbf2afa 100644
>> --- a/fs/cifs/cifssmb.c
>> +++ b/fs/cifs/cifssmb.c
>> @@ -1512,7 +1512,6 @@ CIFSSMBWrite(const int xid, struct cifsTconInfo *tcon,
>>  	cifs_stats_inc(&tcon->num_writes);
>>  	if (rc) {
>>  		cFYI(1, ("Send error in write = %d", rc));
>> -		*nbytes = 0;
>>  	} else {
>>  		*nbytes = le16_to_cpu(pSMBr->CountHigh);
>>  		*nbytes = (*nbytes) << 16;
>> @@ -1539,8 +1538,6 @@ CIFSSMBWrite2(const int xid, struct cifsTconInfo *tcon,
>>  	int smb_hdr_len;
>>  	int resp_buf_type = 0;
>>  
>> -	*nbytes = 0;
>> -
>>  	cFYI(1, ("write2 at %lld %d bytes", (long long)offset, count));
>>  
>>  	if (tcon->ses->capabilities & CAP_LARGE_FILES) {
>> diff --git a/fs/cifs/dir.c b/fs/cifs/dir.c
>> index e9f7ecc..6d4e7e9 100644
>> --- a/fs/cifs/dir.c
>> +++ b/fs/cifs/dir.c
>> @@ -560,7 +560,7 @@ int cifs_mknod(struct inode *inode, struct dentry *direntry, int mode,
>>  				/* BB Do not bother to decode buf since no
>>  				   local inode yet to put timestamps in,
>>  				   but we can reuse it safely */
>> -				unsigned int bytes_written;
>> +				unsigned int bytes_written = 0;
>>  				struct win_dev *pdev;
>>  				pdev = (struct win_dev *)buf;
>>  				if (S_ISCHR(mode)) {
>> diff --git a/fs/cifs/file.c b/fs/cifs/file.c
>> index ca2ba7a..6af4fbd 100644
>> --- a/fs/cifs/file.c
>> +++ b/fs/cifs/file.c
>> @@ -1341,7 +1341,7 @@ static int cifs_writepages(struct address_space *mapping,
>>  {
>>  	struct backing_dev_info *bdi = mapping->backing_dev_info;
>>  	unsigned int bytes_to_write;
>> -	unsigned int bytes_written;
>> +	unsigned int bytes_written = 0;
>>  	struct cifs_sb_info *cifs_sb;
>>  	int done = 0;
>>  	pgoff_t end;
>> diff --git a/fs/cifs/inode.c b/fs/cifs/inode.c
>> index 723daac..af0b0d4 100644
>> --- a/fs/cifs/inode.c
>> +++ b/fs/cifs/inode.c
>> @@ -1674,7 +1674,7 @@ cifs_set_file_size(struct inode *inode, struct iattr *attrs,
>>  		cifsFileInfo_put(open_file);
>>  		cFYI(1, ("SetFSize for attrs rc = %d", rc));
>>  		if ((rc == -EINVAL) || (rc == -EOPNOTSUPP)) {
>> -			unsigned int bytes_written;
>> +			unsigned int bytes_written = 0;
>>  			rc = CIFSSMBWrite(xid, pTcon, nfid, 0, attrs->ia_size,
>>  					  &bytes_written, NULL, NULL, 1);
>>  			cFYI(1, ("Wrt seteof rc %d", rc));
>> @@ -1703,7 +1703,7 @@ cifs_set_file_size(struct inode *inode, struct iattr *attrs,
>>  				cifs_sb->mnt_cifs_flags &
>>  					CIFS_MOUNT_MAP_SPECIAL_CHR);
>>  			if (rc == 0) {
>> -				unsigned int bytes_written;
>> +				unsigned int bytes_written = 0;
>>  				rc = CIFSSMBWrite(xid, pTcon, netfid, 0,
>>  						  attrs->ia_size,
>>  						  &bytes_written, NULL,
> 
> Would it be better to just zero out *nbytes at the beginning of

Might be. I don't have any strong preference to either approach but I
think there should be uniformity and we should remove redundant
initializations.

> CIFSSMBWrite like Write2 does? Whatever value is in that field should
> always be overwritten before those functions return, so I'm not sure I

But my patch fixed the callers because none of these callers assign any
value to bytes_written. The just pass address of bytes_written to
CIFSSMBWRITE calls.

> see the value in pushing the initialization of it out to the callers.
> 

I'll resend this patch if that seems a better approach.

Thanks,

-- 
Suresh Jayaraman
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.