[sheepdog] [PATCH 1/4] dog/cluster: bug fix when cluster don't have snapshots

Ruoyu liangry at ucweb.com
Thu Sep 11 05:03:44 CEST 2014


On 2014年09月11日 10:23, Hitoshi Mitake wrote:
> At Wed, 10 Sep 2014 15:51:55 +0800,
> Ruoyu wrote:
>> This patch fix the problem as below.
>>
>> this is the first cluster snapshot I try to save, but I forgot to snapshot
>> the vdi:
>>
>> dog cluster snapshot save first cluster_snapshots
>>
>> Object not found. It may be caused by:
>> 1. The cluster is empty.
>> 2. All VDIs of the cluster don't have snapshots.
>>
>> and that's right!
>>
>> Then I take vdi snapshot and save cluster snapshot, then remove vdi snapshots.
>> Now I try to make the same mistake
>>
>> dog cluster snapshot save second cluster_snapshots
>> 100.0 % [=====] 4 / 4
>>
>> There are no vdi snapshots and dog doesn't complain about it!
>> It did it only the first time.
>>
>> Reported-by: Valerio Pachera <sirio81 at gmail.com>
>> Signed-off-by: Ruoyu <liangry at ucweb.com>
>> ---
>>   dog/cluster.c   | 8 ++++++--
>>   dog/farm/farm.h | 1 +
>>   2 files changed, 7 insertions(+), 2 deletions(-)
> Applied this series, thanks. BTW, could you provide a cover letter for
> seriesed patches?
OK.
May I ask a question? How to add a cover letter for seriesed patches?
>
> Thanks,
> Hitoshi
>
>> diff --git a/dog/cluster.c b/dog/cluster.c
>> index 7c4856d..e42bc54 100644
>> --- a/dog/cluster.c
>> +++ b/dog/cluster.c
>> @@ -365,6 +365,9 @@ static void fill_object_tree(uint32_t vid, const char *name, const char *tag,
>>   			return;
>>   	}
>>   
>> +	if (i->name[0] != '\0')
>> +		opt->nr_snapshot++;
>> +
>>   	/* fill vdi object id */
>>   	object_tree_insert(vdi_oid, i->nr_copies, i->copy_policy);
>>   
>> @@ -417,14 +420,15 @@ static int save_snapshot(int argc, char **argv)
>>   		goto out;
>>   	}
>>   
>> +	opt.nr_snapshot = 0;
>>   	opt.count = argc - optind;
>>   	opt.name = argv + optind;
>>   	if (parse_vdi(fill_object_tree, SD_INODE_SIZE,
>>   			&opt, false) != SD_RES_SUCCESS)
>>   		goto out;
>>   
>> -	if (object_tree_size() == 0) {
>> -		sd_err("Object not found. It may be caused by:");
>> +	if (opt.nr_snapshot == 0) {
>> +		sd_err("Cannot execute. It may be caused by:");
>>   		if (opt.count > 0) {
>>   			sd_err("1. The specified VDIs are not found.");
>>   			sd_err("2. The specified VDIs don't have snapshots.");
>> diff --git a/dog/farm/farm.h b/dog/farm/farm.h
>> index 745aa15..f4ec47f 100644
>> --- a/dog/farm/farm.h
>> +++ b/dog/farm/farm.h
>> @@ -50,6 +50,7 @@ struct snap_log {
>>   };
>>   
>>   struct vdi_option {
>> +	int nr_snapshot;
>>   	int count;
>>   	char **name;
>>   	void (*func)(struct sd_inode *inode);
>> -- 
>> 1.8.3.2
>>
>>
>> -- 
>> sheepdog mailing list
>> sheepdog at lists.wpkg.org
>> http://lists.wpkg.org/mailman/listinfo/sheepdog





More information about the sheepdog mailing list