A new webrev has been posted at:
http://cr.opensolaris.org/~kemitche/3837a/

Evan Layton wrote:
> Keith Mitchell wrote:
>>
>>>
>>> line  591 zret should be initialized to 0 (or BE_SUCESS since it's 
>>> used for both zfs_iter function return codes and be_clone_fs_callback).
>> Done.
>>> It might be best as part of this to clean up these return variables 
>>> so we make the use of things like err, zret and ret consistent. This 
>>> needs to be looked at throughout...
>>> Maybe something like:
>>> err for capturing errno's
>>> zret for capturing zfs related errors
>>> ret for returning BE errors and errors that have been translated 
>>> into BE errors.
>> Ok. I'll go through again and clean up these instances.
>
> It's probably not worth having you look through all of these right now 
> but would be helpful to have you look at the areas that you've touched 
> only. As for the rest of these could you file a bug to state that we 
> should be more consistent with these error variables and attach that 
> to 9941 as well?
Agreed. 10481 filed.
http://defect.opensolaris.org/bz/show_bug.cgi?id=10481
>
>>>
>>> 1796 ret is defined here and again at line 1886. The second one 
>>> isn't needed and should be removed.
>> Fixed.
>>>
>>> 2148 - 2150 returns err but doesn't set it so we could be sending an 
>>> error from somewhere else or just what was initialized. This needs 
>>> an actual error message.
>> err is set at line 2139. However, The inner 'if' statement is kind of 
>> backwards. I'll change it to:
>>
>> 2139         if ((err = zfs_iter_filesystems(zhp, 
>> be_clone_fs_callback, bt)) != 0) {
>> 2140                 /*
>> 2141                  * Error occurred while processing a child dataset.
>> 2142                  * Destroy this dataset and return error.
>> 2143                  */
>> 2144                 zfs_handle_t    *d_zhp = NULL;
>> 2145 2146                 ZFS_CLOSE(zhp);
>> 2147 2148                 if ((d_zhp = zfs_open(g_zfs, clone_ds, 
>> ZFS_TYPE_FILESYSTEM))
>> 2149                     != NULL) {
>>                             (void) zfs_destroy(d_zhp);
>>                             ZFS_CLOSE(d_zhp);
>> 2150                         2151                 }
>> 2155                 return (err);
>> 2156         }
>>
>> This is logically equivalent to the previous but doesn't have the 
>> same 'backwardness' to it.
>
> I think this is fine for now. What I was originally worried about was 
> the fact that if the zfs_destroy fails we would not catch that error 
> and we could silently leave the clone dataset hanging around. However 
> I think fixing that so we provide some notice that the clean-up after 
> the original failure was also not successful is really more something 
> that should be addressed in bug 9941 and the BE management 
> observability project.
>
> All this being said, I'm fine with the changes now.
Excellent. As mentioned, a new webrev was posted. I had an issue setting 
up the DIY test so I'm still awaiting those results.

- Keith
>
> -evan
>
>>>
>>> be_mount.c:
>>> ===========
>>> lines 238 and 395 ret should also be set to BE_SUCCESS
>> Fixed.
>>>
>>> 1441 set err = BE_SUCCESS?
>> Yes, done.
>>>
>>>
>>> Other than these I don't see anything that hasn't already been 
>>> mentioned.
>>>
>>> -evan 
>> New webrev will be posted after I've:
>> * changed relevant "== 0" statements to "== BE_SUCCESS"
>> * reviewed instances of err, errno, ret and zret for consistent usage
>> * run the DIY libbe test against the changes
>>
>> - Keith
>

Reply via email to