Re: [PATCH] xfs_repair: don't use do_warn for normal log message

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 14 Sep 2017 07:48:21 +1000, Dave Chinner <david@xxxxxxxxxxxxx> wrote:
> On Wed, Sep 13, 2017 at 07:49:43PM +0900, Masatake YAMATO wrote:
>> In some case, exit statuses of xfs_repair -n are different even for the
>> same file system when -v is specified or not. This patch fixes this
>> behavior.
>> 
>> If -v is specified, do_warn() is used in zero_log() for printing
>> a normal message. That makes the exit status to 1 though there
>> is no dirtiness in the file system.
>> 
>> The original zero_log():
>> 
>> 	error = xlog_find_tail(log, &head_blk, &tail_blk);
>> 	if (error) {...
>> 	} else {
>> 		if (verbose) {
>> 			do_warn(
>> 	_("zero_log: head block %" PRId64 " tail block %" PRId64 "\n"),
>> 				head_blk, tail_blkn);
>> 		}
>> 
>> do_warn() is used for the message, "zero_log:...".  do_log
>> should be used instead because this log message is for just reporting the
>> values of head_blk, and tail_blk. do_log is for "just reporting".
>> 
>> Using do_warn unintentionally has an impact.
>> It causes the exit status of the command.
>> do_warn sets fs_is_dirty global variable.
>> That refers in main function to decide the exit status.
>> 
>>     void
>>     do_warn(char const *msg, ...)
>>     {
>> 	    va_list args;
>> 
>> 	    fs_is_dirty = 1;
>> 
>>     int
>>     main(int argc, char **argv)
>>     {
>>     ...
>> 
>> 		    if (fs_is_dirty)
>> 			    return(1);
>> ---
>>  repair/phase2.c | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>> 
>> diff --git a/repair/phase2.c b/repair/phase2.c
>> index c21778b8..f7ea655f 100644
>> --- a/repair/phase2.c
>> +++ b/repair/phase2.c
>> @@ -75,7 +75,7 @@ zero_log(
>>  	 */
>>  	error = xlog_find_tail(log, &head_blk, &tail_blk);
>>  	if (error) {
>> -		do_warn(
>> +		do_log(
>>  		_("zero_log: cannot find log head/tail (xlog_find_tail=%d)\n"),
>>  			error);
>>  		if (!no_modify && !zap_log)
> 
> The code change doesn't match the code in commit description. This
> warning looks like a warning that needs to be issued and change the
> exist status - it indicates that there is a problem with the log.
> 
> Indeed, the commit description does not even need the code in it;
> reviewers are familiar with the difference between do_warn/do_log.
> What the commit message needs to do is explain when the problem
> occurs, what it's impact is and why it needs fixing. The code fix
> should then be obvious and self explanitory....

Thank you for comments.

How about [PATCH v2] I submited just after submitting
this [PATCH]?  I think the change in [PATCH v2] makes sense.
If the commit log in [PATCH v2] is not clear enough, I will submit
v3.

Regards,
Masatake YAMATO

> Cheers,
> 
> Dave.
> -- 
> Dave Chinner
> david@xxxxxxxxxxxxx
--
To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [XFS Filesystem Development (older mail)]     [Linux Filesystem Development]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux RAID]     [Linux SCSI]


  Powered by Linux